微信内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;
              }

            });

 

posted @ 2020-09-09 18:14  朝思暮想的虫  阅读(1800)  评论(0编辑  收藏  举报