Commit 4d9d702c2124898e9955cf98531b1e01e2e8466f
1 parent
dbb674b2
【功能优化】支付:优化支付宝、微信支付时,支付结果和异步回调结果的冲突
Showing
1 changed file
with
8 additions
and
1 deletions
yudao-module-pay/yudao-module-pay-biz/src/main/java/cn/iocoder/yudao/module/pay/service/order/PayOrderServiceImpl.java
| ... | ... | @@ -163,7 +163,14 @@ public class PayOrderServiceImpl implements PayOrderService { |
| 163 | 163 | |
| 164 | 164 | // 4. 如果调用直接支付成功,则直接更新支付单状态为成功。例如说:付款码支付,免密支付时,就直接验证支付成功 |
| 165 | 165 | if (unifiedOrderResp != null) { |
| 166 | - getSelf().notifyOrder(channel, unifiedOrderResp); | |
| 166 | + try { | |
| 167 | + getSelf().notifyOrder(channel, unifiedOrderResp); | |
| 168 | + } catch (Exception e) { | |
| 169 | + // 兼容 https://gitee.com/zhijiantianya/yudao-cloud/issues/I8SM9H 场景 | |
| 170 | + // 支付宝或微信扫码之后时,由于 PayClient 是直接返回支付成功,而支付也会有回调,导致存在并发更新问题,此时一般是可以 try catch 直接忽略 | |
| 171 | + log.warn("[submitOrder][order({}) channel({}) 支付结果({}) 通知时发生异常,可能是并发问题]", | |
| 172 | + order, channel, unifiedOrderResp, e); | |
| 173 | + } | |
| 167 | 174 | // 如有渠道错误码,则抛出业务异常,提示用户 |
| 168 | 175 | if (StrUtil.isNotEmpty(unifiedOrderResp.getChannelErrorCode())) { |
| 169 | 176 | throw exception(PAY_ORDER_SUBMIT_CHANNEL_ERROR, unifiedOrderResp.getChannelErrorCode(), | ... | ... |