From 36f9b3bec3f8df0da0d8d1e1cc63eb7f53765be3 Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Fri, 22 Mar 2024 14:22:45 +0800
Subject: [PATCH] 修复签名组件的上传的问题

---
 common/WxH5Pay.js |  196 ++++++++++---------------------------------------
 1 files changed, 40 insertions(+), 156 deletions(-)

diff --git a/common/WxH5Pay.js b/common/WxH5Pay.js
index 07022b9..86e2760 100644
--- a/common/WxH5Pay.js
+++ b/common/WxH5Pay.js
@@ -3,171 +3,55 @@
  * @author Tevin
  */
 
-import Taro from '@tarojs/taro';
-import { $ } from '@tarojs/extend';
 import { Tools } from '@components/common/Tools';
 
-const askModal = {
-    $modal: null,
-    show(type, callback) {
-        const that = this;
-        Taro.showModal({
-            title: type === 'ask' ? '微信支付未响应?' : '微信支付仍未响应?',
-            confirmColor: '#4a8aff',
-            confirmText: type === 'ask' ? '点击重试' : '重载页面',
-            success: res => {
-                // 点击重试,执行回调
-                if (res.confirm) {
-                    callback(true);
-                } else if (res.cancel) {
-                    callback(false);
-                }
-                this.$modal = null;
-            },
-        });
-        setTimeout(() => {
-            this.$modal = $('.taro__modal');
-        }, 10);
-    },
-    cancel() {
-        if (this.$modal) {
-            this.$modal.find('.taro-modal__foot > .taro-model__btn:eq(0)').trigger('click');
-            this.$modal = null;
-        }
-    },
-};
-
 export class WxH5Pay {
-
     constructor() {
-        this._data = {
-            alreadyCall: false,
-        };
     }
 
-    callWxPay(payParam, callback, type = 'webview') {
-        // 默认 webview 支付
-        if (type === 'webview') {
-            Tools.toast('正在微信支付...');
-            this._data.alreadyCall = false;
-            // 0.1 秒后发起正常支付
-            setTimeout(() => {
-                this._wvChooseWXPay(payParam, callback);
-            }, 100);
-            // 2.2 秒后,如果 alreadyCall 未变为 true,跳出询问弹窗
-            setTimeout(() => {
-                if (!this._data.alreadyCall) {
-                    askModal.show('ask', next => {
-                        if (next) {
-                            this.callWxPay(payParam, callback, 'webview2');
-                        } else {
-                            callback('cancel', '支付已取消!(微信未响应)');
-                            window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-noResponse', 0]);
-                        }
+    callWxPay(payParam, callback) {
+        Tools.toast('正在支付...');
+        setTimeout(() => {
+            if (typeof WeixinJSBridge === 'undefined') {
+                if (document.addEventListener) {
+                    document.addEventListener('WeixinJSBridgeReady', () => {
+                        this._jsApiCall(payParam, callback);
+                    }, false);
+                } else if (document.attachEvent) {
+                    document.attachEvent('WeixinJSBridgeReady', () => {
+                        this._jsApiCall(payParam, callback);
+                    });
+                    document.attachEvent('onWeixinJSBridgeReady', () => {
+                        this._jsApiCall(payParam, callback);
                     });
                 }
-            }, 2200);
-        }
-        // 第二次 webview 支付
-        else if (type === 'webview2') {
-            // 重新发起支付
-            Tools.toast('正在微信支付...');
-            this._data.alreadyCall = false;
-            // 0.1 秒后发起二次支付
-            setTimeout(() => {
-                this._wvBrandWCPay(payParam, callback);
-            }, 100);
-            // 2.2 秒后,如果 alreadyCall 未变为 true,跳出询问弹窗
-            setTimeout(() => {
-                if (!this._data.alreadyCall) {
-                    askModal.show('reload', next => {
-                        if (next) {
-                            callback('fail', '页面重载中...');
-                            window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-pageReload', 0]);
-                            setTimeout(() => {
-                                if (window.location.href.split('#')[0].indexOf('?') < 0) {
-                                    window.location.href =
-                                        window.location.href.split(/[#?]/)[0] + '?' + window.location.hash;
-                                }
-                                window.location.reload();
-                            }, 1000);
-                        } else {
-                            callback('cancel', '支付已取消!(微信未响应)');
-                            window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-noResponse', 0]);
-                        }
-                    });
-                }
-            }, 2200);
-        }
-    }
-
-    _wvChooseWXPay(payParam, callback) {
-        wx.ready(() => {
-            window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-chooseWXPay:start', 0]);
-            // 发起支付
-            const sign = JSON.parse(payParam);
-            wx.chooseWXPay({
-                ...sign,
-                timestamp: sign.timeStamp,
-                complete: complete => {
-                    // 关闭询问弹窗
-                    askModal.cancel();
-                    this._data.alreadyCall = true;
-                    // 支付结果
-                    if (complete.errMsg === 'chooseWXPay:ok') {
-                        callback && callback('ok', '支付成功!');
-                        window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-chooseWXPay:ok', 0]);
-                    } else if (complete.errMsg === 'chooseWXPay:cancel') {
-                        callback && callback('cancel', '支付已取消!');
-                        window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-chooseWXPay:cancel', 0]);
-                    } else {
-                        let msg = '支付失败!';
-                        // 例如 "chooseWXPay:没有此SDK或暂不支持此SDK模拟"
-                        msg += complete.errMsg ? '(' + complete.errMsg + ')' : '';
-                        callback && callback('fail', msg);
-                        window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-chooseWXPay:fail', 0]);
-                    }
-                },
-            });
-        });
-    }
-
-    _wvBrandWCPay(payParam, callback) {
-        const jsApiCall = () => {
-            window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-BrandWCPay:start', 0]);
-            // 发起支付
-            const sign = JSON.parse(payParam);
-            WeixinJSBridge.invoke('getBrandWCPayRequest', sign, res => {
-                // 关闭询问弹窗
-                askModal.cancel();
-                this._data.alreadyCall = true;
-                // 支付结果
-                if (res.err_msg === 'get_brand_wcpay_request:ok') {
-                    callback && callback('ok', '支付成功!');
-                    window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-brandWCPay:ok', 0]);
-                } else if (res.err_msg === 'get_brand_wcpay_request:cancel') {
-                    callback && callback('cancel', '支付已取消!');
-                    window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-brandWCPay:cancel', 0]);
-                } else {
-                    let msg = '支付失败!';
-                    const errMsg = res.err_msg || res.errMsg || '';
-                    // 例如 "chooseWXPay:没有此SDK或暂不支持此SDK模拟"
-                    msg += errMsg ? '(' + errMsg + ')' : '';
-                    callback && callback('fail', msg);
-                    window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-brandWCPay:fail', 0]);
-                }
-            });
-        };
-        if (typeof WeixinJSBridge == 'undefined') {
-            if (document.addEventListener) {
-                document.addEventListener('WeixinJSBridgeReady', jsApiCall, false);
-            } else if (document.attachEvent) {
-                document.attachEvent('WeixinJSBridgeReady', jsApiCall);
-                document.attachEvent('onWeixinJSBridgeReady', jsApiCall);
+            } else {
+                this._jsApiCall(payParam, callback);
             }
-        } else {
-            jsApiCall();
-        }
+        }, 100);
+    }
+
+    _jsApiCall(payParam, callback) {
+        window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-BrandWCPay:start', 0]);
+        // 发起支付
+        const sign = JSON.parse(payParam);
+        WeixinJSBridge.invoke('getBrandWCPayRequest', sign, res => {
+            // 支付结果
+            if (res.err_msg === 'get_brand_wcpay_request:ok') {
+                callback && callback('ok', '支付成功!');
+                window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-brandWCPay:ok', 0]);
+            } else if (res.err_msg === 'get_brand_wcpay_request:cancel') {
+                callback && callback('cancel', '支付已取消!');
+                window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-brandWCPay:cancel', 0]);
+            } else {
+                let msg = '支付失败!';
+                const errMsg = res.err_msg || res.errMsg || '';
+                // 例如 "chooseWXPay:没有此SDK或暂不支持此SDK模拟"
+                msg += errMsg ? '(' + errMsg + ')' : '';
+                callback && callback('fail', msg);
+                window._hmt.push(['_trackEvent', 'wx', 'wx-wxPay', 'wx-wxPay-brandWCPay:fail', 0]);
+            }
+        });
     }
 
 }

--
Gitblit v1.9.1