新开了一个小程序,在体验版支付流程一切顺利,发布后却不能支付,报错:"requestPayment:failchecktichetrejected"
提示为:Pleaseusewx.requestOrderPayment,之前好好怎么就不能用了,结果发现很多人都遇到类似的问题无法解决,并且微信没有任何通知
微信的文档并没有详细的流程说明,并且服务商的功能在最新版不能使用,不得不说微信真是坑。结果花了一天时间才把前后端全部调整完。新版的支付调用事务1400毫秒左右,之前300左右,在客户端半天弹不了支付框体验极差,微信端声称提高用户体验,实际主要是为了限制商家,流氓公司
以下为微信小程序最新版支付接口wx.requestOrderPayment小程序支付管理对接流程:
之前的微信支付已经隐藏了,最新菜单为支付管理,只需要在小程序申请就行了,不需要在微信商户号中做任何事
申请审核时间说的是2个工作日,结果足足等了10天,所以申请要称早
开发服务端下单接口,和开发公众号调用方式一致
文档:
创建订单|微信开放文档
需要使用两个接口:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=小程序APPID&secret=小程序密钥
注意:
和之前的不同这里不需要设置回调地址,回调是通过小程序公众平台事件的方式
订单号生成的修改,如果超过20位需要调整订单号的生成规则
相对之前的统一下单接口要简单一些,不需要处理响应数据,返回的数据就是小程序调起支付所需要的数据:
{"errcode":0,"errmsg":"ok","payment_params":{"timeStamp":"1657947031","nonceStr":"lsdHnNNSvKHzJowTog43Cw0YYmWxcoie","package":"prepay_id=up_wx16125030978396ab0985753e810aec0000","paySign":"ku5o7iV2F1ZrebEpyhG7H571LRKDmMHx/raXleiCOHFVO9qH/yoWzLxozFeZBVBaWui6YC9ECRc0WTWXcGeNtI6nUABT11yVdfUp0XvhgBlBwGx3Nb7lZGq+55ISCl5hj1g5yjoamYjzn42k9OysL2or8uY/Mwe+rF79jKKSl7f0T9hFUdvekXnFqBNUJ75sv+Bwj3Loei2rzoGOg4/3+czpIU7zfiLDZQF2bmI36UW941sM/ujVIWE1eBJYRLSjgGfFaG9rmrPH5nV3SEWnxvCMGHHhBIXlZjfJdukSChZWa3vov8Rkm5MCY0p/GipNpJoJxfOXWR2c405DF8bsog==","signType":"RSA"}}
小程序端修改
小程序端修改比较简单:将wx.requestPayment改为wx.requestOrderPayment然后做一下兼容处理
letpaymentType="uni";//#ifdefMP-WEIXINif{//判断接口是否可用,兼容判断paymentType="mp";}//#endifif{wx.requestOrderPayment{lln.tips{callback&&callback;});},fail{lettitle="支付失败";if{title="用户取消支付";}console.loglln.tips{callback&&callback;});}})}else{uni.requestPayment{lln.tips{callback&&callback;});},fail:function{lettitle="支付失败";if{title="用户取消支付";}console.loglln.tips{callback&&callback;});}});}
新增订单查询接口
文档:
https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/ministore/wxafunds/API/order/get_order_detail.html
请求参数:{"trade_no":"商户自己的订单号"}
注意:响应数据中如果包含transaction_id字段则标识交易成功,真坑
新增支付回调处理
文档:
订单支付成功通知|微信开放文档
在微信小程序:开发管理>开发设置>消息推送开启消息推送功能
以下是我们服务端的相关代码:
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点