1
This commit is contained in:
@@ -23,7 +23,6 @@ import {
|
|||||||
isPhoneNumber,
|
isPhoneNumber,
|
||||||
genGameLength,
|
genGameLength,
|
||||||
} from "@/utils";
|
} from "@/utils";
|
||||||
import { getStorage, setStorage } from "@/store/storage";
|
|
||||||
import { useGlobalStore } from "@/store/global";
|
import { useGlobalStore } from "@/store/global";
|
||||||
import { useOrder } from "@/store/orderStore";
|
import { useOrder } from "@/store/orderStore";
|
||||||
import detailService, { GameData } from "@/services/detailService";
|
import detailService, { GameData } from "@/services/detailService";
|
||||||
@@ -692,35 +691,26 @@ const OrderCheck = () => {
|
|||||||
}
|
}
|
||||||
setPaying(true);
|
setPaying(true);
|
||||||
|
|
||||||
let payment_params = {};
|
let payment_params: any = {};
|
||||||
try {
|
try {
|
||||||
payment_params = await getPaymentParams();
|
payment_params = await getPaymentParams();
|
||||||
if (!id) {
|
|
||||||
setStorage("backFlag", "1");
|
|
||||||
Taro.redirectTo({
|
|
||||||
url: `/order_pages/orderDetail/index?id=${payment_params.order_id}`,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
await payOrder(payment_params);
|
await payOrder(payment_params);
|
||||||
Taro.showToast({
|
Taro.showToast({
|
||||||
title: "支付成功",
|
title: "支付成功",
|
||||||
icon: "success",
|
icon: "success",
|
||||||
});
|
});
|
||||||
const backFlag = getStorage("backFlag");
|
// 支付成功后再跳转,避免部分机型(如华为)在页面切换中拉起支付导致卡死
|
||||||
if (backFlag === "1") {
|
if (!id && payment_params?.order_id) {
|
||||||
setStorage("backFlag", "0");
|
Taro.redirectTo({
|
||||||
Taro.navigateBack();
|
url: `/order_pages/orderDetail/index?id=${payment_params.order_id}`,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
// Taro.navigateBack({
|
|
||||||
// delta: 1,
|
|
||||||
// });
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
Taro.showToast({
|
Taro.showToast({
|
||||||
title: error.message,
|
title: error.message,
|
||||||
icon: "none",
|
icon: "none",
|
||||||
});
|
});
|
||||||
} finally {
|
} finally {
|
||||||
setStorage("backFlag", "0");
|
|
||||||
init();
|
init();
|
||||||
setPaying(false);
|
setPaying(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,14 +7,40 @@ export function delay(ms: number) {
|
|||||||
export async function payOrder(params) {
|
export async function payOrder(params) {
|
||||||
const { timeStamp, nonceStr, package: _package, signType, paySign } = params;
|
const { timeStamp, nonceStr, package: _package, signType, paySign } = params;
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
let settled = false;
|
||||||
|
const timeout = setTimeout(() => {
|
||||||
|
if (settled) return;
|
||||||
|
settled = true;
|
||||||
|
reject(new Error("支付响应超时,请在订单页确认支付结果"));
|
||||||
|
}, 20000);
|
||||||
|
|
||||||
|
const finish = (cb: () => void) => {
|
||||||
|
if (settled) return;
|
||||||
|
settled = true;
|
||||||
|
clearTimeout(timeout);
|
||||||
|
cb();
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
Taro.requestPayment({
|
Taro.requestPayment({
|
||||||
timeStamp,
|
timeStamp,
|
||||||
nonceStr,
|
nonceStr,
|
||||||
package: _package,
|
package: _package,
|
||||||
signType,
|
signType,
|
||||||
paySign,
|
paySign,
|
||||||
success: resolve,
|
success: (res) => finish(() => resolve(res)),
|
||||||
fail: reject.bind(null, new Error("支付失败")),
|
fail: (err: any) =>
|
||||||
|
finish(() => {
|
||||||
|
const errMsg = String(err?.errMsg || "");
|
||||||
|
if (errMsg.includes("cancel")) {
|
||||||
|
reject(new Error("已取消支付"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
reject(new Error("支付失败,请重试"));
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
|
} catch {
|
||||||
|
finish(() => reject(new Error("支付拉起失败,请重试")));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user