Selaa lähdekoodia

取消支付的错误捕获

ith5 3 viikkoa sitten
vanhempi
commit
95c0f1ab11
7 muutettua tiedostoa jossa 155 lisäystä ja 111 poistoa
  1. 1 1
      .env
  2. 6 2
      core/payment/index.ts
  3. 44 0
      core/payment/payment-error.ts
  4. 0 0
      dist/wxxyx-sdk.1.0.0.js
  5. 3 7
      game.js
  6. 1 1
      project.private.config.json
  7. 100 100
      utils/httpClient.ts

+ 1 - 1
.env

@@ -1,5 +1,5 @@
 # 版本号
-SDK_VERSION='1.0.0'
+SDK_VERSION='1.0.1'
 SDK_AGENT_ID_IOS='1000'
 SDK_AGENT_ID_ANDROID='1000'
 SDK_SITE_ID_IOS='1000'

+ 6 - 2
core/payment/index.ts

@@ -1,4 +1,5 @@
 import { createOrderApi, orderNotifyApi, paymentApi } from "../../api/order.api";
+import { getMidasPayErrorMsg } from "./payment-error";
 import { getDeviceInfo } from "../../utils/wechat";
 import DnSdk from "../../lib/DnSdk";
 import { setStorage } from "../../store";
@@ -176,7 +177,7 @@ const midasPay = async ({ curOrderInfo, midasPayParams }) => {
             currencyType: "CNY",
             platform: platform,
             buyQuantity: midasPayParams.buyQuantity,
-            amt: curOrderInfo.money,
+            // amt: curOrderInfo.money,
             zoneId: midasPayParams.zoneId,
             outTradeNo: curOrderInfo.order_id,
             success: (res) => {
@@ -193,7 +194,10 @@ const midasPay = async ({ curOrderInfo, midasPayParams }) => {
                 resolve(res);
             },
             fail: (error) => {
-                reject(error); // ✅ 正确传递,外层 try/catch 能捕获
+                const msg = getMidasPayErrorMsg(error.errCode);
+                // wx.showToast({ title: msg, icon: "none" });
+                console.log(msg)
+                // reject(error);
             },
         });
     });

+ 44 - 0
core/payment/payment-error.ts

@@ -0,0 +1,44 @@
+/**
+ * wx.requestMidasPayment 错误码 => 用户提示文案
+ * 官方文档:https://developers.weixin.qq.com/minigame/dev/api/midas-payment/wx.requestMidasPayment.html
+ */
+export const MIDAS_PAY_ERROR_MSG: Record<number, string> = {
+    [-1]: "系统错误,请稍后重试",
+    [-2]: "支付已取消",
+    [-6]: "下单参数错误",
+    [-15001]: "支付参数缺失",
+    [-15002]: "支付参数不合法",
+    [-15003]: "订单重复,请勿重复支付",
+    [-15004]: "支付后台错误,请稍后重试",
+    [-15005]: "应用支付权限被封禁",
+    [-15006]: "不支持该货币类型",
+    [-15007]: "订单已支付",
+    [-15009]: "本次支付已超过限额",
+    [-15010]: "正式版不允许在沙箱环境支付",
+    [-15011]: "请求数据类型错误",
+    [-15012]: "签名错误",
+    [-15013]: "代币未发布",
+    [-15014]: "paysig 错误",
+    [-15015]: "登录已过期,请重新登录",
+    [-15016]: "道具价格错误",
+    [-15017]: "订单已关闭",
+    [1]: "支付已取消",
+    [2]: "请勿重复发起支付",
+    [3]: "未安装 GooglePlay,无法支付",
+    [4]: "系统支付状态异常",
+    [5]: "操作系统错误",
+    [6]: "支付失败,请稍后重试",
+    [7]: "支付已取消",
+    [1000]: "参数错误",
+    [1001]: "分区未发布",
+    [1003]: "代币或分区配置错误",
+    [3017]: "道具 ID 非法",
+    [701001]: "iOS 不支持虚拟支付",
+};
+
+/**
+ * 根据 errCode 获取提示文案
+ */
+export const getMidasPayErrorMsg = (errCode: number): string => {
+    return MIDAS_PAY_ERROR_MSG[errCode] ?? `支付失败(${errCode})`;
+};

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
dist/wxxyx-sdk.1.0.0.js


