Pārlūkot izejas kodu

fix: 优化wx.openBusinessView失败回调的错误提示

区分三种失败场景给出不同提示:支付分不足(550门槛)、
未开通支付分(引导去开通)、其他错误(兜底提示)。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
skyline 2 nedēļas atpakaļ
vecāks
revīzija
c7b0f6c430

+ 32 - 2
haha-mp/src/pages/index/index.vue

@@ -184,11 +184,41 @@ const preCreateAndOpenBusinessView = (deviceId: string) => {
           busy.value = false;
           const errMsg = err?.errMsg || JSON.stringify(err);
           logger.error('[支付分] openBusinessView fail:', errMsg);
-          if (!errMsg.includes('cancel')) {
+
+          // 用户主动取消,静默处理
+          if (errMsg.includes('cancel')) {
+            return;
+          }
+
+          // 根据错误原因给出不同提示
+          const lowScore = errMsg.includes('分') || errMsg.includes('credit') || errMsg.includes('score');
+          const notEnabled = errMsg.includes('未开通') || errMsg.includes('未授权') || errMsg.includes('not signed') || errMsg.includes('not enabled');
+
+          if (lowScore) {
+            uni.showModal({
+              title: '支付分不足',
+              content: '您的微信支付分未达到使用门槛(550分),暂无法使用本服务。\n\n请保持良好的信用记录,后续再试。',
+              showCancel: false,
+              confirmText: '我知道了',
+            });
+          } else if (notEnabled) {
+            uni.showModal({
+              title: '未开通微信支付分',
+              content: '您尚未开通微信支付分,请先开通后再使用本服务。',
+              showCancel: false,
+              confirmText: '去开通',
+              success: (res: any) => {
+                if (res.confirm) {
+                  uni.navigateTo({ url: '/pages/payscore/enable' });
+                }
+              },
+            });
+          } else {
             uni.showModal({
               title: '调起支付分失败',
-              content: errMsg,
+              content: '支付分服务暂不可用,请稍后重试。',
               showCancel: false,
+              confirmText: '我知道了',
             });
           }
         },

+ 32 - 2
haha-mp/src/pages/products/products.vue

@@ -260,11 +260,41 @@ const handleOpenDoor = () => {
           opening.value = false;
           const errMsg = err?.errMsg || JSON.stringify(err);
           logger.error('[商品页] openBusinessView fail:', errMsg);
-          if (!errMsg.includes('cancel')) {
+
+          // 用户主动取消,静默处理
+          if (errMsg.includes('cancel')) {
+            return;
+          }
+
+          // 根据错误原因给出不同提示
+          const lowScore = errMsg.includes('分') || errMsg.includes('credit') || errMsg.includes('score');
+          const notEnabled = errMsg.includes('未开通') || errMsg.includes('未授权') || errMsg.includes('not signed') || errMsg.includes('not enabled');
+
+          if (lowScore) {
+            uni.showModal({
+              title: '支付分不足',
+              content: '您的微信支付分未达到使用门槛(550分),暂无法使用本服务。\n\n请保持良好的信用记录,后续再试。',
+              showCancel: false,
+              confirmText: '我知道了',
+            });
+          } else if (notEnabled) {
+            uni.showModal({
+              title: '未开通微信支付分',
+              content: '您尚未开通微信支付分,请先开通后再使用本服务。',
+              showCancel: false,
+              confirmText: '去开通',
+              success: (res: any) => {
+                if (res.confirm) {
+                  uni.navigateTo({ url: '/pages/payscore/enable' });
+                }
+              },
+            });
+          } else {
             uni.showModal({
               title: '调起支付分失败',
-              content: errMsg,
+              content: '支付分服务暂不可用,请稍后重试。',
               showCancel: false,
+              confirmText: '我知道了',
             });
           }
         },