2010-06-23 15 views
0

J'utilise la classe SoapClient de PHP pour se connecter à paypal. J'ai un certain nombre de problèmes:paypal SoapClient ne fonctionne pas

  1. Les paramaters je passe à l'appel de savon sont array('ReturnAllCurrencies'=>0, 'Version'=>'63.0') mais comme vous pouvez le voir dans la demande ci-dessous, 63.0 est mis en <param1> tout ce qui est. Je ne vois même pas ReturnAllCurrencies dans la requête.

Dans cette demande je joue une commande 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> 

Je trouve la demande ci-dessus via SoapClient :: __ getLastRequest(). Il ne ressemble pas exactement à l'exemple sur le site paypal. Qu'y a-t-il avec l'étiquette GetBalanceReq? Pourquoi at-il le suffixe * Req?

2.Quand en utilisant les fichiers du serveur de production et wsdl, je reçois une erreur php:

SOAP-ERROR: Parsing WSDL: Couldn't load from ' https://www.paypal.com/wsdl/PayPalSvc.wsdl&#039 ; : Start tag expected, '<' not found

En outre, si je tente de visiter l'URL du certificat de production dans FireFox (https://api.paypal.com/2.0/) Je reçois un ssl_error_handshake_failure_alert

Suis-je censé télécharger le fichier wsdl et pointer vers une version locale dans le premier argument de SoapClient :: __ construct ou suis-je simplement supposé pointer vers la copie paypal hébergée? J'ai initialement supposé ce dernier, mais maintenant je ne suis pas sûr

Répondre

0

Premièrement, "ReturnAllCurrencies" devrait être une chaîne, pas un nombre entier. En outre, vous devez envelopper les champs GetBalanceRequestType dans un élément GetBalanceRequest pour qu'il fonctionne. Pour plus d'informations en ce qui concerne la première partie de votre question ainsi que d'une solution de travail, regardez ici:

simple php SoapClient example for paypal needed

La deuxième partie de votre question ressemble à un problème temporaire avec l'infrastructure Paypal. La meilleure pratique consiste à NE PAS utiliser une copie locale du WSDL mais à activer la mise en cache WSDL et laisser PHP décider quand l'actualiser.