【问题标题】:GetTransactionDetails PayPal SOAP API using PHP使用 PHP 的 GetTransactionDetails PayPal SOAP API
【发布时间】:2016-02-09 14:37:31
【问题描述】:

有人要求我通过 PayPal API 使用交易 ID 检索买家的电子邮件地址。我可以看到我可以使用 GetTransactionDetails 函数来执行此操作。

我已经设法使用通过 SOAP 获得的凭据登录,但是在运行 GetTransactionDetails 时,我遇到了错误。

这是我的代码:

$user = "XXXXXX";
$pass = "XXXXXX";
$sign = "XXXXXX";

$socket_context = stream_context_create(array('http' => array('protocol_version'  => 1.0)));
$client = new SoapClient("https://www.paypal.com/wsdl/PayPalSvc.wsdl", array('exceptions' => 0,'stream_context' => $socket_context,'trace' => 1)); 

$params = array(
    "Username" => $user, 
    "Password" => $pass, 
    "Signature" => $sign);

$credentials = new stdClass();
$credentials->Credentials = new SoapVar(
                            $params, 
                            SOAP_ENC_OBJECT, 
                            'Credentials');

$headers = new SoapVar(
           $credentials, 
           SOAP_ENC_OBJECT, 
           'CustomSecurityHeaderType', 
           'urn:ebay:apis:eBLBaseComponents');

$client->__setSoapHeaders(
         new SoapHeader(
             'urn:ebay:api:PayPalAPI', 
             'RequesterCredentials', 
             $headers)
         );

if (is_soap_fault($credentials)) {
    print "SOAP Fault: $credentials->faultcode, $credentials->faultstring<br />";
} else {
    print "logged in";
}

$args = array(
        "Version" => "124.0", 
        "TransactionID" => "12345ABCDE"); 
$GetTransactionDetailsRequest = new stdClass();
$GetTransactionDetailsRequest->GetTransactionDetailsRequest = new SoapVar(
                               $args, 
                               SOAP_ENC_OBJECT, 
                               'GetTransactionDetailsRequestType', 
                               'urn:ebay:api:PayPalAPI');
$params = new SoapVar(
          $GetTransactionDetailsRequest, 
          SOAP_ENC_OBJECT, 
          'GetTransactionDetailsRequest');
$result = $client->GetTransactionDetails($params);
print "<pre>";
print_r($result);
print "</pre>";

这是我运行后看到的错误:

SoapFault Object
(
    [message:protected] => Bad Request
    [string:Exception:private] => 
    [code:protected] => 0
    [file:protected] => /location/to/file.php
    [line:protected] => 42
    [trace:Exception:private] => Array
        (
            [0] => Array
                (
                    [function] => __doRequest
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => XXXXXXXXXXXXXXXXXXXX    
                            [1] => https://api.sandbox.paypal.com/2.0/
                            [2] => 
                            [3] => 1
                            [4] => 0
                        )

                )

            [1] => Array
                (
                    [file] => /location/to/file.php
                    [line] => 42
                    [function] => __call
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => GetTransactionDetails
                            [1] => Array
                                (
                                    [0] => SoapVar Object
                                        (
                                            [enc_type] => 301
                                            [enc_value] => stdClass Object
                                                (
                                                    [GetTransactionDetailsRequest] => SoapVar Object
                                                        (
                                                            [enc_type] => 301
                                                            [enc_value] => Array
                                                                (
                                                                    [Version] => 124.0
                                                                    [TransactionID] => 12345ABCDE
                                                                )

                                                            [enc_stype] => GetTransactionDetailsRequestType
                                                            [enc_ns] => urn:ebay:api:PayPalAPI
                                                        )

                                                )

                                            [enc_stype] => GetTransactionDetailsRequest
                                        )

                                )

                        )

                )

            [2] => Array
                (
                    [file] => /location/to/file.php
                    [line] => 42
                    [function] => GetTransactionDetails
                    [class] => SoapClient
                    [type] => ->
                    [args] => Array
                        (
                            [0] => SoapVar Object
                                (
                                    [enc_type] => 301
                                    [enc_value] => stdClass Object
                                        (
                                            [GetTransactionDetailsRequest] => SoapVar Object
                                                (
                                                    [enc_type] => 301
                                                    [enc_value] => Array
                                                        (
                                                            [Version] => 124.0
                                                            [TransactionID] => 12345ABCDE
                                                        )

                                                    [enc_stype] => GetTransactionDetailsRequestType
                                                    [enc_ns] => urn:ebay:api:PayPalAPI
                                                )

                                        )

                                    [enc_stype] => GetTransactionDetailsRequest
                                )

                        )

                )

        )

    [previous:Exception:private] => 
    [faultstring] => Bad Request
    [faultcode] => HTTP
)

它失败的那一行是:

$result = $client->GetTransactionDetails($params);

我以前从未使用过 PayPal API,并且我从几个不同的示例中抓取了代码,所以如果有人知道更好的方法来做到这一点,那就太好了!

注意事项:

  • 我已经编写了登录详细信息、文件位置和 TransactionID 对于这篇文章。
  • 真实的 TransactionID 是正确的,我在 PayPal 中仔细检查过 直接
  • 版本号来自 WSDL(它在 开始)
  • 我只添加了 $socket_context 因为没有它,它又回来了 说“获取 http 标头时出错”。

【问题讨论】:

    标签: php soap paypal


    【解决方案1】:

    经过大量挖掘,事实证明 API 是默认的沙盒端点!我在调用 SoapClient 后立即将以下代码添加到我的脚本中:

    $client->__setLocation('https://api-3t.paypal.com/2.0/');
    

    现在可以了!

    【讨论】:

      猜你喜欢
      • 2014-09-28
      • 2016-07-10
      • 2013-04-25
      • 2011-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 2014-11-08
      相关资源
      最近更新 更多