
微信H5支付流程详解
1. 用户在商户平台完成商品或服务的下单操作,并选择微信支付进行结算。
2. 商户后台系统通过调用统一下单接口,向微信支付发起支付请求,交易类型为MWEB。
3. 微信支付统一下单接口将支付相关参数,包括支付跳转URL(参数名为“mweb_url”),返回给商户后台。商户通过该URL调起微信支付的中间页。
4. 中间页对H5权限进行校验,并进行安全性检查。
5. 如果支付成功,商户后台将接收到微信支付平台的异步通知。
6. 用户在微信支付的收银台完成支付或取消支付操作,并返回到商户指定的页面(默认为支付发起页面)。
7. 商户在展示页面引导用户主动查询支付结果。
8. 9. 商户后台判断是否已收到微信支付的支付结果通知,如果没有,后台将调用订单查询接口来确认订单状态,米兰体育官方。
10. 将最终的订单支付结果展示给用户。
常见问题解答
一、回调页面
用户支付完成后,通常返回到支付发起页面。若需返回至指定页面,可以在MWEB_URL后添加redirect_url参数进行指定。例如,若希望用户支付完成后跳转至https://www.wechatpay.com.cn,则需按照以下方式处理:
假设通过统一下单接口获得的MWEB_URL为https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096,拼接后的地址应为https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx20161110163838f231619da20804912345&package=1037687096&redirect_url=https%3A%2F%2Fwww.wechatpay.com.cn。
注意事项:
1. 对redirect_url进行urlencode处理。
2. 设置redirect_url后,回跳指定页面的操作可能发生在以下情况:
a. 微信支付中间页调起微信收银台后超过5秒。
b. 用户点击“取消支付”或支付完成后点击“完成”按钮。因此,无法保证页面回跳时支付流程已结束,所以商户设置的redirect_url地址不能自动执行查单操作,应让用户去点击按钮触发查单操作。
二、其他常见错误

以下是微信H5支付过程中可能遇到的一些常见错误及解决方法:
1. 网络环境未能通过安全验证,请稍后再试。
解决方法:商户侧统一下单时传递的终端IP(spbill_create_ip)与用户实际调起支付时微信侧检测到的终端IP不一致,请确保统一下单时传递正确的终端IP。
2. 商家参数格式有误,请联系商家解决。
解决方法:当前调起H5支付的referer为空,请按正常流程进行页面跳转后发起支付,或自行抓包确认referer值是否为空。
3. 商家存在未配置的参数,请联系商家解决。
解决方法:当前调起H5支付的域名与申请H5支付时提交的授权域名不一致,如需添加或修改授权域名,请登录商户号对应的【商户平台->产品中心->开发配置】自行配置。
4. 支付请求已失效,请重新发起支付。
解决方法:统一下单返回的MWEB_URL生成后,有效期为5分钟,如超时请重新生成MWEB_URL后再发起支付。
5. 请在微信外打开订单,进行支付。
解决方法:H5支付不能直接在微信客户端内调起,请在外部浏览器调起。
6. IOS:签名验证失败,安卓:系统繁忙,请稍后再试。
解决方法:请确认同一个MWEB_URL只被一个微信号调起,如果不同微信号调起请重新下单生成新的MWEB_URL。
7. 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决。
解决方法:统一下单中spbill_create_ip字段必须为客户端IP地址。
三、QA
Q1:传递redirect_url safari浏览器时支付完成后会新开一个页面;还有,有些iOS手机使用其他浏览器支付完成后默认会回到safari浏览器。
A1:1. 目前逻辑就是这样设计的,防止商户无限循环调用微信客户端。2. 对的,返回需要浏览器的schema信息,部分浏览器隐藏了这个信息,在无法拿到schema信息的情况下,就会回到safari浏览器。