zoukankan      html  css  js  c++  java
  • 微信内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;
                  }
    
                });
  • 相关阅读:
    创建用户自定义函数 SQL
    sql with as 用法
    将string转为同名类名,方法名。(c#反射)
    linq 实现对象映射
    sql 游标
    C#编程总结(六)异步编程
    线程加锁解锁,用于循环条件不确定大小
    滚动条随代码滚动
    C# 代码小技巧
    reload方法
  • 原文地址:https://www.cnblogs.com/zmyxixihaha/p/13640492.html
Copyright © 2011-2022 走看看