+ 3 - 7
game.js

@@ -7,7 +7,7 @@ import {
   payment,
   getCurrentUserInfo,
   safeTextCheck
-} from "./dist/wxxyx-sdk.1.0.0.js"
+} from "./dist/wxxyx-sdk.1.0.1.js"
 
 // 初始化skd
 (async () => {
@@ -88,12 +88,8 @@ const handleMakePayment = async () => {
     product_id: "-1",
     product_name: "1元的大礼包",
   };
-  try {
-    await payment(params)
-  } catch (error) {
-    console.log('payment cancel or fail', error)
-  }
-  
+  await payment(params)
+
 }
 
 // 获取当前用户信息

+ 1 - 1
project.private.config.json

@@ -2,7 +2,7 @@
   "libVersion": "3.15.0",
   "projectname": "wxxyx-sdk-new",
   "setting": {
-    "urlCheck": false,
+    "urlCheck": true,
     "coverView": true,
     "lazyloadPlaceholderEnable": false,
     "skylineRenderEnable": false,

+ 100 - 100
utils/httpClient.ts

@@ -16,143 +16,143 @@ interface ApiResponse {
 }
 
 
-const api = async <T>({url,data,method='GET'}:ApiOptions): Promise<T>=>{
+const api = async <T>({ url, data, method = 'GET' }: ApiOptions): Promise<T> => {
   try {
-    return await request<T>({url,data,method})
+    return await request<T>({ url, data, method })
   } catch (error) {
     // 如果是401错误,尝试重新登录
-      if (error.code === 401) {
-        console.log("登录过期,尝试重新登录...");
-        try {
-          // 调用重新登录方法
-          await relogin();
-          console.log("重新登录成功,重新发起请求...");
-
-          // 重新获取登录信息
-          const newLoginInfo = UserInfoModel.getInstance().get();
-
-          // 重新发起请求
-          return new Promise((resolve, reject) => {
-            wx.request({
-              url: url,
-              header: {
-                "Content-Type": "application/x-www-form-urlencoded",
-                Authorization: `Bearer ${newLoginInfo.token}`,
-              },
-              method: method,
-              data,
-              success: (res:any) => {
-                if (res.statusCode === 200) {
-                   const responseData = res.data as ApiResponse;
-                  if (responseData.code === 200) {
-                    // 解密响应数据
-                    responseData.data = decryptData(responseData.data);
-                    resolve(responseData.data);
-                  } else {
-                    reject({
-                      code: responseData.code,
-                      msg: responseData.message,
-                    });
-                  }
+    if (error.code === 401) {
+      console.log("登录过期,尝试重新登录...");
+      try {
+        // 调用重新登录方法
+        await relogin();
+        console.log("重新登录成功,重新发起请求...");
+
+        // 重新获取登录信息
+        const newLoginInfo = UserInfoModel.getInstance().get();
+
+        // 重新发起请求
+        return new Promise((resolve, reject) => {
+          wx.request({
+            url: url,
+            header: {
+              "Content-Type": "application/x-www-form-urlencoded",
+              Authorization: `Bearer ${newLoginInfo.token}`,
+            },
+            method: method,
+            data,
+            success: (res: any) => {
+              if (res.statusCode === 200) {
+                const responseData = res.data as ApiResponse;
+                if (responseData.code === 200) {
+                  // 解密响应数据
+                  responseData.data = decryptData(responseData.data);
+                  resolve(responseData.data);
                 } else {
                   reject({
-                    code: -1,
-                    msg: `网络请求失败 ${res.statusCode}`,
+                    code: responseData.code,
+                    msg: responseData.message,
                   });
                 }
-              },
-              fail: (error) => {
+              } else {
                 reject({
                   code: -1,
-                  msg: error.errMsg,
+                  msg: `网络请求失败 ${res.statusCode}`,
                 });
-              },
-            });
+              }
+            },
+            fail: (error) => {
+              reject({
+                code: -1,
+                msg: error.errMsg,
+              });
+            },
           });
-        } catch (loginError) {
-          console.error("重新登录失败:", loginError);
-          // 重新登录失败,返回原始错误
-          throw error;
-        }
-      } else {
-        // 其他错误直接抛出
+        });
+      } catch (loginError) {
+        console.error("重新登录失败:", loginError);
+        // 重新登录失败,返回原始错误
         throw error;
       }
+    } else {
+      // 其他错误直接抛出
+      throw error;
+    }
   }
- 
+
 }
 
 
-const request = async <T>({url,data,method='GET'}:ApiOptions): Promise<T>=>{
- return new Promise<T>((resolve,reject)=>{
+const request = async <T>({ url, data, method = 'GET' }: ApiOptions): Promise<T> => {
+  return new Promise<T>((resolve, reject) => {
     const token = UserInfoModel.getInstance().getToken();
     const commonParams = getCommonParams()
-    let  params = {
+    let params = {
       ...commonParams,
       ...data
     }
-     params = generateSign(params)
+    params = generateSign(params)
     // signParams.sign = sign
 
- 
+
     wx.request({
-    url,
-    data: params,
-    method,
-    header: {
-      "Content-Type": "application/x-www-form-urlencoded",
-      Authorization:`Bearer ${token}`
-    },
-    success: (res: any) => {
-      if(res.statusCode === 200) {
-         const responseData = res.data as ApiResponse;
-         if (responseData.code === 200) {
-          responseData.data = decryptData(responseData.data);
-           resolve(responseData.data);
-         }else if(responseData.code === 401){
-           reject({
-                  code: 401,
-                  msg: responseData.message,
-                });
-         }else {
-          wx.showModal({
-              title: "网络错误",
-              icon:"none",
-              showCancel:false,
-              content: `${url}:${responseData.message}`,
-            })
-                reject({
-                  code: responseData.code,
-                  msg: responseData.message,
-                });
-              }
-        return responseData;
-      } else {
-         
+      url,
+      data: params,
+      method,
+      header: {
+        "Content-Type": "application/x-www-form-urlencoded",
+        Authorization: `Bearer ${token}`
+      },
+      success: (res: any) => {
+        if (res.statusCode === 200) {
+          const responseData = res.data as ApiResponse;
+          if (responseData.code === 200) {
+            responseData.data = decryptData(responseData.data);
+            resolve(responseData.data);
+          } else if (responseData.code === 401) {
+            reject({
+              code: 401,
+              msg: responseData.message,
+            });
+          } else {
+            // wx.showModal({
+            //     title: "网络错误",
+            //     icon:"none",
+            //     showCancel:false,
+            //     content: `${url}:${responseData.message}`,
+            //   })
+            // reject({
+            //   code: responseData.code,
+            //   msg: responseData.message,
+            // });
+          }
+          return responseData;
+        } else {
+
           reject({
             code: -1,
             msg: `network error ${res.message}`,
           });
         }
-    },
-    fail: (error) => {
-      reject({
-        code: -1,
-        msg: `network error ${error.errMsg}`,
-      });
-    },
-  });
+      },
+      fail: (error) => {
+        reject({
+          code: -1,
+          msg: `network error ${error.errMsg}`,
+        });
+      },
+    });
   })
 }
 
 
 
-const get = <T>(url:string,data?:any): Promise<T>=>{
-  return api<T>({url:`${import.meta.env.SDK_API_BASE}${url}`,data,method:'GET'})
+const get = <T>(url: string, data?: any): Promise<T> => {
+  return api<T>({ url: `${import.meta.env.SDK_API_BASE}${url}`, data, method: 'GET' })
 }
 
-const post = <T>(url:string,data?:any): Promise<T>=>{
-  return api<T>({url:`${import.meta.env.SDK_API_BASE}${url}`,data,method:'POST'})
+const post = <T>(url: string, data?: any): Promise<T> => {
+  return api<T>({ url: `${import.meta.env.SDK_API_BASE}${url}`, data, method: 'POST' })
 }
 
 export default {

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä