Преглед изворни кода

【功能优化】支付:查询支付订单时,增加 sync 主动轮询,解决支付宝、微信存在延迟的问题

Xiao_123 пре 9 месеци
родитељ
комит
d649d5d211
2 измењених фајлова са 26 додато и 12 уклоњено
  1. 22 8
      pages/pay/index.vue
  2. 4 4
      sheep/api/pay/order.js

+ 22 - 8
pages/pay/index.vue

@@ -82,7 +82,7 @@
   import { fen2yuan, useDurationTime } from '@/sheep/hooks/useGoods';
   import PayOrderApi from '@/sheep/api/pay/order';
   import PayChannelApi from '@/sheep/api/pay/channel';
-  import { getPayMethods } from '@/sheep/platform/pay';
+  import { getPayMethods, goPayResult  } from '@/sheep/platform/pay';
 
   const userWallet = computed(() => sheep.$store('user').userWallet);
 
@@ -136,12 +136,22 @@
 
   // 状态转换:payOrder.status => payStatus
   function checkPayStatus() {
-    if (state.orderInfo.status === 10
-      || state.orderInfo.status === 20 ) { // 支付成功
+    if (state.orderInfo.status === 10 || state.orderInfo.status === 20) {
+      // 支付成功
       state.payStatus = 2;
+      // 跳转回支付成功页
+      uni.showModal({
+        title: '提示',
+        content: '订单已支付',
+        showCancel: false,
+        success: function () {
+          goPayResult(state.orderInfo.id, state.orderType);
+        },
+      });
       return;
     }
-    if (state.orderInfo.status === 30) { // 支付关闭
+    if (state.orderInfo.status === 30) {
+      // 支付关闭
       state.payStatus = -1;
       return;
     }
@@ -156,7 +166,7 @@
   // 设置支付订单信息
   async function setOrder(id) {
     // 获得支付订单信息
-    const { data, code } = await PayOrderApi.getOrder(id);
+    const { data, code } = await PayOrderApi.getOrder(id, true);
     if (code !== 0 || !data) {
       state.payStatus = -2;
       return;
@@ -166,6 +176,8 @@
     await setPayMethods();
     // 设置支付状态
     checkPayStatus();
+    // 获得支付方式
+    await setPayMethods();
   }
 
   // 获得支付方式
@@ -185,9 +197,11 @@
   }
 
   onLoad((options) => {
-    if (sheep.$platform.name === 'WechatOfficialAccount'
-      && sheep.$platform.os === 'ios'
-      && !sheep.$platform.landingPage.includes('pages/pay/index')) {
+    if (
+      sheep.$platform.name === 'WechatOfficialAccount' &&
+      sheep.$platform.os === 'ios' &&
+      !sheep.$platform.landingPage.includes('pages/pay/index')
+    ) {
       location.reload();
       return;
     }

+ 4 - 4
sheep/api/pay/order.js

@@ -2,11 +2,11 @@ import request from '@/sheep/request';
 
 const PayOrderApi = {
   // 获得支付订单
-  getOrder: (id) => {
+  getOrder: (id, sync) => {
     return request({
       url: '/pay/order/get',
       method: 'GET',
-      params: { id }
+      params: { id, sync },
     });
   },
   // 提交支付订单
@@ -14,9 +14,9 @@ const PayOrderApi = {
     return request({
       url: '/pay/order/submit',
       method: 'POST',
-      data
+      data,
     });
-  }
+  },
 };
 
 export default PayOrderApi;