美文网首页
支付宝关闭交易与转支付状态码10003问题

支付宝关闭交易与转支付状态码10003问题

作者: Real_man | 来源:发表于2019-01-15 12:10 被阅读30次

记录问题,造福后人。

背景

如果有做过支付宝预授权的应该知道,其官方文档上并没有写10003状态码,但是生产环境中却遇到了10003的状态码。

由于代码中是按照10000的状态码来判断为成功的,所以10003被处理成了失败,从而导致一笔成功的交易被错误的当做的失败的交易。

image

后果

  • 以为用户没有付清钱
  • 关闭交易的时候,只能关闭交易失败的,无法关闭交易成功的,从而导致无法关闭这笔交易

代码修复

  1. 在支付宝扣钱成功之后,只有扣钱成功的才有回调。
    这里有两种方案可以选择:
  • 在回调代码中,只要收到了回调,如果原结果不是成功的,就将记录更新为成功。


    image.png
  • 在同步支付结果的时候,如果是10003的代码,先标记为等待状态,回调的代码不更改。

最终选用的是第二种,同步的时候就返回等待状态。如果在回调中更改的话,试想刚开始你扣用户的钱你告诉用户扣失败了,后面回调的时候又告诉用户扣钱成功了。这样肯定是不行的,同步的时候就要给准确的结果

  1. 在关闭交易之前,查询这笔交易的状态,如果交易状态为已关闭或者已支付,则无需关闭交易。这样尽管转支付的时候记录被标记为了失败,如果有回调代表支付成功了,如果没有回调,代表支付是失败的。
image

总结

这就是和第三方系统打交道,因为对第三方不够熟悉,其是一个黑盒系统,而这边有时候考虑的又没有那么的全导致的问题。

参考

相关文章

网友评论

      本文标题:支付宝关闭交易与转支付状态码10003问题

      本文链接:https://www.haomeiwen.com/subject/raoedqtx.html