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