支付,微信支付以及支付宝支付是我们开发中的一个关键点~~~可能是技术开发人员的通病(讨厌写技术文档)的心理,造成微信支付文档遍地是坑!!!在这里我就我做过的微信公众号支付爬过的一些坑,来做一些记录。
首先:关于支付的域名授权回调以及网页授权的url
在这里,你填写的回调URL ,要包含你统一下单文件与前端调起H5接口文件的目录~~~之前分模块的时候将下单的类文件与前端的文件进行大分离,结果一直报签名错误!!!后来把下单的文件与前端调取H5接口的文件包含在同一个目录下,才成功。同时前端网页授权的域名与后端接入的域名也必须保持一致
第二点:参数格式一定要注意,文档中下单是的参数格式与你前端传入的参数格式不一样的。
在后端验证签名的参数时间戳timestamp为小写,到了前端就成了大写timeStamp。
第三点:demo中的一些坑:
1.在传入参数的时候,demo中设置参数:SetTime_expire(date("YmdHis", time() + 600));其中传入的参数中写“600”,会报错:[time_expire时间过短,刷卡至少1分钟,其他5分钟],这里我填写的是3600才通过。
2.传入的传参数,生成商户订单号的时候,demo中使用的是你申请的商户号MCH_ID + Date(“YmdHis”),在这里你就不要使用了,在测试中这个商户号的生成方式不会报错,一旦上线用户下单频率超多的时候,你就会出错。做好在后面加上随机数,但最好不要使用字母,听说这种订单号在检索的时候出现问题。
3.在涉及退款的问题:在调用这个退款接口的时候,这里生成退款订单号的时候,你使用MCH_ID+date("YmdHis“)一样会造成退款订单号重复,此时会报错:”订单号校验信息不一致,请核实后重试“
最后一点,也是最最重要的一点那就是:前端调用H5接口的时候的回调:
![](https://i-blog.csdnimg.cn/blog_migrate/ff9e597b87775f7de9d07b0ee1a5d7b3.png)
千万不要把微信的提示不当一回事儿,这里真的是一个坑!!!
建议在
function(res){
//在这里使用订单查询的接口,按照这里的查询结果来进行判断最佳
}
就这么多了,这里就是我遇到的一些我坑。其他的很多坑,我参照网上的资料以及微信的的demo避过了坑点,认真的阅读微信的demo,结合文档以及网上的资料,你会更快的理解微信支付的流程