Можно ли вернуть транзакцию в аккаунте песочницы Authorize.Net?

Я размещаю приведенный ниже код с консоли API Live API сайта Authorize.Net.

Запрос

{
    "createTransactionRequest": {
        "merchantAuthentication": {
            "name": "5KP3u95bQpv",
            "transactionKey": "346HZ32z3fP4hTG2"
        },
        "refId": "123456",
        "transactionRequest": {
            "transactionType": "refundTransaction",
            "amount": "5.00",
            "payment": {
                "creditCard": {
                    "cardNumber": "0015",
                    "expirationDate": "XXXX"
                }
            },
            "refTransId": "1234567890"
        }
    }
}

отклик

{
    "transactionResponse": {
        "responseCode": "3",
        "authCode": "",
        "avsResultCode": "P",
        "cvvResultCode": "",
        "cavvResultCode": "",
        "transId": "0",
        "refTransID": "1234567890",
        "transHash": "",
        "testRequest": "0",
        "accountNumber": "",
        "accountType": "",
        "errors": [
            {
                "errorCode": "54",
                "errorText": "The referenced transaction does not meet the criteria for issuing a credit."
            }
        ],
        "shipTo": {},
        "transHashSha2": "B3BF913B110E1C82C4FB83DA0EFE096C5D383A9257123AE2A7E9582AF977A537CA2C7A78F13B6FCF0E9C83A9C7FCF16DB4FC6F999A23C9DE24AFC4BFB765E602",
        "SupplementalDataQualificationIndicator": 0
    },
    "refId": "123456",
    "messages": {
        "resultCode": "Error",
        "message": [
            {
                "code": "E00027",
                "text": "The transaction was unsuccessful."
            }
        ]
    }
}

Ключ транзакции API такой же, как и на сайте Authorize.Net, но даже с собственным ключом Authorize.Net транзакция возврата не выполняется. Как мне протестировать возврат в песочнице или можно ли вообще протестировать возврат в песочнице?

РЕДАКТИРОВАТЬ: Я получаю ту же ошибку во время разработки, и у меня есть правильные данные, но мое приложение в производстве использует другие учетные данные AuthNet, и для целей тестирования я использую учетные данные из совершенно другой учетной записи песочницы AuthNet. Поэтому, хотя у меня есть нужные данные, я думаю, что моя проблема в том, что данные исходной транзакции не существуют в моей учетной записи песочницы. Помощь будет оценена.

2 ответа

Решение

Вы можете протестировать возврат средств в песочнице, но она должна соответствовать всем тем же критериям, что и производственная среда. В их примере могут быть устаревшие данные, но если вы используете свежие данные, они будут работать для вас.

Для возврата денег должны быть соблюдены следующие критерии:

  1. Изначально транзакция была обработана и успешно рассчитана через платежный шлюз (Authorize.Net).
  2. Транзакция отправляется с действительным идентификатором транзакции (x_trans_id) исходной, успешно проведенной транзакции.
  3. Сумма, запрашиваемая для возврата, меньше или равна первоначальной оплаченной сумме.
  4. Сумма нескольких кредитных транзакций, представленных против исходной транзакции, меньше или равна исходной расчетной сумме.
  5. По крайней мере, последние четыре цифры номера кредитной карты (x_card_num), использованные для исходной успешно проведенной транзакции. Срок годности не требуется.
  6. Транзакция отправляется в течение 120 дней с даты расчета исходной транзакции.

Вот тест, который я только что сделал:

AUTH_CAPTURE

{
   "createTransactionRequest":{
      "merchantAuthentication":{
         "name":"",
         "transactionKey":""
      },
      "refId":49782069,
      "transactionRequest":{
         "transactionType":"authCaptureTransaction",
         "amount":5,
         "payment":{
            "creditCard":{
               "cardNumber":"4427802641004797",
               "expirationDate":"122020",
               "cardCode":"999"
            }
         },
         "order":{
            "invoiceNumber":"1324567890",
            "description":"this is a test transaction"
         },
         "lineItems":{
            "lineItem":[
               {
                  "itemId":"1",
                  "name":"vase",
                  "description":"Cannes logo",
                  "quantity":"18",
                  "unitPrice":"45.00"
               },
               {
                  "itemId":"2",
                  "name":"desk",
                  "description":"Big Desk",
                  "quantity":"10",
                  "unitPrice":"85.00"
               }
            ]
         },
         "tax":{
            "amount":"4.26",
            "name":"level2 tax name",
            "description":"level2 tax"
         },
         "duty":{
            "amount":"8.55",
            "name":"duty name",
            "description":"duty description"
         },
         "shipping":{
            "amount":"4.26",
            "name":"level2 tax name",
            "description":"level2 tax"
         },
         "poNumber":"456654",
         "customer":{
            "id":"18",
            "email":"someone@blackhole.tv"
         },
         "billTo":{
            "firstName":"Ellen",
            "lastName":"Johnson",
            "company":"Souveniropolis",
            "address":"14 Main Street",
            "city":"Pecan Springs",
            "state":"TX",
            "zip":"44628",
            "country":"USA"
         },
         "shipTo":{
            "firstName":"China",
            "lastName":"Bayles",
            "company":"Thyme for Tea",
            "address":"12 Main Street",
            "city":"Pecan Springs",
            "state":"TX",
            "zip":"44628",
            "country":"USA"
         },
         "customerIP":"192.168.1.1",
         "transactionSettings":{
            "setting":[
               {
                  "settingName":"allowPartialAuth",
                  "settingValue":"false"
               },
               {
                  "settingName":"duplicateWindow",
                  "settingValue":"0"
               },
               {
                  "settingName":"emailCustomer",
                  "settingValue":"false"
               },
               {
                  "settingName":"recurringBilling",
                  "settingValue":"false"
               },
               {
                  "settingName":"testRequest",
                  "settingValue":"false"
               }
            ]
         },
         "userFields":{
            "userField":[
               {
                  "name":"MerchantDefinedFieldName1",
                  "value":"MerchantDefinedFieldValue1"
               },
               {
                  "name":"favorite_color",
                  "value":"blue"
               }
            ]
         }
      }
   }
}

