1.首先是服务端完成支付服务端的接入,接入完成之后,服务器要完成的工做是接收来自客户端的支付请求,而后生成一个订单,以后把订单传给微信的服务器,微信会返回一个mweb_url,服务器须要把这个mweb_url返回给客户端;html
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连接web
//中间页面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.关于这个中间页:json
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值测试