#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.