支付总体逻辑
- 用户调用业务库下单-> 业务库调用支付库预下单 -> 支付库生成一笔支付单(如果没有对应的支付单才生成支付单,否则直接生成贸易单),并生成一笔贸易单,并调用美团支付预下单
- 美团支付返回调起支付弹框 参数-> 支付库将参数返回给业务库->业务库记录支付单,交易单关联到业务单,并将弹框参数返回给前端(以调起微信弹框/支付宝弹框 为例)
- 前端通过参数调起支付弹框
- 用户支付成功
- 美团告知业务库对应的交易单支付成功->支付库回调业务库支付成功

对第五步的回调深入
- 支付库可能回调业务库失败
- 需要有对应的重试机制
- 业务库有对应的查询修改机制
回调机制分析
- 回调失败之后调用 onFail 方法处理,先验证是否大于处理类中的最大重试次数,如果超过了最大重试次数,标记为最终失败,执行报警逻辑,如果没有超过最大重试次数,标记为失败,写入延迟队列

- DoubleUtils.multiplty(delay().doubleValue(), Math.pow(2, updateInfo.getRetryTimes())).longValue()) 注意这里,delay() 为处理类中定义的延迟时间,每次的时间间隔为 delay*(2的n次幂)
- delayevent 传入的参数包括间隔时间,处理类,当前行信息