当前位置: 首页 > Web前端 > HTML5

快应用微信H5支付

时间:2023-04-05 22:19:12 HTML5

快应用微信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逻辑varpayUrl=decodeURIComponent(getQueryString('mweb_url'))if(payUrl!=='null'){window.location.replace(payUrl)}functiongetQueryString(name){varreg=newRegExp("(^|&)"+name+"=([^&]*)(&|$)","i");varl=decodeURI(window.location.search);varr=l.substr(1).match(reg);如果(r!=null)返回unescape(r[2]);返回空值;}3.关于这个中间页:为什么需要这个中间页?因为微信h5支付拉起支付界面的方法是跳转到mweb_url,但是由于微信会通过ref来检查防盗链,因为跳转动作需要在开发者页面完成。这个中间页面什么时候加载运行?调用微信支付的支付接口后,平台会自动加载并运行该页面。加载并运行这个中间页面时,会得到哪些参数呢?调用微信支付的pay接口时传入的参数都会作为get参数传给这个页面4.在快应用中配置中页地址,在manifest.json中声明wxpay特性时填写{"name":"service.wxpay","params":{"package":"you.package.name"“sign”:“abcdefg”,“url”:“https://my.demain.com/html/bookSoter/index.html”}}5。调用官方文档提供的wxpay.getType()方法wechatPayHandle(){varpayType=wxpay.getType();if(payType==='MWEB'){wxpay.pay({//微信网页支付的prepayIdprepayid:'wx13101012415473b5899768303880086259',extra:{//自定义传给支付页面的参数,按需设置,会进行拼接在urlEncodemweb_url:'https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx13101012415473b5899768303880086259&package=1999421602'}之后配置的url末尾,fail:function(data,code){console.log(`WXH5PAY处理失败,code=${code}`)},cancel:function(){console.log('WXH5PAY处理取消')},success:function(data){//H5模式下,支付成功的回调只是指向微信提交订单,并不代表支付成功console.log(data)}})}}6.如果pay()方法成功后,会返回一条数据。无需任何操作和跳转即可调用微信支付。返回格式如下:{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.如果走成功回调函数以后,微信唤起失败,可能是配置了未生成H5的白名单域名在微信开发平台上;服务器代码发布环境和你的测试环境在同一个局域网内。8.如果留fail回调函数,看返回900manifest.json中配置的应用签名不正确,无法解析901manifest.json中配置的应用包名不正确1000微信未安装1001url找不到微信网页支付的配置2001订单已经提交到微信,但微信返回错误,可能原因:签名错误、未注册APPID、项目设置APPID不对、注册APPID与设置不匹配、其他异常等。