paypal SoapClient无法正常工作

时间:2010-06-23 00:05:51

标签: php paypal soap-client paypal-soap

我使用PHP的SoapClient类连接到paypal。我有很多问题:

  1. 我传递给肥皂电话的参数是array('ReturnAllCurrencies'=>0, 'Version'=>'63.0'),但正如您在下面的请求中所看到的,63.0被放入<param1>无论是什么。我甚至没有在请求中看到ReturnAllCurrencies。
  2. 在此请求中,我正在执行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&#039;   :期望开始标记,'&lt;'   找不到

    此外,如果我尝试访问FireFox(https://api.paypal.com/2.0/)中的生产证书网址,我会收到ssl_error_handshake_failure_alert

    我是否应该下载wsdl文件并指向SoapClient :: __ construct的第一个参数中的本地版本,或者我应该指向paypal托管的副本?我最初假设后者,但现在我不确定

1 个答案:

答案 0 :(得分:0)

首先,“ReturnAllCurrencies”应该是一个字符串,而不是整数。此外,您需要将GetBalanceRequestType字段包装在GetBalanceRequest元素中以使其工作。有关问题第一部分和工作解决方案的更多信息,请查看此处:

simple php SoapClient example for paypal needed

您问题的第二部分听起来像是Paypal基础架构的临时问题。最佳做法是不使用WSDL的本地副本,而是打开WSDL缓存,让PHP决定何时刷新它。