2016-05-21 7 views
0

これに対する答えはStackoverflowのすべての質問ではないにしても多くの質問がありますが、見つけられませんでした。PayPal IPN CURLとPHPを使用したINVALIDの結果

PayPal IPNに問題があります。私はsanboxとIPN Simulatorを使ってテストしています。また、PHPとcURLを使用してPayPalからの応答を検証しています。しかし、私は応答の唯一の結果を得ています。私は検証されていないようです。

私はPayPalに完全なURLを返信していないという問題があると思います。 IPNリスナーのための私のコードを見ることができます:

<?php 

require_once('../includes/main.php'); 

// Prepare the URL to send via cURL 
$req = 'cmd=_notify-validate'; 
if(function_exists('get_magic_quotes_gpc')) { 
    $get_magic_quotes_exists = true; 
} 
foreach ($_POST 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"; 
} 

// Initial cURL 
$ch = curl_init(); 

// Set opt 
curl_setopt($ch,CURLOPT_URL,"https://www.sandbox.paypal.com/cgi-bin/webscr"); 

//curl_setopt($ch,CURLOPT_URL,"https://www.paypal.com"); 
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); 

// Return result 
$result = curl_exec($ch); 

// Close cURL connection 
curl_close($ch); 

// If condition 
if(strpos($result, "VERIFIED") != false){ 
    mysql_query("INSERT INTO paypal_ipn (ipn_message, verification) VALUES ('{$request}', '{$result}')"); 
}else{ 
    mysql_query("INSERT INTO paypal_ipn (ipn_message, verification) VALUES ('{$request}', '{$result}')"); 
}?> 
+0

URLを比較する方法が分かっている場合は、この問題を解決する可能性があります。しかし、URLを取得する方法はわかりません。 – FarrisFahad

+0

あなたは 'var_dump($ result)'をして、その中の内容を見ましたか? – frz3993

+0

@ frz3993私はちょうどそれを行い、 'var_dump'はNULLに等しいです。結果はまだ無効です – FarrisFahad

答えて

1

私はそれを最後に考え出しました。 INVALIDの問題は送信されたTIMEがGMT + 3で無効になったためです。 + 3を使わずにGMTに変更した後、VERIFIEDに戻りました。

GMT + 3を使用したときにINVALIDに戻ったのはなぜですか?GMT + 3で動作させるにはどうすればよいですか?

+0

これはうまくいくとは思えません。これは2日間の絶え間ない不満、cUrlオプションの変更などを行い、シミュレータの最終版は "GMT + 0100"を削除しただけです。ペイパル? – Andy

+0

@Andyあなたが答えを見つけたことを聞いてうれしいです。当時は2日もかかっていました。どういたしまして。 – FarrisFahad