每次 webhooks 延迟情况发生后,Ping++ 都会极力建议商户添加主动查询机制来规避这种风险,那么这里说的主动查询机制到底怎么加呢?
订单支付需要在客户端收到渠道的同步回调之后,向服务端请求查询该订单的支付状态。
建议的处理逻辑为:
1、收到客户端同步回调结果为成功,必须主动向商户的服务端请求查询该订单的支付状态:
a. 如果已经支付成功(即商户服务端已经正常收到 webhooks):即更新该订单支付状态为“支付成功”。(一般情况均为此逻辑)
b. 如果尚未支付成功(即商户服务端没有收到或未正常接收 webhooks):商户服务端需要主动调用 Ping++ 订单查询接口获取订单支付状态:
i. 如果主动查询为成功,即更新状态为“支付成功。(此时 webhooks 有可能会重发,需考虑到后续收到 webhooks 时订单支付状态修改不会报错)
ii. 如果主动查询结果为未支付,则标记订单为“未支付” ,并同步返回给客户端,刷新客户端的订单支付状态。(这种情况发生的几率极小。)
2、收到客户端同步回调结果为失败时,可以参考如上逻辑设置主动查询机制,具体需求按照商户的实际场景实现。
3、收到客户端同步回调结果为取消时,不需要发起主动查询机制。