Question

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

  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 demande.

Dans cette demande, je suis lançant 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 semble pas exacly comme l'exemple sur le site paypal. Ce qui est avec la balise GetBalanceReq? Pourquoi at-il le suffixe * Req?

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

  

SOAP ERREUR: Parsing WSDL:   Impossible de charger de   « https://www.paypal.com/wsdl/PayPalSvc.wsdl';   : Balise de début prévu, « < »   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 censé simple, le point à la copie paypal hébergé? Je supposais à l'origine ce dernier, mais maintenant je ne suis pas sûr

Pas de solution correcte

Autres conseils

Tout d'abord, « ReturnAllCurrencies » doit être une chaîne, pas un entier. , Vous devez également envelopper les champs GetBalanceRequestType l'intérieur d'un élément GetBalanceRequest pour que cela 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:

exemple simple php SoapClient pour paypal nécessaire

La seconde partie de vos sons question comme un problème temporaire avec l'infrastructure Paypal. La meilleure pratique consiste à ne pas utiliser une copie locale du WSDL, mais pour transformer la mise en cache WSDL et laissez- PHP décider quand le rafraîchir.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top