1
This commit is contained in:
@@ -23,7 +23,6 @@ import {
|
||||
isPhoneNumber,
|
||||
genGameLength,
|
||||
} from "@/utils";
|
||||
import { getStorage, setStorage } from "@/store/storage";
|
||||
import { useGlobalStore } from "@/store/global";
|
||||
import { useOrder } from "@/store/orderStore";
|
||||
import detailService, { GameData } from "@/services/detailService";
|
||||
@@ -692,35 +691,26 @@ const OrderCheck = () => {
|
||||
}
|
||||
setPaying(true);
|
||||
|
||||
let payment_params = {};
|
||||
let payment_params: any = {};
|
||||
try {
|
||||
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);
|
||||
Taro.showToast({
|
||||
title: "支付成功",
|
||||
icon: "success",
|
||||
});
|
||||
const backFlag = getStorage("backFlag");
|
||||
if (backFlag === "1") {
|
||||
setStorage("backFlag", "0");
|
||||
Taro.navigateBack();
|
||||
// 支付成功后再跳转,避免部分机型(如华为)在页面切换中拉起支付导致卡死
|
||||
if (!id && payment_params?.order_id) {
|
||||
Taro.redirectTo({
|
||||
url: `/order_pages/orderDetail/index?id=${payment_params.order_id}`,
|
||||
});
|
||||
}
|
||||
// Taro.navigateBack({
|
||||
// delta: 1,
|
||||
// });
|
||||
} catch (error) {
|
||||
Taro.showToast({
|
||||
title: error.message,
|
||||
icon: "none",
|
||||
});
|
||||
} finally {
|
||||
setStorage("backFlag", "0");
|
||||
init();
|
||||
setPaying(false);
|
||||
}
|
||||
|
||||
@@ -7,14 +7,40 @@ export function delay(ms: number) {
|
||||
export async function payOrder(params) {
|
||||
const { timeStamp, nonceStr, package: _package, signType, paySign } = params;
|
||||
return new Promise((resolve, reject) => {
|
||||
Taro.requestPayment({
|
||||
timeStamp,
|
||||
nonceStr,
|
||||
package: _package,
|
||||
signType,
|
||||
paySign,
|
||||
success: resolve,
|
||||
fail: reject.bind(null, new Error("支付失败")),
|
||||
});
|
||||
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({
|
||||
timeStamp,
|
||||
nonceStr,
|
||||
package: _package,
|
||||
signType,
|
||||
paySign,
|
||||
success: (res) => finish(() => resolve(res)),
|
||||
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