RESPONSE

{
   "transactionResponse":{
      "responseCode":"1",
      "authCode":"A2XE99",
      "avsResultCode":"Y",
      "cvvResultCode":"P",
      "cavvResultCode":"2",
      "transId":"40047374169",
      "refTransID":"",
      "transHash":"",
      "testRequest":"0",
      "accountNumber":"XXXX4797",
      "accountType":"Visa",
      "messages":[
         {
            "code":"1",
            "description":"This transaction has been approved."
         }
      ],
      "userFields":[
         {
            "name":"MerchantDefinedFieldName1",
            "value":"MerchantDefinedFieldValue1"
         },
         {
            "name":"favorite_color",
            "value":"blue"
         }
      ],
      "transHashSha2":"D8C48317CB529C6DFCC472F4548CAAC18F17F505BAD9077E54C117854D8791BADBC76DF6ECEA330E0462E0F9C4C60FDC13BEBDA068E5431EAA551DEB97F358DF",
      "SupplementalDataQualificationIndicator":3,
      "networkTransId":"A3HTA7GK9GEC0S1889A0M5O"
   },
   "refId":"49782069",
   "messages":{
      "resultCode":"Ok",
      "message":[
         {
            "code":"I00001",
            "text":"Successful."
         }
      ]
   }
}

ВОЗВРАТ ДЕНЕГ

{
   "createTransactionRequest":{
      "merchantAuthentication":{
         "name":"",
         "transactionKey":""
      },
      "refId":49782069,
      "transactionRequest":{
         "transactionType":"refundTransaction",
         "amount":5,
         "payment":{
            "creditCard":{
               "cardNumber":"4427802641004797",
               "expirationDate":"122020"
            }
         },
         "authCode":"A2XE99"
      }
   }
}

RESPONSE

{
   "transactionResponse":{
      "responseCode":"1",
      "authCode":"",
      "avsResultCode":"P",
      "cvvResultCode":"",
      "cavvResultCode":"",
      "transId":"40047374178",
      "refTransID":"",
      "transHash":"",
      "testRequest":"0",
      "accountNumber":"XXXX4797",
      "accountType":"Visa",
      "messages":[
         {
            "code":"1",
            "description":"This transaction has been approved."
         }
      ],
      "transHashSha2":"A5390A4933681142E2A41FEC37BF0303FC5FF30D9DF9CBD05FABEC2FA87FE3E241F0705B559924313E972E5457A633CCFA62B7C52A63D93BBB67ACC102D9984B",
      "SupplementalDataQualificationIndicator":0
   },
   "refId":"49782069",
   "messages":{
      "resultCode":"Ok",
      "message":[
         {
            "code":"I00001",
            "text":"Successful."
         }
      ]
   }
}

Я пробовал использовать метод Джона Конде, и он работает, однако этот пример должен включать дату истечения срока действия вместо XXXX и полный номер кредитной карты, чтобы получить ответ об утверждении, по крайней мере, в моем случае. Следующее для меня не сработает:

      {
  "createTransactionRequest": {
    "merchantAuthentication": {
      "name": "your_credentials_here",
      "transactionKey": "your_credentials_here"
    },
    "transactionRequest": {
      "transactionType": "refundTransaction",
      "amount": 1,
      "currencyCode": "USD",
      "payment": {
        "creditCard": {
          "cardNumber": "4444",
          "expirationDate": "XXXX"
        }
      },
      "authCode": "your_auth_code"
    }
  }
}

Это работает для меня:

      {
  "createTransactionRequest": {
    "merchantAuthentication": {
      "name": "your_credentials_here",
      "transactionKey": "your_credentials_here"
    },
    "transactionRequest": {
      "transactionType": "refundTransaction",
      "amount": 1,
      "currencyCode": "USD",
      "payment": {
        "creditCard": {
          "cardNumber": "4444444444444444",
          "expirationDate": "1221"
        }
      },
      "authCode": "your_auth_code"
    }
  }
}
Другие вопросы по тегам