Получить 4-значный номер кредитной карты Authorize.net - PullRequest
0 голосов
/ 08 мая 2018

Привет, я нашел один пример кода, в котором он просит передать ApiLoginID, ApiTransactionKey и TransactionsId.

Я могу получить ApiLoginID и ApiTransactionKey, но как мне получить тестовый транзакцию ID, так как в режиме тестирования authorize.net всегда дает транзакции как 0

Ниже приведен код, с помощью которого мне нужно получить номер кредитной карты. пожалуйста, предположите, что это правильный код или нет, чтобы получить данные кредитной карты?

public class GetTransactionDetails
{
    public static ANetApiResponse Run(String ApiLoginID, String ApiTransactionKey, string transactionId)
  {
        ServicePointManager.Expect100Continue = true;
        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
        Console.WriteLine("Get transaction details sample");

      ApiOperationBase<ANetApiRequest, ANetApiResponse>.RunEnvironment = AuthorizeNet.Environment.SANDBOX;
      // define the merchant information (authentication / transaction id)
      ApiOperationBase<ANetApiRequest, ANetApiResponse>.MerchantAuthentication = new merchantAuthenticationType()
      {
          name = ApiLoginID,
          ItemElementName = ItemChoiceType.transactionKey,
          Item = ApiTransactionKey,
      };

      var request = new getTransactionDetailsRequest();
      request.transId = transactionId;

      // instantiate the controller that will call the service
      var controller = new getTransactionDetailsController(request);
      controller.Execute();

      // get the response from the service (errors contained if any)
      var response = controller.GetApiResponse();

      if (response != null && response.messages.resultCode == messageTypeEnum.Ok)
      {
          if (response.transaction == null)
              return response;

          Console.WriteLine("Transaction Id: {0}", response.transaction.transId);
          Console.WriteLine("Transaction type: {0}", response.transaction.transactionType);
          Console.WriteLine("Transaction status: {0}", response.transaction.transactionStatus);
          Console.WriteLine("Transaction auth amount: {0}", response.transaction.authAmount);
          Console.WriteLine("Transaction settle amount: {0}", response.transaction.settleAmount);
      }
      else if (response != null)
      {
          Console.WriteLine("Error: " + response.messages.message[0].code + "  " +
                            response.messages.message[0].text);
      }

      return response;
   }
 }
}

В примере кода я передаю ниже учетные данные

const string apiLoginId = "5KP3u95bQpv";
const string transactionKey = "346HZ32z3fP4hTG2";
const string transactionId = "2249735976";

где я получаю данные, как на картинке ниже, но не могу получить данные кредитной карты

enter image description here

Я просто хочу получить данные кредитной карты для авторизации. Любая помощь

В своем коде я также добавил код, как показано ниже, но я получаю сообщение об ошибке

var obj = (creditCardMaskedType)response.transaction.payment.Item;
Console.WriteLine("Creditcard settle cardnumber: {0}", obj.cardNumber);

Ошибка

Дополнительная информация: Невозможно привести объект типа 'AuthorizeNet.Api.Contracts.V1.bankAccountMaskedType' к типу 'AuthorizeNet.Api.Contracts.V1.creditCardMaskedType'.

1 Ответ

0 голосов
/ 09 мая 2018

Последние четыре цифры кредитной карты находятся в части transaction > payment > creditcard > cardnumber ответа. Вы должны иметь возможность доступа с response.transaction.payment.creditCard.cardNumber.

Для справки, вот пример ответа от getTransactionDetails вызова API. Это должно показать вам структуру и лучше понять, как получить нужные данные.

{  
   "transaction":{  
      "transId":"2162566217",
      "submitTimeUTC":"2011-09-01T16:30:49.39Z",
      "submitTimeLocal":"2011-09-01T10:30:49.39",
      "transactionType":"authCaptureTransaction",
      "transactionStatus":"settledSuccessfully",
      "responseCode":1,
      "responseReasonCode":1,
      "responseReasonDescription":"Approval",
      "authCode":"JPG9DJ",
      "AVSResponse":"Y",
      "batch":{  
         "batchId":"1221577",
         "settlementTimeUTC":"2011-09-01T16:38:54.52Z",
         "settlementTimeUTCSpecified":true,
         "settlementTimeLocal":"2011-09-01T10:38:54.52",
         "settlementTimeLocalSpecified":true,
         "settlementState":"settledSuccessfully"
      },
      "order":{  
         "invoiceNumber":"60",
         "description":"Auto-charge for Invoice #60"
      },
      "requestedAmountSpecified":false,
      "authAmount":1018.88,
      "settleAmount":1018.88,
      "prepaidBalanceRemainingSpecified":false,
      "taxExempt":false,
      "taxExemptSpecified":true,
      "payment":{  
         "creditCard":{  
            "cardNumber":"XXXX4444",
            "expirationDate":"XXXX",
            "cardType":"MasterCard"
         }
      },
      "customer":{  
         "typeSpecified":false,
         "id":"4"
      },
      "billTo":{  
         "phoneNumber":"(619) 274-0494",
         "firstName":"Matteo",
         "lastName":"Bignotti",
         "address":"625 Broadway\nSuite 1025",
         "city":"San Diego",
         "state":"CA",
         "zip":"92101",
         "country":"United States"
      },
      "recurringBilling":false,
      "recurringBillingSpecified":true,
      "product":"Card Not Present",
      "marketType":"eCommerce"
   },
   "messages":{  
      "resultCode":"Ok",
      "message":[  
         {  
            "code":"I00001",
            "text":"Successful."
         }
      ]
   }
}
...