集成Authorize.net API时支付档案收费遇transactionSettings无效错误
问题场景
- 直接使用信用卡信息发起
authCaptureTransaction交易时,包含transactionSettings的代码可正常运行:
$authnet_info = array( 'createTransactionRequest' => array( 'merchantAuthentication' => array( 'name' => ######, 'transactionKey' => ####### ), 'refId' => $data['reference_id'], 'transactionRequest' => array( 'transactionType' => 'authCaptureTransaction', 'amount' => $data['charge_amount'], 'payment' => array( 'creditCard' => array( 'cardNumber' => $data['cc_number'], 'expirationDate' => $data['cc_expiration'], "cardCode" => $data['cvc'] ) ), 'customer' => array( 'type' => 'business', 'id' => $data['id_company'] ), 'billTo' => array( "firstName" => $data['first_name'], "lastName" => $data['last_name'], 'company' => $data['company_name'], "address" => $data['address'], "city" => $data['city'], "state" => $data['state'], "zip" => $data['zipcode'] ), "transactionSettings" => array ( "setting" => array ( array( "settingName" => "duplicateWindow", "settingValue" => "5" ) ) ) ) ) );
- 改用客户支付档案发起交易时,保留
transactionSettings会触发如下错误:
( [code] => E00003 [text] => The element 'transactionRequest' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd' has invalid child element 'transactionSettings' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd'. List of possible elements expected: 'subsequentAuthInformation, otherTax, shipFrom, authorizationIndicatorType' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd'. )
- 实际发送的JSON请求内容:
{"createTransactionRequest": { "merchantAuthentication": { "name": "######", "transactionKey": "##########" }, "refId": "62", "transactionRequest": { "transactionType": "authCaptureTransaction", "amount": "25.00", "profile": { "customerProfileId": "1231231", "paymentProfile": { "paymentProfileId": "34534534534" } }, "customer": { "type": "business", "id": 5 }, "processingOptions": { "isSubsequentAuth": "false" }, "transactionSettings": { "setting": [{ "settingName": "duplicateWindow", "settingValue": "5" }] } } } }
问题原因
Authorize.net的API schema明确规定:当交易请求包含profile节点(即使用支付档案完成支付)时,transactionRequest下不允许存在transactionSettings子元素,仅支持subsequentAuthInformation、otherTax、shipFrom、authorizationIndicatorType这些指定元素,这就是触发E00003错误的核心原因。
解决方法
- 直接移除请求中的
transactionSettings节点,即可正常执行交易; - 若需设置
duplicateWindow(重复交易检测窗口),可通过商户后台全局配置该参数,无需在API请求中单独声明; - 若必须针对单交易单独配置,需确认API是否开放对应场景的参数传递路径(当前schema未支持该场景的请求级配置,优先推荐后台全局设置)。
内容的提问来源于stack exchange,提问作者Yeak
相关产品推荐
相关产品推荐

