使用PHP获取TransactionDetails PayPal SOAP API
我被要求使用交易ID通过PayPal API检索买家的电子邮件地址。我可以看到我可以使用GetTransactionDetails函数来实现这一点 我已经设法使用SOAP提供的凭据登录,但是当涉及到运行GetTransactionDetails时,我会出错 这是我的密码:使用PHP获取TransactionDetails PayPal SOAP API,php,soap,paypal,Php,Soap,Paypal,我被要求使用交易ID通过PayPal API检索买家的电子邮件地址。我可以看到我可以使用GetTransactionDetails函数来实现这一点 我已经设法使用SOAP提供的凭据登录,但是当涉及到运行GetTransactionDetails时,我会出错 这是我的密码: $user = "XXXXXX"; $pass = "XXXXXX"; $sign = "XXXXXX"; $socket_context = stream_context_create(array('http' =>
$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>";
它失败的线路是:
$client->__setLocation('https://api-3t.paypal.com/2.0/');
我以前从未使用过PayPal API,我从几个不同的示例中提取了代码,所以如果有人知道更好的方法,那就太好了
注:
- 我已经准备好了登录详细信息、文件位置和TransactionID 对于这个职位李>
- 真正的TransactionID是正确的,我已经在PayPal中仔细检查过了 直接地
- 版本号来自WSDL(它在 (开始)
- 我只添加了$socket\u上下文,因为没有它,它会返回 说“获取http头时出错”
$result = $client->GetTransactionDetails($params);
$client->__setLocation('https://api-3t.paypal.com/2.0/');