0

我们正在使用 Adyen Web Drop-in插件在我们的应用程序中集成支付,因为我们不符合 PCI 标准,我们从 Drop-in 接收加密信息,如下所示:

{
  "data": {
      "paymentMethod": {
          "type": "scheme",
          "encryptedCardNumber" : "adyenjs_0_1_25$...",
          "encryptedExpiryMonth" : "adyenjs_0_1_25$..."
          "encryptedExpiryYear" : "adyenjs_0_1_25$..."
          "encryptedSecurityCode" : "adyenjs_0_1_25$..."
        }
  },
  "isValid": true
}

我们需要调用 /authorize API,它需要单个属性card.encrypted.json中的加密数据,如下所示:

{
   "reference":"YourPaymentReference",
   "merchantAccount":"TestMerchant",
   "amount":{
      "currency":"EUR",
      "value":1500
   },
   "additionalData":{
      "authorisationType":"PreAuth",
      "card.encrypted.json : "adyenjs_0_1_25$..*"
   }
}

到目前为止,我们已经尝试在现场传递 Drop-in 提供的整个 JSON,但它不起作用,我们从 Adyen 得到以下响应。

{
    "status": 422,
    "errorCode": "174",
    "message": "Unable to decrypt data",
    "errorType": "validation"
}

那么有谁知道如何将我们的数据转换为card.encrypted.json,我已经看到有其他 Adyen 插件使用自定义表单生成这个令牌,但是我们需要使用Drop-in Plugin 并且它不生成这个字段.

谢谢。

4

1 回答 1

0

使用插件和其他组件,您需要使用/paymentsAPI。

您的 /authorise 示例需要最少的更改才能成为 /payments 请求。您需要将paymentMethod对象直接传递给 /payments 请求:

{
   "reference":"YourPaymentReference",
   "merchantAccount":"TestMerchant",
   "amount":{
      "currency":"EUR",
      "value":1500
   },
   "paymentMethod": {
       "type": "scheme",
       "encryptedCardNumber" : "adyenjs_0_1_25$...",
       "encryptedExpiryMonth" : "adyenjs_0_1_25$..."
       "encryptedExpiryYear" : "adyenjs_0_1_25$..."
       "encryptedSecurityCode" : "adyenjs_0_1_25$..."
   },
   "additionalData":{
      "authorisationType":"PreAuth",
   }
}
于 2019-10-21T16:35:29.620 回答