如图,可以在客户端收到渠道的同步回调之后,向服务端发送同步回调的结果,然后结合客户端发送的同步回调结果和异步回调结果做判断。
建议的处理逻辑为:
1、收到客户端同步回调结果为成功,可接受的时间内收到 webhooks:即同为支付成功,修改支付状态为“支付成功”
2、收到客户端同步回调结果为成功,可接受的时间内未收到 webhooks:发起主动查询
(1)如果主动查询为成功,即更新状态为“支付成功”
(2)如果主动查询结果为未支付,则标记订单为“未支付”---a
3、收到客户端同步回调结果为失败或者取消,可接受的时间内收到 webhooks:则更新状态为“支付成功”---b
4、收到客户端同步回调结果为失败或者取消,可接受的时间内未收到 webhooks:发起主动查询
(1)如果主动查询为成功,即更新状态为“支付成功”---c
(2)如果主动查询结果为未支付,则标记订单为“未支付”
其中,a、b、c的情况很少见,如果遇到,可登录Ping++ 管理平台或渠道后台,查看订单详情,确认实际状态。
同时你还需确保:
1、你的服务端接收 webhooks 时,实现 webhooks 验签机制,保证 webhooks 服务器与你们服务器通信安全
2、你的客户端与服务端的通信安全
好了,以上的逻辑只要都实现了,应该就可以完全规避 webhooks 延迟的风险了。