Можно ли вернуть транзакцию в аккаунте песочницы 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 ответа
Вы можете протестировать возврат средств в песочнице, но она должна соответствовать всем тем же критериям, что и производственная среда. В их примере могут быть устаревшие данные, но если вы используете свежие данные, они будут работать для вас.
Для возврата денег должны быть соблюдены следующие критерии:
- Изначально транзакция была обработана и успешно рассчитана через платежный шлюз (Authorize.Net).
- Транзакция отправляется с действительным идентификатором транзакции (
x_trans_id
) исходной, успешно проведенной транзакции. - Сумма, запрашиваемая для возврата, меньше или равна первоначальной оплаченной сумме.
- Сумма нескольких кредитных транзакций, представленных против исходной транзакции, меньше или равна исходной расчетной сумме.
- По крайней мере, последние четыре цифры номера кредитной карты (
x_card_num
), использованные для исходной успешно проведенной транзакции. Срок годности не требуется. - Транзакция отправляется в течение 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"
}
}
}