【问题标题】:Authorize.Net unable to update expiration dateAuthorize.Net 无法更新到期日期
【发布时间】:2020-09-24 22:38:28
【问题描述】:

我正在尝试通过 Authorize.Net 更新现有配置文件的到期日期。我能够检索配置文件信息,但是当我使用 updateCustomerPaymentProfileRequest xml 调用 api 时,我得到:

E00003 'AnetApi/xml/v1/schema/AnetApiSchema.xsd:number' 元素无效 - 根据其数据类型 'String' 值 XX 无效 - 实际长度小于 MinLength 值。

这是xml:

<updateCustomerPaymentProfileRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
    <merchantAuthentication xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
        <name xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">bob123</name>
        <transactionKey xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">somesecretehere</transactionKey>
    </merchantAuthentication>
    <refId xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">id1</refId>
    <customerProfileId xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">12345</customerProfileId>
    <paymentProfile xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
        <billTo xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
            <firstName xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">Bilbo</firstName>
            <lastName xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">Baggins</lastName>
            <address xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">100 Main St.</address>
            <city xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">Some City</city>
            <state xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">ME</state>
            <zip xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">12345</zip>
        </billTo>
        <payment xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
            <creditCard xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
                <cardNumber xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">XXXX1111</cardNumber>
                <expirationDate xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">2049-04</expirationDate>
            </creditCard>
        </payment>
    </paymentProfile>
    <validationMode xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">liveMode</validationMode>
</updateCustomerPaymentProfileRequest>

【问题讨论】:

  • 那个错误信息真的是XX吗?如果没有,实际价值是多少?
  • 是的,这就是确切的错误信息。
  • 信用卡号好像必须提供,不能截断
  • 这似乎正在发生,但这是来自他们的文档:“注意:如果此请求中的某些字段未提交或以空白值提交,则原始配置文件中的值是已删除。作为防止这种情况发生的最佳做法,请调用 getCustomerPaymentProfileRequest 以接收所有当前信息,包括屏蔽的付款信息。更改您希望更新的一个或多个字段,然后在调用中重复使用您收到的所有字段以及更新更新CustomerPaymentProfileRequest。”
  • 您是否尝试过省略卡号字段?

标签: authorize.net


【解决方案1】:

实际发送的 XML 更像这样:

<updateCustomerPaymentProfileRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
    <merchantAuthentication xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
        <name xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">bob123</name>
        <transactionKey xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">somesecretehere</transactionKey>
    </merchantAuthentication>
    <refId xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">id1</refId>
    <customerProfileId xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">12345</customerProfileId>
    <paymentProfile xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
        <billTo xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
            <firstName xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">Bilbo</firstName>
            <lastName xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">Baggins</lastName>
            <address xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">100 Main St.</address>
            <city xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">The Shire</city>
            <state xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">ME</state>
            <zip xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">12345</zip>
        </billTo>
        <payment xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
            <creditCard xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
                <cardNumber xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">XXXX1111</cardNumber>
                <expirationDate xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">2049-04</expirationDate>
            </creditCard>
        </payment>
        <driversLicense xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">
            <number xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"></number>
            <state xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"></state> 
            <dateOfBirth xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"></dateOfBirth>
        </driversLicense>
        <customerPaymentProfileId xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">999</customerPaymentProfileId>
    </paymentProfile>
    <validationMode xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd">liveMode</validationMode>
</updateCustomerPaymentProfileRequest>

注意空的 driversLicense 元素。数字元素是真正的罪魁祸首。一旦我从 XML 中删除了整个 driversLicense 元素,一切都会按预期工作。仔细检查实际的 XML 是值得的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多