Авторизация.Net не удалось обновить дату истечения срока действия

#authorize.net

#authorize.net

Вопрос:

Я пытаюсь обновить дату истечения срока действия существующего профиля без Authorize.Net . Я могу получить информацию о профиле, но когда я вызываю api с updateCustomerPaymentProfileRequest помощью xml, я получаю:

E00003 Недопустимый элемент ‘AnetApi /xml / v1 / schema/AnetApiSchema.xsd: number’ — значение XX недопустимо в соответствии с его типом данных ‘String’ — фактическая длина меньше значения 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>
  

Комментарии:

1. Действительно ли это сообщение об ошибке говорит XX ? Если нет, то какое значение на самом деле существует?

2. Да, это точное сообщение об ошибке.

3. Похоже, что номер кредитной карты должен быть указан и не может быть усечен

4. Похоже, что это происходит, но это из их документов: «Примечание: если некоторые поля в этом запросе не отправлены или отправлены с пустым значением, значения в исходном профиле удаляются. Для предотвращения этого рекомендуется вызвать getCustomerPaymentProfileRequest, чтобы получить всю текущую информацию, включая информацию о скрытом платеже. Измените поле или поля, которые вы хотите обновить, а затем повторно используйте все полученные поля с обновлениями в вызове updateCustomerPaymentProfileRequest «.

5. Вы пробовали опустить поле номера карты?

Ответ №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. Фактическим виновником был элемент number. Как только я удалил весь элемент driversLicense из XML, все работало, как ожидалось. Стоит перепроверить фактический XML.