收藏
回答

扫码支付调用统一下单接口出现"201 商户订单号重复"错误

扫码支付中,用户调用统一下单接口之后返回了二维码地址,但此时用户刷新了页面,我们这边需要重新获取一个二维码地址,还是使用相同的参数,包括订单号,商品名称,商品价格等都完全一致,也确定这个订单还未过期,但是却返回"201 商户订单号重复"错误,而且这个错误提示不是必现,是偶现

回答关注问题邀请回答
收藏

1 个回答

  • 北望沣渭
    北望沣渭
    2021-04-14

    201是平台方保护商户重复支付的一个措施;「商户订单号」不可重复,「用户刷新了页面」,就应该重新生成一个「商户订单号」;

    例如:下了一个1000块的订单,用同一个商户订单号,通过不正当方法,刷新页面后伪造成100块的支付订单,然后付款了,商户系统如果逻辑不缜密,就得亏900块了。

    2021-04-14
    有用 1
    回复 4
    • 少年
      少年
      2021-04-14
      但是付款的那个二维码是有时效性的,如果这个二维码已经过期了,订单还没过期的话,这种情况也需要重新生成一个新的订单吗
      2021-04-14
      回复
    • 北望沣渭
      北望沣渭
      发表于移动端
      2021-04-14回复少年
      建议是,只要是重新请求的如页面刷新,商户系统就判断下当前商户订单号是否支付了,没支付就新生成预支付订单号,这样可最大限度避免商户系统收纳不均问题
      2021-04-14
      回复
    • 睦洲
      睦洲
      2021-04-23
      您说的这个确实存在,但是 一模一样的参数 发起请求,隔了挺久(1个月左右)就会出现这个 201的错误
      2021-04-23
      回复
    • 欢乐马
      欢乐马
      2023-05-09
      你举例的情况和保护商户重复支付没有必然关系.

      如果可以通过不正当方法,把1000元的订单伪造成100的订单,
      那么伪造的这一动作在一个阶段都能够实现.

      避免这种伪造的方式,是由服务端统一根据数据库信息,而不是客户端传递的信息,重新计算价格,向微信预下单支付.

      目前的支付模式也是这样的,由商户服务端统一下单后再返回支付参数
      2023-05-09
      回复
登录 后发表内容
问题标签