商户订单号保证唯一性问题

问题描述
  • 支付系统中,同一商户的第三方订单号在商户内应保证唯一,但是交易记录过大,数据库进行了分库分表的设计,数据库的唯一约束只能保证商户当天的第三方订单号唯一,如果不同日期的订单号相同,无法保证唯一,造成将当日数据移入历史表时,商户第三方订单号唯一键冲突。

解决方案
  1. 强制约定第三方订单号应包含日期。(不好控制调用方的行为,强制订单号格式造成接口不人性化。。。)
  2. 修改唯一约束,只要求商户第三方订单号当日唯一。(退货接口需要调用方提供原始交易日期,否则无法确定原交易记录,而不是像通常接口只需要提供原交易订单号)
  3. 额外新建一张表,作为外键分别关联当前表和历史表,并在新表中建唯一约束。

并发过大处理

问题描述
  • 支付系统中,当系统收到的请求超出系统的处理能力后,请求阻塞堆积,最终导致系统崩溃。

解决方案
  1. 快速失败机制,系统处理不了的请求直接拒绝,断开连接。

手续费计算小数位尾差问题

  1. 两平台手续费计算保留小数位不一致时,多笔交易加一起会有部分尾差。