更新客户付款配置文件请求文档错误?无法发布更新的付款信息,E00003



我根据这篇文章将JSON发布到测试API:https://developer.authorize.net/api/reference/index.html customer-profiles-update-customer-payment-profile

它清楚地表明,我可以包括,从他们收到的,一个更新的支付元素:

paymentProfile  Contains payment information for the customer profile.
Sensitive information that is not being updated can be masked.

这是我的整个对象:

{
"updateCustomerPaymentProfileRequest": {
"merchantAuthentication": {
"name": "XXXXX",
"transactionKey": "XXXXX"
},
"refId": "XXXXX",
"customerProfileId": "XXXXX",
"paymentProfile": {
"defaultPaymentProfile": true,
"customerPaymentProfileId": "XXXXX",
"payment": {
"creditCard": {
"cardNumber": "XXXX1111",
"expirationDate": "2023-12"
}
},
"originalNetworkTransId": "XXXXX",
"originalAuthAmount": 0.0,
"billTo": {
"phoneNumber": "XXXXX-XXXXX",
"firstName": "XXXXX",
"lastName": "XXXXX",
"address": "XXXXX XXXXX",
"city": "XXXXX",
"state": "XXXXX",
"zip": "XXXXX-XXXXX",
"country": "US"
}
},
"validationMode": "testMode"
}
} 

返回,我得到这个错误:

{
"messages": {
"resultCode": "Error",
"message": [
{
"code": "E00003",
"text":"The element 'paymentProfile' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd' has invalid child element 'payment' in namespace 'AnetApi/xml/v1/schema/AnetApiSchema.xsd'."
}
]
}
}

这没有意义。它几乎完全符合文档。在错误消息中,他们提到了xml模式。当我打开它时,它显示了支付配置文件的不同类型:

https://api.authorize.net/xml/v1/schema/AnetApiSchema.xsd

节目:

<xs:element name="updateCustomerPaymentProfileRequest">
<xs:complexType>
<xs:complexContent>
<xs:extension base="anet:ANetApiRequest">
<xs:sequence>
<xs:element name="customerProfileId" type="anet:numericString"/>
<xs:element name="paymentProfile" type="anet:customerPaymentProfileExType"/>
<xs:element name="validationMode" type="anet:validationModeEnum" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>

其中customerPaymentProfileExType只是一个customerPaymentProfileId:

<xs:complexType name="customerPaymentProfileExType">
<xs:complexContent>
<xs:extension base="anet:customerPaymentProfileType">
<xs:sequence>
<xs:element name="customerPaymentProfileId" type="anet:numericString" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

如果我提供JSON来匹配上面的规范,我得到这个错误:

{
"refId": "XXXXX",
"messages": {
"resultCode": "Error",
"message": [
{
"code": "E00029",
"text": "Payment information is required."
}
]
}
}

解决方案:defaultPaymentProfile和customerPaymentProfileId必须列在paymentProfile中的支付实体之后。

那么这样做:

"paymentProfile": {
"payment": {
"creditCard": {
"cardNumber": "XXXX1111",
"expirationDate": "2023-12"
}
},
"defaultPaymentProfile": true,
"customerPaymentProfileId": "XXXXX"
},

:

"paymentProfile": {
"defaultPaymentProfile": true,
"customerPaymentProfileId": "XXXXX",
"payment": {
"creditCard": {
"cardNumber": "XXXX1111",
"expirationDate": "2023-12"
}
},
},

最新更新