PHP Laravel从Authorize.net获取交易银行卡后四位及属性访问问题
错误原因
Authorize.Net 官方 SDK 中所有响应类的属性均为 private 私有类型,PHP 不允许直接从类外部访问私有属性,因此直接读取 $response->transaction 会抛出权限错误。SDK 为所有属性提供了对应的公开 Getter 方法,必须通过指定方法获取属性值。
正确获取银行卡后四位的实现方案
实现步骤
- 先校验接口请求是否成功,避免后续操作出现异常
- 通过 Getter 方法逐层获取交易对象、支付信息对象、掩码卡号
- 从掩码卡号中提取最后四位
代码示例
// 调用你已封装的方法获取接口响应 $response = $this->getTransactionDetails($transactionId); // 校验响应有效性 if ($response != null && $response->getMessages()->getResultCode() === "Ok") { // 获取交易详情对象 $transaction = $response->getTransaction(); // 获取掩码支付信息对象 $payment = $transaction->getPayment(); // 信用卡支付场景获取卡号 $creditCard = $payment->getCreditCard(); // 若为借记卡支付可替换为:$debitCard = $payment->getDebitCard(); // 获取掩码卡号,返回格式一般为 XXXX1234 或 XXXX-XXXX-XXXX-1234 $maskedCardNum = $creditCard->getCardNumber(); // 提取后四位 $cardLast4 = substr($maskedCardNum, -4); // 这里拿到了银行卡后四位,可做后续业务处理 dd($cardLast4); } else { // 请求失败处理逻辑 $errors = $response->getMessages()->getMessage(); echo "查询失败:" . $errors[0]->getText(); }
内容的提问来源于stack exchange,提问作者Rafi Ullah
相关产品推荐
相关产品推荐

