其他分享
首页 > 其他分享> > 快应用微信H5支付

快应用微信H5支付

作者:互联网

快应用微信H5支付

1.首先是服务端完成支付服务端的接入,接入完成以后,服务器要完成的工作是接收来自客户端的支付请求,然后生成一个订单,之后把订单传给微信的服务器,微信会返回一个mweb_url,服务器需要把这个mweb_url返回给客户端;

data:{
    orderId :56955,
    url:'https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx13101012415473b5899768303880086259&package=1999421602'
}

2.完成一个中间跳转页面,中间页需要在加载完成的时候从页面的get参数中解析出 mweb_url , 然后自动向这个url跳转;生成一个https://my.demain.com/html/bo... H5链接

//中间页面H5的逻辑
  var payUrl = decodeURIComponent(getQueryString('mweb_url'))
  if (payUrl !== 'null') {
    window.location.replace(payUrl)
  }

  function getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
    var l = decodeURI(window.location.search);
    var r = l.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;
  }

3.关于这个中间页:

4.在快应用中进行配置中间页地址,manifest.json中声明wxpay这个feature时填上

 {
     "name": "service.wxpay",
     "params": {
     "package": "you.package.name",
     "sign": "abcdefg",
     "url": "https://my.demain.com/html/bookSoter/index.html"
  }
}

5.调用官方文档提供的wxpay.getType()方法

wechatPayHandle(){
    var payType = wxpay.getType();
    if (payType === 'MWEB') {
    wxpay.pay({
      //微信网页支付的prepayId
      prepayid: 'wx13101012415473b5899768303880086259',
      extra: {
        //传递给支付页面的自定义参数, 根据需要进行设置, 会被urlEncode之后拼接在配置的url尾部
        mweb_url: 'https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx13101012415473b5899768303880086259&package=1999421602'
      },
      fail: function (data, code) {
        console.log(`WX H5 PAY handling fail, code = ${code}`)
      },
      cancel: function () {
        console.log('WX H5 PAY handling cancel')
      },
      success: function (data) {
        //H5方式下,支付成功的回调仅仅只是指将订单递交给微信,并不意味着支付已经成功完成
        console.log(data)
      }
    })
  }
}

6.如果pay()方法走成功以后会返回一个data,不需要做任何操作和跳转,就可以唤起微信支付,返回的格式如下:

{
finl_url:"https://my.demain.com/html/bookSoter/index.html?repayid=wx13101012415473b5899768303880086259&trade_type=MWEB&mweb_url=https%3A%2F%2Fwx.tenpay.com%2Fcgi-bin%2Fmmpayweb-bin%2Fcheckmweb%3Fprepay_id%3Dwx13101012415473b5899768303880086259%26package%1999421602"
    }

7.如果走了success回调函数以后,微信唤起不成功存在可能有

8.如果走了fail回调函数,看返回的code值

本文转载于:猿2048→https://www.mk2048.com/blog/blog.php?id=h0cbb0bjibb

标签:url,微信,H5,支付,mweb,页面
来源: https://www.cnblogs.com/homehtml/p/12761284.html