PayPal SoapClient не работает

Я использую PHP-класс SoapClient для подключения к PayPal. У меня есть ряд проблем:

  1. Параметры, которые я передаю на мыльный вызов, array('ReturnAllCurrencies'=>0, 'Version'=>'63.0') но, как вы можете видеть в запросе ниже, 63.0 ставится в <param1> что бы это ни было. Я даже не вижу ReturnAllCurrencies в запросе.

В этом запросе я выполняю GetBalance команда:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:ebay:api:PayPalAPI" xmlns:ns2="urn:ebay:apis:eBLBaseComponents">
      <SOAP-ENV:Header>
            <ns1:RequesterCredentials>
                  <ns2:Credentials>
                        <ns2:Username>xxxx</ns2:Username>
                        <ns2:Password>xxx</ns2:Password>
                        <ns2:Signature>xxx</ns2:Signature>
                  </ns2:Credentials>
            </ns1:RequesterCredentials>
      </SOAP-ENV:Header>
      <SOAP-ENV:Body>
            <ns1:GetBalanceReq/>
            <param1>63.0</param1>
      </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Я нашел запрос выше через SoapClient::__getLastRequest(). Это не совсем похоже на пример на сайте PayPal. Что с GetBalanceReq тег? Почему он имеет суффикс *Req?

2.При использовании производственного сервера и файлов wsdl я получаю ошибку php:

SOAP-ERROR: парсинг WSDL: не удалось загрузить со страницы https://www.paypal.com/wsdl/PayPalSvc.wsdl&;;: Ожидается начальный тег, '<' не найден

Кроме того, если я пытаюсь посетить URL-адрес производственного сертификата в FireFox ( https://api.paypal.com/2.0/), я получаю ssl_error_handshake_failure_alert

Я должен загрузить файл wsdl и указать на локальную версию в первом аргументе конструкции SoapClient:: __, или я просто должен указать на размещенную копию PayPal? Я изначально предполагал последнее, но теперь я не уверен

1 ответ

Во-первых, ReturnAllCurrencies должна быть строкой, а не целым числом. Кроме того, вам нужно обернуть поля GetBalanceRequestType внутри элемента GetBalanceRequest, чтобы он работал. Для получения дополнительной информации относительно первой части вашего вопроса вместе с рабочим решением, смотрите здесь:

нужен простой пример php SoapClient для PayPal

Вторая часть вашего вопроса звучит как временная проблема с инфраструктурой Paypal. Рекомендуется НЕ использовать локальную копию WSDL, а включить кэширование WSDL и позволить PHP решить, когда его обновлять.

Другие вопросы по тегам