2011-12-01 45 views
0

我正在使用php和paypal創建預訂系統。現在,隨着沙盒測試,Paypal用信用卡付款時無效IPN

當我嘗試與測試買入賬戶付款,IPN是「有效」,但是當嘗試支付用信用卡(測試)的IPN返回「無效」

爲什麼那?

所有字段都正確接收到IPN腳本頁面。

付款在PayPal沙箱帳戶上正確收到時,檢查付款時。

下面是代碼:

$req = 'cmd=_notify-validate'; 
foreach ($_POST as $key => $value) { 
    $value = urlencode(stripslashes($value)); 
    $req.= "&$key=$value"; 
    $ipn_content.= "$key=$value"; 
} 

// post back to PayPal system to validate 
$header=""; 
$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('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); 


$VERIFIED=FALSE; 

if (!$fp) { 
// HTTP ERROR 
} else { 

    fputs ($fp, $header . $req); 
    while (!feof($fp)) { 
     $res = fgets ($fp, 1024); 
     if (strcmp ($res, "VERIFIED") == 0) { 
      // check the payment_status is Completed 
      // check that txn_id has not been previously processed 
      // check that receiver_email is your Primary PayPal email 
      // check that payment_amount/payment_currency are correct 
      // process payment 
      $VERIFIED=TRUE; 
     }else if (strcmp ($res, "INVALID") == 0) { 
      // log for manual investigation 
     } 

    }   

} 
fclose ($fp); 

echo $VERIFIED; 

if($VERIFIED!=TRUE){ 
    exit; 
} 

//continue....... 

回答

0

貝寶信用卡付款似乎不發送$資源變量。 請使用payement_status post變量。

$payment_status = $_POST['payment_status']; 
if (strcmp ($payment_status, "Completed") == 0){ 
    //ok 
} else { 
    //not ok 
} 
+0

您的答案看起來像與所提供的代碼完全無關。 – Sven