paypal SoapClient no funciona
-
29-09-2019 - |
Pregunta
Estoy utilizando la clase SoapClient de PHP para conectar a paypal. Tengo una serie de problemas:
- 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 en63.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.