Pregunta

Estoy utilizando la clase SoapClient de PHP para conectar a paypal. Tengo una serie de problemas:

  1. Los parametros de los que paso a la llamada de jabón son array('ReturnAllCurrencies'=>0, 'Version'=>'63.0') pero como se puede ver en la solicitud a continuación, se pone en 63.0 <param1> cualquiera que sea. Ni siquiera veo ReturnAllCurrencies en la solicitud.

En esta solicitud estoy realizando un comando 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>

He encontrado a través de la solicitud anterior SoapClient :: __ getLastRequest (). No se ve exacly como el ejemplo en la página web de PayPal. ¿Qué pasa con la etiqueta GetBalanceReq? ¿Por qué tiene el sufijo * Req?

2. Cuando el uso de los archivos del servidor de producción y WSDL, me sale un error de PHP:

  

SOAP ERROR: el análisis de WSDL:   No se puede cargar desde   ' https://www.paypal.com/wsdl/PayPalSvc.wsdl';   : Etiqueta de inicio esperado, '<'   No se ha encontrado

Además si trato de visitar la url certificado de producción en Firefox ( https://api.paypal.com /2.0/ ) me sale un ssl_error_handshake_failure_alert

¿Se supone que descargar el archivo WSDL y apuntan a una versión local en el primer argumento de SoapClient :: __ construct o soy simple que supone que el punto a la copia paypal alojado? Originalmente asumí este último, pero ahora no estoy seguro

No hay solución correcta

Otros consejos

En primer lugar, "ReturnAllCurrencies" debe ser una cadena, no es un entero. Además, es necesario para envolver los campos GetBalanceRequestType dentro de un elemento GetBalanceRequest para que funcione. Para obtener más información con respecto a la primera parte de su pregunta, junto con una solución de trabajo, mira aquí:

ejemplo php SoapClient simple para paypal necesario

La segunda parte de sus sonidos de interrogación como un problema temporal con la infraestructura de Paypal. La mejor práctica es no utilizar una copia local del WSDL, pero a su vez el almacenamiento en caché WSDL en PHP y dejar que decida cuándo se actualice.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top