移动支付业务处理逻辑是什么样的?

理由
举报 取消

最近在做移动支付,但一直有个疑惑,就是支付完成后的业务处理究竟是在同步返回后进行还是在收到异步通知后进行呢?如果在同步返回后,那异步通知还有什么意义?如果是在异步通知后,那如果异步通知不及时怎么办,就让业务一直等着吗?

2017年6月18日 1 条回复 1023 次浏览

发起人:poettian 初入职场

回复 ( 1 )

  1. 大杰哥
    理由
    举报 取消

    一般通过异步通知进行。

    异步通知过程中第三方支付的服务器会向你自己的服务器发送消息回执以描述某次支付的成功与否。此时,如果你的服务器因为各种原因忽略或没有接受到该回执,第三方支付的服务器会在很短的时间内再次发送同样的消息回执。这个重复发送的过程会一直下去直到第三方支付服务器得到你的服务器的回应,并且,每次重复发送的时间间隔会有所增长。

    实际上,支付因为各种情况发生错误很常见的,我们在开发星际加速器( )过程中遇到过的有(按照影响力排序):

    • 服务器出故障
    • 支付内置信息字段(例如支付标题)的长度限制,因为字节码的缘故,中文字符的长度与存储字节数会不一样,所以这个问题需谨慎处理。我们吃了两次亏才完全解决掉。
    • 第三方支付的配置。从没接触过支付逻辑到把多种支付推至线上(现支持支付宝、微信、Paypal、Bitcoin)需要经过各种繁复恶心的调试。到最后能支付成功说明我们的支付配置肯定没有问题。我指的支付配置是一些比较容易疏忽的,例如: 允许支付的域名。某些支付要求安全支付域名精确到第三四级域名,这个时候你悄悄地把支付链接改掉后者把给网站套上https协议,但却往了更新配置,会导致无法支付。
    • 支付私钥的变更,这个很少会发生,只要在支付私钥过期的时间内更改之。

    以上,我介绍了一些经常导致支付失败的情形,为什么要说这个呢?因为是想告诉提问者,发个消息回执都能失败只能是因为第三方支付的服务器挂掉这些非常罕见的特殊情况,异步通知不及时跟我说的这三种情况比起来发生的概率要小太多太多了。实际上,我们到目前为止还没有捕捉到哪一例支付失败是因为通知不及时

    所以,如果碰到支付不及时的情况,你的服务器确实就只能等。但与其考虑这个问题,还不如好好审视你自己支付逻辑的实现,要让支付不出错不是件易事。

我来回答

Captcha 点击图片更换验证码