解决支付对账错误

一位客户损失了 2,000 美元。他们的财务主管花了四个晚上寻找差额。

问题出在重试任务上。系统将 120 笔支付处理了两次。它没有再次向客户收费,只是在账本中添加了重复的记录。

我们通过引入幂等层解决了这个问题。这确保了每笔支付仅处理一次。

我们是这样做的:

  • 我们使用了 Redis 锁来防止重复请求。
  • 我们在数据库中添加了唯一索引作为备份。
  • 我们使用了包含网关名称和交易 ID 的键。

我们还修复了汇率问题。系统之前使用的是实时汇率。汇率变化很快,这导致了差额。

现在,我们在订单开始时锁定汇率。客户看到的价格与财务团队看到的价格一致。

我们还建立了一个每日报告机制。它将银行的 CSV 文件与我们的记录进行比对。每月的核对工作量从 15 小时降至 2 小时。

不要再依赖 Excel 和熬夜了。支付错误本质上是设计问题。

从数据库索引开始做起。随着业务增长,再添加 Redis 锁。永远不要假设支付通知只会到达一次。

来源:https://dev.to/yanmoheluo/daigou-code-how-we-solved-payment-reconciliation-nightmares-in-cross-border-order-management-3df7