H5支付开发步骤:
/wiki/doc/api/H5.php?=15_4
常见问题:
1 回调页面判断问题
一般情况下,正常的支付流程完成后,用户会返回到发起支付的页面,如下图。 我们在微信客户端支付成功后,系统会自动切换到浏览器的这个页面。
官方文档建议引导用户手动确认支付结果,也就是下图中的弹窗。 那么这个引导框应该什么时候弹出呢?
我做了测试,发现从微信支付完成到浏览器切换回预付费页面的过程中,并没有明确的事件可以用来定义切换回来。 我们在js中使用监听窗口的 、 、 属性或者 都或多或少存在兼容性问题。 我测试了几种效果,最终选择使用((){},2000)点击确认付款按钮后弹出引导框。 不过后来用浏览器测试的时候,发现从微信返回时页面会刷新清空,所以最终的结论是:最好的效果是使用跳转新页面(交互过程可以学习来自京东微信支付)。
2、商户参数格式不正确。
开发文档中的标记是目前H5支付功能为空。 什么时候会变空呢?
$[''] 完全来自浏览器。 并非所有用户代理(浏览器)都会设置此变量,有些可以手动修改。 因此,$[''] 并不总是正确的。
$[''] 将不起作用:
1.直接输入URL即可访问网页。
2. 打开网址。
3. 重定向 (.) URL。
4. 使用元重定向 URL。
5.使用PHP重定向URL。
6. 中的链接。
7.浏览器没有设置或已被用户修改。
所以一般来说,$['']只对通过超链接href和POST或GET形式访问的页面有效。
另一个需要注意的问题是在支付页面打开唤醒微信客户端链接,尽量避免中间不必要的跳转。 有些手机厂商自带的浏览器会有不同的判断。
您可以在这里学习官方演示
该演示将隐藏在链接中
3 网络环境安全验证失败,请稍后重试。
导致商户发出单笔转账的终端IP()与用户实际发起支付时微信侧检测到的终端IP不一致。
例如:(无代理)
我在局域网中开发,使用代理访问手机上的微信统一点餐接口。 此时后台php得到192.168.32.100,这是局域网IP。 但是,微信服务器验证我的IP时,却使用了我的外网IP。 与LAN IP相比,开发时需要先将其固定为公网IPv4地址,然后再接入统一订购接口。
这里需要强调一个特殊情况:
4G下使用QQ浏览器时,如果预付费接口与微信检测到的接口一致,微信客户端在验证授权时会拒绝该请求,需要按不一致处理。 我不知道为什么(谁知道请给我一些建议)
最后,如果你遇到实在解决不了的问题,可以厚颜无耻的给客服发邮件,回复还是蛮快的。