美文网首页搬砖之路
前端H5微信内部支付

前端H5微信内部支付

作者: 苏北苝 | 来源:发表于2019-09-25 14:38 被阅读0次

上一章讲了微信外部的H5支付,当然同一个页面是不会仅仅满足在微信外部支付的,扩展到JSAPI支付;
实际上很多操作都是你的后端小伙伴完成的,感谢后端大大;

交互细节:

以下是支付场景的交互细节,请认真阅读,设计商户页面的逻辑:

  1. 用户打开商户网页选购商品,发起支付,在网页通过JavaScript调用getBrandWCPayRequest接口,发起微信支付请求,用户进入支付流程。
  2. 用户成功支付点击完成按钮后,商户的前端会收到JavaScript的返回值。商户可直接跳转到支付成功的静态页面进行展示。
  3. 商户后台收到来自微信开放平台的支付成功回调通知,标志该笔订单支付成功。
  4. 注:(2)和(3)的触发不保证遵循严格的时序。JS API返回值作为触发商户网页跳转的标志,但商户后台应该只在收到微信后台的支付成功回调通知后,才做真正的支付成功的处理。

过程:

一、设置支付目录
请确保实际支付时的请求目录与后台配置的目录一致(现在已经支持配置根目录,配置后有一定的生效时间,一般5分钟内生效),否则将无法成功唤起微信支付。
在微信商户平台(pay.weixin.qq.com)设置您的JSAPI支付支付目录,设置路径:商户平台-->产品中心-->开发配置,如图所示。JSAPI支付在请求支付的时候会校验请求来源是否有在商户平台做了配置,所以必须确保支付目录已经正确的被配置,否则将验证失败,请求支付不成功。

微信JSAPI支付-支付目录配置
二、设置授权域名
开发JSAPI支付时,在统一下单接口中要求必传用户openid,而获取openid则需要您在公众平台设置获取openid的域名,只有被设置过的域名才是一个有效的获取openid的域名,否则将获取失败。而获取openid可以静默授权,这种方式对仅需要openid来说是首选。
微信网页授权域名设置

准备工作做好后,进入实际开发,在需要调用支付JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js

function onBridgeReady(){
   WeixinJSBridge.invoke(
      'getBrandWCPayRequest', {
         "appId":"********",     //公众号名称,由商户传入     
         "timeStamp":"1395712654", //时间戳,自1970年以来的秒数     
         "nonceStr":"****", //随机串     
         "package":"**********",     
         "signType":"MD5",  //微信签名方式;    
         "paySign":"******" //微信签名 
      },
      function(res){
      if(res.err_msg == "get_brand_wcpay_request:ok" ){
      // 使用以上方式判断前端返回,微信团队郑重提示:
            //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。
      //do something
      } else{
      //支付失败处理
      }
   }); 
}
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();
}

常见的一些错误参见微信说明
如果此页面需要在微信外部浏览器及其他APP打开,可以参见上一章H5调用微信支付

相关文章

网友评论

    本文标题:前端H5微信内部支付

    本文链接:https://www.haomeiwen.com/subject/zyaiuctx.html