1

Cyber​​Source 支付系统似乎有一种防止重复交易的方法,如下所述

此功能查看在前一个订单的最后 15 分钟内提交的成功订单的商户参考号 (MRN),并阻止使用相同 MRN 提交的任何重复交易。

这里:

原因码 104:此授权请求的 access_key 和 transaction_uuid 字段与您在过去 15 分钟内发送的另一个授权请求的 access_key 和 transaction_uuid 字段匹配。

尽管很明显您需要transaction_uuid用于早期的 API,例如 KVP,但不清楚要为REST API使用哪个字段。

4

1 回答 1

1

使用clientReferenceInformation>transactionId字段。您可以在操场上看到这个请求正文,例如:

{
  "clientReferenceInformation": {
    "code": "TC50171_3",
    "transactionId": "465465411adfasdfsdf"
  },
  "processingInformation": {
    "reconciliationId": "1234"
  },
  "paymentInformation": {
    "card": {
      "number": "4111111111111111",
      "expirationMonth": "12",
      "expirationYear": "2031"
    }
  },
  "orderInformation": {
    "amountDetails": {
      "totalAmount": "102.21",
      "currency": "USD"
    },
    "billTo": {
      "firstName": "John",
      "lastName": "Doe",
      "address1": "1 Market St",
      "locality": "san francisco",
      "administrativeArea": "CA",
      "postalCode": "94105",
      "country": "US",
      "email": "test@cybs.com",
      "phoneNumber": "4158880000"
    }
  }
}

如果你包含相同的transactionId两次,后端会告诉你弯曲 INVALID_DATA. 我实际上希望它DUPLICATE_REQUEST作为一个原因返回,(它在他们的可能响应列表中)但这比用锋利的棍子戳眼睛要好。

于 2020-05-29T17:41:38.173 回答