微信內h5調用支付


在做公眾號商城的時候,需要用到調用微信支付,這是微信官方文檔教程

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6,詳細描述了怎么調起微信支付,以下代碼是我的實際業務調用微信支付完整流程

到訂單頁面點擊提交訂單按鈕,此時點擊事件先向后台發個請求,公司的后端人員通過代碼去對接微信的系統,生成一個預訂單,然后返回一個prepay_id,具體可以看官方文檔里邊的業務流程圖。在我們剛才向接口發送請求以后,后端會把信息返回給我們,包括appId、timeStamp、nonceStr、package、signType這個值。這些值都是我們調起微信支付必須的。

代碼如下:

            this.getFetch("公司后端提供的接口", data).then(res => {
              if (res.data.code * 1 === 1) {
                function onBridgeReady() {
                  WeixinJSBridge.invoke(
                    "getBrandWCPayRequest", {
                      appId: res.data.data.jsApiId, //公眾號名稱,由商戶傳入
                      timeStamp:res.data.data.timestamp, //時間戳,自1970年以來的秒數
                      nonceStr: res.data.data.nonceStr, //隨機串
                      package: res.data.data.package,
                      signType: res.data.data.signType, //微信簽名方式:
                      paySign: res.data.data.paySign //微信簽名
                    },
                    wxResponse => {
                      if (wxResponse.err_msg == "get_brand_wcpay_request:ok") {
                        window.location.href = window.location.origin + "/couponPaySuccess?ordernum=" + res.data.data.id;
                      }
                      if (wxResponse.err_msg == "get_brand_wcpay_request:fail") {
                        _this.$toast("支付失敗");
                      }
                     if (wxResponse.err_msg == "get_brand_wcpay_request:cancel") {
                       _this.$toast("支付取消");
                      }
                    }
                  );
                }
                if (typeof WeixinJSBridge == "undefined") {
                  if (document.addEventListener) {
                    document.addEventListener(
                      "WeixinJSBridgeReady",
                      onBridgeReady,
                      false
                    );
                  } else if (document.attachEvent) {
                    document.attachEvent("WeixinJSBridgeReady", onBridgeReady);
                    document.attachEvent(
                      "onWeixinJSBridgeReady",
                      onBridgeReady
                    );
                  }
                } else {
                  onBridgeReady();
                }
              } else if (res.data.code * 1 === -1) {
                this.autoLogin();
              } else {
                this.$toast(res.data.msg);
                this.wxBtn=true;
              }

            });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM