2013-03-31 130 views
21

我试图按照Paypal API文档所述的“第一次调用”。这就是我下面提供的示例:使用PHP和cURL的PayPal API

curl https://api.sandbox.paypal.com/v1/oauth2/token \ 
-H "Accept: application/json" \ 
-H "Accept-Language: en_US" \ 
-u "EOJ2S-Z6OoN_le_KS1d75wsZ6y0SFdVsY9183IvxFyZp:EClusMEUk8e9ihI7ZdVLF5cZ6y0SFdVsY9183IvxFyZp" \ 
-d "grant_type=client_credentials" 

我已经建立了一个卷曲例如PHP中的所有从最后一个上面除了标头。 -d标志在PHP中将其转换为卷曲选项是什么?据我所知,这里几乎没有解释。我设法推导出-uCURLOPT_USERPWD

回答

65

围绕我进行了良好的拖网,我将来自开发人员的部件与其他问题拼凑在一起。我成功地获得我的访问令牌使用下面的代码:

<?php 

$ch = curl_init(); 
$clientId = "myId"; 
$secret = "mySecret"; 

curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/oauth2/token"); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$secret); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); 

$result = curl_exec($ch); 

if(empty($result))die("Error: No response."); 
else 
{ 
    $json = json_decode($result); 
    print_r($json->access_token); 
} 

curl_close($ch); 

?> 
+1

不幸的是,好像Paypal已经从Github上删除了他们的REST API curl示例。 –

+1

这是完美的拯救了我的生活。 –

+1

tnkx哥们你救了我的时间和生命也 –

2

@Lee点以正确的方式,但如果u使用老版本的PHP它不会工作。但李版本不会显示错误。改用这些,我只添加错误部分,看看发生了什么。

$ch = curl_init(); 
$clientId = ""; 
$secret = ""; 

curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/oauth2/token"); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_POST, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$secret); 
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); 

$result = curl_exec($ch); 
$err = curl_error($ch); 

$access_token=""; 
if ($err) { 
    echo "cURL Error #:" . $err; 
} 
else 
{ 
    $json = json_decode($result); 
    // print_r($json->access_token); 
    $access_token = $json->access_token; 
} 

如果妳有老版本的PHP是更多钞票它不会工作,它会显示这个错误:

cURL Error #:error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure 

就栈溢出了! Here they discuss the problem

+0

你可能应该提出一个编辑。我会更新我的答案,将您的错误处理考虑在内。 – Lee

+0

你是对的随意编辑 – Catluc