2015-10-15 199 views
0

在PayPal的API文檔頁面上有以下命令。Curl命令通過SSH工作,但不通過PHP

curl -s --insecure -H "X-PAYPAL-SECURITY-USERID: caller_1312486258_biz_api1.gmail.com" -H "X-PAYPAL-SECURITY-PASSWORD: 1312486294" -H "X-PAYPAL-SECURITY-SIGNATURE: AbtI7HV1xB428VygBUcIhARzxch4AL65.T18CTeylixNNxDZUu0iO87e" -H "X-PAYPAL-REQUEST-DATA-FORMAT: JSON" -H "X-PAYPAL-RESPONSE-DATA-FORMAT: JSON" -H "X-PAYPAL-APPLICATION-ID: APP-80W284485P519543T" https://svcs.sandbox.paypal.com/AdaptivePayments/Pay -d "{\"actionType\":\"PAY\", \"currencyCode\":\"USD\", \"receiverList\":{\"receiver\":[{\"amount\":\"1.00\",\"email\":\"[email protected]\"}]}, \"returnUrl\":\"http://www.example.com/success.html\", \"cancelUrl\":\"http://www.example.com/failure.html\", \"requestEnvelope\":{\"errorLanguage\":\"en_US\", \"detailLevel\":\"ReturnAll\"}}" 

通過SSH運行此命令會產生成功響應。

我試圖讓這個確切的命令通過PHP CURL運行,但不斷收到錯誤消息,說明API憑據不正確。因爲這顯然不是這種情況(否則上述命令會產生類似的響應)除了我的代碼有問題之外,我不能得出任何結論,但是現在幾天來一直困擾着我的錯誤:

$baseurl = 'https://svcs.sandbox.paypal.com/AdaptivePayments/Pay'; 

define('PAYPAL_API_USER', 'caller_1312486258_biz_api1.gmail.com'); 
define('PAYPAL_API_PWD', '1312486294'); 
define('PAYPAL_API_SIGNATURE', 'AbtI7HV1xB428VygBUcIhARzxch4AL65.T18CTeylixNNxDZUu0iO87e'); 
define('PAYPAL_API_APPLICATION_ID', 'APP-80W284485P519543T'); 

$returnurl = "http://www.returnurl.net"; 
$cancelurl = "http://www.cancelnurl.net"; 

$data = array(
    "actionType" => "PAY", 
    "currencyCode" => "USD", 
    "receiverList" => array(
     "receiver" => array(
      array(
       "amount" => "1.00", 
       "email" => "[email protected]" 
      ), 
     ) 
    ), 
    "returnUrl" => $returnurl, 
    "cancelUrl" => $cancelurl, 
    "requestEnvelope" => array(
     "errorLangauge" => "en_US", 
     "detailLevel" => "ReturnAll", 
    ) 
); 

$headers = array(
    "X-PAYPAL-SECURITY-USERID: ".PAYPAL_API_USER, 
    "X-PAYPAL-SECURITY-PASSWORD: ".PAYPAL_API_PWD, 
    "X-PAYPAL-SECURITY-SIGNATURE: ".PAYPAL_API_SIGNATURE, 
    "X-PAYPAL-SECURITY-REQUEST-DATA-FORMAT: JSON", 
    "X-PAYPAL-SECURITY-RESPONSE-DATA-FORMAT: JSON", 
    "X-PAYPAL-SECURITY-APPLICATION-ID: ".PAYPAL_API_APPLICATION_ID, 
); 

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $baseurl); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, json_encode($data)); 
curl_setopt ($ch, CURLOPT_HEADER, $headers); 
print_r(curl_exec($ch)); 

任何人都可以發現此代碼有什麼問題嗎?

再一次,我必須強調,這完全是PHP CURL問題,而不是Paypal問題。

+1

你不應該包括您的安全密鑰/密碼....這是一個公開的論壇.. – Darren

+0

達倫 - 這些都是一個PayPal文檔頁面上公佈公立:https://開頭開發商.paypal.com /文檔/經典/自適應支付/ gs_AdaptivePayments /。我當然絕不會發布我自己的 –

+0

只是看着我的朋友:-) – Darren

回答

4

嗯,嘗試:

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 

使用CURLOPT_HTTPHEADER代替CURLOPT_HEADERCURLOPT_HEADER只是一個標誌,如果你想在輸出中看到響應的標題,你可以使用它。

來源:http://php.net/manual/ro/function.curl-setopt.php

+0

這就做到了! :) –

相關問題