微信支付完成后在回调过程中完成业务操作(比如增加账户余额),还需要去查每个订单的状态保险下吗?

2018-09-11 19:46:34 +08:00
 coolair
会出现回调丢了的情况吗?

这个微信的订单可以不管吗,比如没有支付,我回头在生成过一个订单让他支付我自己的业务订单,不去管微信订单 2 个小时会不会超时,每次都生成新的可以吗?
1760 次点击
所在节点    问与答
8 条回复
mydns
2018-09-11 20:21:17 +08:00
最好查一下每个订单的状态是不是真的支付了 避免他人伪造数据 post 到你的接收地址
shoaly
2018-09-11 20:33:33 +08:00
不需要, 因为本身是有验签的, 注意核对金额就行了
hlwjia
2018-09-11 20:36:15 +08:00
微信生成的那个订单应该是不会超时的,你应该要主动去关闭他。

你应该有你系统内的一个 order id,不想影响效率,可以定期检查一个 order id 是否已经支付,支付了的话,就可以把其他的微信订单都关闭了。
p2pCoder
2018-09-11 20:49:05 +08:00
金融系统不要相信对接的系统是把幂等完全做好的
cpdyj0
2018-09-11 22:56:24 +08:00
和钱沾边的系统小心点不为过
qiayue
2018-09-11 23:08:08 +08:00
自己这边一定要有一个订单表,一个订单生成一条记录
拿微信支付举例
1、用户点击支付时,先判断是否已经调用 [统一下单] 接口生成了预支付标识( prepay_id ),未生成或者超过 2 小时则重新调用 [统一下单] 接口,已生成则下一步
2、传入 prepay_id 等信息,唤起支付
3、用户支付
4、用户支付完成,微信回调你的 [支付通知] 接口,把支付信息告诉你(包含了微信支付订单号 transaction_id 和你自己的订单号 out_trade_no ),你此时可以需要判断用户支付金额是否跟你自己的订单里保存的金额一致,如果一致则认为支付成功,才去进行下一步业务处理
第 4 步为了确保万无一失,也可以传 transaction_id 或 out_trade_no 调用 [查询订单] 接口判断该微信支付订单的状态。
passerbytiny
2018-09-12 09:15:04 +08:00
不需要。

回调是微信服务器调用你的服务器,只有在你的服务器不正常的时候,回调才会丢。

你必须完全信任微信回调的时候已经支付成功了。如果你不信任微信只会在支付成功后才发起回调,那么你的任何附加措施(本例即查询订单状态)也就都是不可信任的。

你在回调的时候查询订单状态以及商户余额,都没有意义。分布式异步情况下,很有可能:微信确认支付完成后,不等商户余额到账和订单状态改变,就立刻就发起回调,而此时你去查订单状态和商户余额,是查询不到任何东西的。
rogwan
2018-09-12 09:26:25 +08:00
你的服务器对回调请求不返回正常状态,回调会重复请求,除非你自己的服务器挂的太久了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488314

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX