2012-03-31 70 views

回答

1

您可以使用付款數據傳輸(PDT)獲取用戶電子郵件,該工具向您的重定向網址發送名爲tx的GET變量。

tx變量包含一個交易號碼,您可以使用該交易號碼發送到PayPal服務器的發送請求並檢索交易信息。

我上次使用PDT是在一年前,但我相信您的Paypal帳戶中有一個設置,您需要啓用並設置重定向網址才能運行。

下面是描述PDT更詳細一些鏈接:

下面是如何解析發送POST請求到Paypal和解析數據的示例。我只是從一箇舊文件中挖出來的。所以沒有保證它的作品。這是基於一個貝寶用作php的例子的腳本。你可以使用curl,這可能是更好的選擇。我認爲使用fsockopen存在某種安全問題。

//Paypal will give you a token to use once you enable PDT 
$auth_token = 'token'; 

//Transaction number 
$tx_token = $_GET['tx']; 

$payPalUrl = ($dev === true) ? 'ssl://www.sandbox.paypal.com' : 'ssl://www.paypal.com'; 

$req = 'cmd=_notify-synch'; 
$req .= "&tx=$tx_token&at=$auth_token"; 


$header .= "POST /cgi-bin/webscr HTTP/1.0\r\n"; 
$header .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
$header .= "Content-Length: " . strlen($req) . "\r\n\r\n"; 
$fp = fsockopen ($payPalUrl, 443, $errno, $errstr, 30); 

$keyarray = false; 

if ($fp) { 
    fputs ($fp, $header . $req); 

    $res = ''; 
    $headerdone = false; 
    while (!feof($fp)) { 
     $line = fgets ($fp, 1024); 
     if (strcmp($line, "\r\n") == 0) { 
      $headerdone = true; 
     } 
     else if ($headerdone) { 
      $res .= $line; 
     } 
    } 

    $lines = explode("\n", $res); 

    if (strcmp ($lines[0], "SUCCESS") == 0) { 
      //If successful we can now get the data returned in an associative array 
     $keyarray = array(); 
     for ($i=1; $i<count($lines);$i++){ 
      list($key,$val) = explode("=", $lines[$i]); 
      $keyarray[urldecode($key)] = urldecode($val); 
     } 
    } 
} 
fclose ($fp); 
return $keyarray; 
相關問題