h5唤起支付(微信和支付宝)

  • h5调用微信支付
  // 微信支付
  weChatPay(data){
          var vm= this;
   //下面是解决WeixinJSBridge is not defined 报错的方法
          if (typeof WeixinJSBridge == "undefined"){
               if( document.addEventListener ){
                     document.addEventListener('WeixinJSBridgeReady', vm.onBridgeReady(data), false);
                    }else if (document.attachEvent){
                        document.attachEvent('WeixinJSBridgeReady', vm.onBridgeReady(data));
                     document.attachEvent('onWeixinJSBridgeReady',vm.onBridgeReady(data));
                    }
                    }else{
                      vm.onBridgeReady(data);
                    }
            },
       // 调起微信支付 (data:后台传来的支付参数)
onBridgeReady(data){
          let that = this
                 WeixinJSBridge.invoke(
                    'getBrandWCPayRequest',{
                        "appId":data.appId,
                        "timeStamp": data.timestamp,
                        "nonceStr":data.nonceStr,
                        "package": data.package,
                        "signType":data.signType,
                        "paySign": data.paySign
                    },
                    function(res){
                       if (res.err_msg == "get_brand_wcpay_request:ok") {
                             alert('支付成功');
                          } else if (res.err_msg == "get_brand_wcpay_request:cancel") {
                             alert('取消支付')
                           } else if (res.err_msg == "get_brand_wcpay_request:fail") {
                               alert('支付失败')
                            }
                    }
                )
            },

注意:微信支付回调需放到线上才能获取

  • h5调用支付宝支付
    var form= res.data.result.jsConfig; // 后台返回的form
     const div = document.createElement('div')
     div.innerHTML = form//此处form就是后台返回接收到的数据
     document.body.appendChild(div)
      document.forms[0].submit()

弊端

  • 以上代码仅支持在除微信浏览器以外的浏览器
  • 因为微信不能直接使用支付宝,会提示‘请长按网址复制后使用浏览器访问’,使用效果不好,ios不支持

修改后的支付宝支付

增加支付提示页面,使用其他浏览器打开

在这里插入图片描述

   var form= res.data.result.jsConfig;
   const div = document.createElement('div')
   div.innerHTML = form//此处form就是后台返回接收到的数据
   document.body.appendChild(div)
   var queryParam = '';
   Array.prototype.slice.call(document.querySelectorAll("input[type=hidden]")).forEach(function (ele) {
        queryParam += '&' + ele.name + "=" + encodeURIComponent(ele.value);});
        var gotoUrl = document.querySelector("form").getAttribute('action')  + queryParam;
       window._AP.pay(gotoUrl);  
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值