2014-11-15 40 views
0

晚上好,我一直在玩貝寶IPN和一切接縫是確定的,但它不會插入到我的數據庫。paypal_ipn麻煩插入sql服務器數據庫

我正在使用sql server/mssql2008。

我測試了數據庫連接,看它是否出錯,我沒有得到任何日誌。任何幫助在這裏將不勝感激。

克里斯

define("DEBUG", 1); 
define("USE_SANDBOX", 1); 
define("LOG_FILE", "./ipn.log"); 

$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"; 
} 


if(USE_SANDBOX == true) { 
    $paypal_url = "https://www.sandbox.paypal.com/cgi-bin/webscr"; 
} else { 
    $paypal_url = "https://www.paypal.com/cgi-bin/webscr"; 
} 

$ch = curl_init($paypal_url); 
if ($ch == FALSE) { 
    return FALSE; 
} 

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, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); 

if(DEBUG == true) { 
    curl_setopt($ch, CURLOPT_HEADER, 1); 
    curl_setopt($ch, CURLINFO_HEADER_OUT, 1); 
} 

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close')); 


$res = curl_exec($ch); 
if (curl_errno($ch) != 0) 
    { 
    if(DEBUG == true) { 
     error_log(date('[Y-m-d H:i e] '). "Can't connect to PayPal to validate IPN message: " . curl_error($ch) . PHP_EOL, 3, LOG_FILE); 
    } 
    curl_close($ch); 
    exit; 

} else { 

     if(DEBUG == true) { 
      error_log(date('[Y-m-d H:i e] '). "HTTP request of validation request:". curl_getinfo($ch, CURLINFO_HEADER_OUT) ." for IPN payload: $req" . PHP_EOL, 3, LOG_FILE); 
      error_log(date('[Y-m-d H:i e] '). "HTTP response of validation request: $res" . PHP_EOL, 3, LOG_FILE); 


      list($headers, $res) = explode("\r\n\r\n", $res, 2); 
     } 
     curl_close($ch); 
} 


if (strcmp ($res, "VERIFIED") == 0) { 

    if(DEBUG == true) { 
     error_log(date('[Y-m-d H:i e] '). "Verified IPN: $req ". PHP_EOL, 3, LOG_FILE); 
    } 

    if ($payment_status == "Completed") 
    { 

     if(DEBUG == true) 
     { 
      error_log(date('[Y-m-d H:i e] '). "COMPLETED PAYMENT STATUS"); 
     } 


$database_user = "dbuser"; 
$database_pass = "dbpass"; 
$database_dbo4 = "datebase"; 

$conn4=odbc_connect($database_dbo4,$database_user,$database_pass); 
$account = "testaccountid"; 
$amounttotal = 5; 


$sql = "insert into donation (accountid, amount) VALUES ($account, $amounttotal)"; 


$result = odbc_exec($conn4, $sql); 





    } 
} else if (strcmp ($res, "INVALID") == 0) { 

    if(DEBUG == true) { 
     error_log(date('[Y-m-d H:i e] '). "Invalid IPN: $req" . PHP_EOL, 3, LOG_FILE); 
    } 
} 
+0

當我設置生活時,它會出現VERIFIED並將其寫入日誌文件。我需要它完成,因爲這是我的數據庫條目。 任何想法如何使這繼續將是有益的:) –

回答

0

我跑了後續代碼在我的聽衆的最頂端

ini_set('display_errors', 1); error_reporting(E_ALL); 

我然後手動運行聽者在Firefox和它在數據庫設置錯誤,我有一個問題與用戶名...... Doh。

我隨後發現它仍然不會插入但也有一些玩弄我發現這個在我的代碼

if (strcmp ($res, "VERIFIED") == 0) { 

    if(DEBUG == true) { 
     error_log(date('[Y-m-d H:i e] '). "Verified IPN: $req ". PHP_EOL, 3, LOG_FILE); 
    } 

// IF USING EBAY AND A WEBSITE TO SELL GOODS THEN YOU NEED TO ENSURE THE PAYMENT STATUS IS COMPLETED AND DETERMINE WHICH CHANNEL SENT THE REQUEST 
// USE CUSTOM FIELD TO DETERMINE WHAT SENT THE PAYMENT 
//$payment_status = $_POST['payment_status']; 
// $custid = $_POST["custom"]; 
// $txn_type = $_POST["txn_type"]; 
// $item_name = $_POST['item_name1']; 

我所做的只是從

//$payment_status = $_POST['payment_status']; 

刪除//現在一切都工作,我可以做我自己的檢查!

希望這個答案可以幫助其他人。

謝謝