《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
先说结论:不需要
再说细节:
同步和异步通知地址不需要检测用户的支付结果,只负责处理用户支付后的业务逻辑,订单插入等。通知地址的参数都是要签名验证的,不必要担心
你只要校验签名就可以了 签名的校验可以保证消息的准确的
第一个疑问:1. 对回调的来源不信任,密钥签名就是做这个的 2. 支付状态,回调中都会携带状态信息,如微信
return_code
result_code
均为SUCCESS
代表支付成功。3. 前1、2点,基本上没必要去 “订单查询 api 看下订单有没有支付成功”,但不是没特殊情况(百度收银台的开发中遇到了,一两句说不明白)第二个疑问:回调业务逻辑中,返回给支付平台的 处理结果,要与业务执行结果一致,也就是说,1.业务逻辑处理成功了则返回成功,不可以不返回或不按规定格式返回,否则会一直回调;2. 发生重复回调的情况,避免重复执行业务逻辑,如查询数据库订单状态为已支付,可以直接忽略这次回调即可,或返回处理成功告知已收到回调并且完成了业务逻辑,则不会再回调了。3. 避免业务逻辑未完成,如数据错误但没有使用mysql事务,但程序最终返回了处理成功。
第一个问题:回调可做可不做,常见支付平台本身就会使用轮询的方式对服务器进行回调,自己可以按照时效性或者平台需求做队列
第二个问题:回调的数据是一致性的,支付状态本身就已经是幂等性的一种设计,只有在订单状态为
发生变化
状态才会触发回调事务
,已支付 以及 取消订单 都不会进行任何操作支付回调需要放入队列吗?