我正在使用PHP的Soapclient类来连接到PayPal。我有很多问题:

  1. 我传递给肥皂调用的参数器是 array('ReturnAllCurrencies'=>0, 'Version'=>'63.0') 但是如您在下面的请求中看到的那样, 63.0 被放入 <param1> 不管是什么。我什至看不到请求中的返回货币。

在此请求中,我正在执行 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'; :启动标签预期,'<'找不到

此外,如果我尝试访问Firefox中的生产证书URL(https://api.paypal.com/2.0/)我得到一个ssl_error_handshake_failure_alert

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

没有正确的解决方案

其他提示

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

需要PayPal的简单php肥皂示例

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top