簡體   English   中英

Paypal沙盒IPN模擬器 - 沒有得到響應

[英]Paypal Sandbox IPN Simulator - Not getting response

我使用了與paypal完全相同的代碼,並試圖從Payapl Sandbox獲得IPN模擬器的響應。 我已經在我的網站上設置了ipn.php文件,我將獲得IPN響應,它的代碼如下。 我仍然沒有收到任何已驗證或無效狀態的郵件,正如我在下面的代碼中所述。 所以,請讓我知道我的代碼中缺少什么或出了什么問題,以便我可以糾正它。

<?php
$raw_post_data = file_get_contents('php://input');
$raw_post_array = explode('&', $raw_post_data);
$myPost = array();
foreach ($raw_post_array as $keyval) {
$keyval = explode ('=', $keyval);
if (count($keyval) == 2)
    $myPost[$keyval[0]] = urldecode($keyval[1]);
}

$req = 'cmd=_notify-validate';
if(function_exists('get_magic_quotes_gpc')) {
$get_magic_quotes_exists = true;
} 
foreach ($myPost as $key => $value) {        
if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) { 
    $value = urlencode(stripslashes($value)); 
} else {
    $value = urlencode($value);
}
$req .= "&$key=$value"; 
}

$ch = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));

if( !($res = curl_exec($ch)) ) {
// error_log("Got " . curl_error($ch) . " when processing IPN data");
curl_close($ch);
exit;
}
curl_close($ch);

if (strcmp ($res, "VERIFIED") == 0) {
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['receiver_email'];
$payer_email = $_POST['payer_email'];

mail('mymailid@yahoo.com', 'PayPal IPN', 'Working...');
} 
else if (strcmp ($res, "INVALID") == 0) 
{
// log for manual investigation
mail('kra_14_05@yahoo.co.in', 'PayPal IPN', 'NOT Working...');  
}
?>

我試圖在paypal沙箱中使用測試商家和買家帳戶進行測試。 我可以在測試商家帳戶下看到IPN歷史記錄。 在那里我可以看到HTTP響應代碼= 200所以我想我的ipn腳本是由Paypal訪問的。 0.25美元的金額從買方賬戶中扣除並存入商家賬戶,所以我猜這部分工作正常。

現在我已經在單個變量中傳遞了2個值。

<input type="hidden" name="custom" value="mem001::mempass001">

然后我試圖在我的ipn.php(此頁面上的ipn腳本)頁面上接收“custom”變量的值。 使用php函數我將兩個值分開並存儲在不同的變量中。

出於測試目的,我試圖將上面的值存儲在數據庫中,但值不會存儲到數據庫中。

那么到目前為止我到底做了什么錯? 在上述所有流程之后,我怎樣才能確保我真正從IPN獲得“驗證”狀態? 請幫忙。

我首先要檢查服務器上的訪問日志和錯誤日志。 確保您的訪問日志顯示PayPal實際上正在嘗試將數據發布到您的腳本。 如果訪問日志顯示PayPal過帳到您的腳本,則檢查您的錯誤日志以查看是否有任何錯誤被生成。

確保您的服務器配置為所有入站和出站連接,並且您沒有阻止訪問系統的任何內容。 另一種選擇是將其設置在測試沙盒賣家帳戶上,然后通過測試沙盒賣家帳戶進行購買,而不是使用模擬器。 另一方面是,當您通過帳戶並付款時,您將在IPN歷史記錄中記錄IPN。 然后,您可以檢查以確認PayPal是否已將其發送出去。 它還會告訴您服務器是否響應了200ok響應,或者您的服務器是否返回了200ok以外的其他狀態。

我使用了相同的腳本示例,它基於https://www.x.com/developers/PayPal/documentation-tools/code-sample/216623上的腳本,這在過去對我有用。 如果這沒有幫助,請告訴我,我可以嘗試使用您的腳本進行測試,並提取一個發送電子郵件的PHP腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM