Я пытаюсь выяснить, как оплатить счет третьей стороны UPS Shipper Account, используя API. Когда я попробую то, что я привел ниже, он не работает! В нем говорится: «В сообщении об ошибке требуется один вариант оплаты за каждую отправку». Кто-нибудь знает, что случилось?
$ShipmentConfirmRequestXML->push('PaymentInformation'); $ShipmentConfirmRequestXML->push('Prepaid'); $ShipmentConfirmRequestXML->push('BillThirdParty'); $ShipmentConfirmRequestXML->element('AccountNumber', 'XXXXX'); $ShipmentConfirmRequestXML->pop(); // end BillShipper $ShipmentConfirmRequestXML->pop(); // end Prepaid $ShipmentConfirmRequestXML->pop(); // end PaymentInformation
Сторонний биллинг не входит в контейнер Prepaid. Конечный результат XML должен выглядеть примерно так, на основе руководства разработчиков API ИБП:
<PaymentInformation> <BillThirdParty> <BillThirdPartyShipper> <AccountNumber>ABC123</AccountNumber> <ThirdParty> <Address> <PostalCode>12345-6789</PostalCode> <CountryCode>US</CountryCode> </Address> </ThirdParty> </BillThirdPartyShipper> </BillThirdParty> </PaymentInformation>
По какой-то причине API-интерфейс ИБП всегда терпит неудачу с выставлением счетов сторонних производителей в тестовом режиме, что дает ошибку Transient 120001, «Система доставки XML недоступна, повторите попытку позже». Отключение режима тестирования устраняет проблему – просто отмените отправку после того, как вы подтвердили, что ваш код работает.
Кроме того, если вы когда-либо вводите неверный код учетной записи для фактурирования сторонних поставщиков, будет возвращена та же ошибка 120001.