【问题标题】:How to get Card last four digits of transaction from Authorize.net in PHP Laravel如何在 PHP Laravel 中从 Authorize.net 获取卡交易的最后四位数字
【发布时间】:2021-12-26 13:17:07
【问题描述】:

我已经尝试了这段代码并得到了结果

public function getTransactionDetails($transactionId)
        {
        $merchantAuthentication = new AnetAPI\MerchantAuthenticationType();
        $merchantAuthentication->setName(env('MERCHANT_LOGIN_ID'));
        $merchantAuthentication->setTransactionKey(env('MERCHANT_TRANSACTION_KEY'));

        // Set the transaction's refId
        $refId = 'ref' . time();
        $request = new AnetAPI\GetTransactionDetailsRequest();
        $request->setMerchantAuthentication($merchantAuthentication);
        $request->setTransId($transactionId);
        $controller = new AnetController\GetTransactionDetailsController($request);
        $response = $controller->executeWithApiResponse( 
          \net\authorize\api\constants\ANetEnvironment::SANDBOX);

        return $response;
    }

当我返回响应时,它会给我以下输出

net\authorize\api\contract\v1\GetTransactionDetailsResponse {#1635 ▼
  -transaction: net\authorize\api\contract\v1\TransactionDetailsType {#1634 ▼
    -transId: "60179386025"
    -refTransId: null
    -splitTenderId: null
    -submitTimeUTC: DateTime @1636637863 {#1636 ▶}
    -submitTimeLocal: DateTime @1636609063 {#1637 ▶}
    -transactionType: "authCaptureTransaction"
    -transactionStatus: "settledSuccessfully"
    -responseCode: 1
    -responseReasonCode: 1
    -subscription: null
    -responseReasonDescription: "Approval"
    -authCode: "5DQLVA"
    -aVSResponse: "Y"
    -cardCodeResponse: "P"
    -cAVVResponse: null
    -fDSFilterAction: null
    -fDSFilters: null
    -batch: net\authorize\api\contract\v1\BatchDetailsType {#1638 ▶}
    -order: null
    -requestedAmount: null
    -authAmount: 3.0
    -settleAmount: 3.0
    -tax: null
    -shipping: null
    -duty: null
    -lineItems: null
    -prepaidBalanceRemaining: null
    -taxExempt: false
    -payment: net\authorize\api\contract\v1\PaymentMaskedType {#1643 ▶}
    -customer: null
    -billTo: net\authorize\api\contract\v1\CustomerAddressType {#1639 ▶}
    -shipTo: null
    -recurringBilling: false
    -customerIP: "59.103.97.140"
    -product: "Card Not Present"
    -entryMode: null
    -marketType: "eCommerce"
    -mobileDeviceId: null
    -customerSignature: null
    -returnedItems: null
    -solution: null
    -emvDetails: null
    -profile: null
    -surcharge: null
    -employeeId: null
    -tip: null
    -otherTax: null
    -shipFrom: null
    -networkTransId: "2OE7KPRVGKYY58S7PISZRQI"
    -originalNetworkTransId: null
    -originalAuthAmount: null
    -authorizationIndicator: "final"
  }
  -clientId: "accept-hosted"
  -transrefId: "ref1636637807"
  -refId: null
  -messages: net\authorize\api\contract\v1\MessagesType {#1633 ▶}
  -sessionToken: null
}

现在当我要访问交易时,我无法获得交易详情,所以它给了我一个错误:

dd($response->transaction);

无法访问私有财产 net\authorize\api\contract\v1\GetTransactionDetailsResponse::$transaction

请任何人帮助我这里的问题是什么以及为什么无法访问交易详细信息 凭据属于沙盒帐户。

【问题讨论】:

    标签: php laravel authorize.net


    【解决方案1】:

    试试这个:$response->getTransaction()

    【讨论】:

    • 感谢 Михаил Тихонов 的回答,它给了我交易详情,但我实际上需要卡没有,所以如何得到它
    • -payment: net\authorize\api\contract\v1\PaymentMaskedType {#1643 ▼ -creditCard: net\authorize\api\contract\v1\CreditCardMaskedType {#1644 ▼ -cardNumber: "XXXX1111"
    • cardNo 在 payment->creditCard->cardNumber
    • $response->getTransaction()->getPayment()->getCreditCard()->getCardNumber()
    • 没错就是这样。
    猜你喜欢
    • 1970-01-01
    • 2011-08-30
    • 2013-07-01
    • 2019-12-08
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2020-07-10
    相关资源
    最近更新 更多