支付系统返回值,错误码,code

来源:互联网 发布:大连电视台直播软件 编辑:程序博客网 时间:2024/05/16 03:59

code分成三类:

  1. 明确成功的code 

  2. 明确失败的code

  3. 未知状态的code(未知的code)


原则: 

        未知code保持进行中

  1. 提现一定要查询修复方式。同步的:只相信success,其他保持不变,通过状态来决定状态。异步的:同步,维持状态不变。

  2. 充值(预充值),成功保持进行中,其他不关闭,只是记录已出错过,下次重新获取流水号。

    如果未知code关闭,这样就不会出现因为微信某种原因拒绝,重试还是拒绝,导致用户再也无法支付的现象。一直用同个流水号。导致问题,支付后又来请求,会导致关闭掉。

   改进: 不关闭,只是记录已出错过。 不影响状态流转。解决了支付的一个大问题,线上遇到的场景:未知code到底是保持进行中,还是保持关闭的问题

    对支付而言:这种case下,如果保持进行中,又支付,还是失败的。如果关闭,可能已经支付成功了,但是又调用了一次。

  3. 代扣。 未知code。 关闭对我方有好处,用户损失,不会导致用户无法重复代扣的问题。进行中好处,可以通过后续状态检查校验。


未知状态的code。

这些code有些是错误可重试的,有些是不可重试的,不管可不可重试,最好都阻断掉。

所以请求方可以重新请求,以获取结果。也可以采用查询状态的方案来实现。


好的提供者,内部要保证完整性。采用状态查询修复和再次查询的方案。

如果某个提供者,不提供内部完整性。

查询到状态为

1、进行中,重试,触发流转。

2、失败,关闭。不重试。

3.、 成功。不重试

4. 、无,重试。可能触发流转,也可能继续被拒绝返回未知code,陷入无限死循环。

所以建议


如果对方明确接口是可重试的,内部不保证完整性,建议用后者。


0 0
原创粉丝点击