You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP Laravel如何通过交易ID从Authorize交易获取完整信用卡号

问题原因

Authorize.Net出于PCI DSS支付合规要求,默认仅返回掩码后的信用卡号(仅后四位可见),你当前拿到的掩码值是平台的默认安全策略返回结果,并非代码逻辑错误。

解决步骤

1. 开通账户权限

  • 你的商户账户必须先通过PCI DSS SAQ D合规认证,只有达到该合规等级才有权限申请获取完整信用卡号
  • 联系Authorize.Net官方支持,提交合规证明,申请开通交易详情接口返回完整卡号的权限,该权限默认关闭,必须人工审核后才能开通
  • 如需在沙箱环境测试,需单独申请沙箱账户的对应权限

2. 调整API请求参数

在原请求中新增setIncludeSensitiveData(true)配置,明确要求接口返回敏感数据,调整后的代码如下:

$check_request = new AnetAPI\GetTransactionDetailsRequest();
$check_request->setMerchantAuthentication($merchantAuthentication);
$check_request->setTransId($transId);
// 新增以下配置,开通权限后生效
$check_request->setIncludeSensitiveData(true);
$check_controller = new AnetController\GetTransactionDetailsController($check_request);
if(env('AUTHORIZE_MODE') == 'SANDBOX'){
    $response2 = $check_controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::SANDBOX);
}
else{
    $response2 = $check_controller->executeWithApiResponse(\net\authorize\api\constants\ANetEnvironment::PRODUCTION);
}
$card_no = $response2->getTransaction()->getPayment()->getCreditCard()->getCardNumber();

重要提示

  • 获取到的完整信用卡号禁止明文存储、传输,所有操作必须严格符合PCI DSS规范,否则会面临高额罚款、商户账户被停用的风险
  • 如无必须使用完整卡号的业务场景,建议直接使用平台返回的支付令牌完成后续支付、对账操作,可大幅降低合规成本

内容的提问来源于stack exchange,提问作者Rafi Ullah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 12:27:06