サンドボックスを使用してペイパル支払いを実装しようとしていますが、IPN URL を呼び出し/到達/実行できない理由がわかりません。
フォーラムを読んでいくつかの解決策を試しましたが、問題の解決に役立つものは何もないようです。
この単純なフォーム コードを取得しました。
<form action=" https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" name="form2" id="form2">
<input name="first_name" required="" size="40" type="text">
<input name="last_name" required="" size="40" type="text">
<input name="email" size="40" type="email">
<input name="item_name" size="40" type="text" value="Test Item">
<input name="amount" type="hidden" value="0.01">
<input name="cmd" type="hidden" value="_xclick">
<input name="business" type="hidden" value="test-seller8@test.co.uk">
<input name="notify_url" type="hidden" value="http://myurl.com/ipn.php">
<input name="return" type="hidden" value="http://myurl.com/result.php">
<input name="currency_code" type="hidden" value="GBP">
<input name="no_shipping" type="hidden" value="1">
<input type="submit" value="Pay now!">
</form>
私のフォームは問題ないと思います.paypal支払いにアクセスして、サンドボックスの個人アカウントタイプを使用して支払うことができます。それをクリックすると、正しいページに移動するリターンページにリダイレクトするリンクが表示されます.
問題は、IPN スクリプトが実行されないことです。これは私の IPN のコードです。
if(strcmp($_REQUEST['payment_status'],'Completed') == 0)
{
$fd = fopen(dirname(__FILE__).'/results/payment-result.txt', 'wb');
//dump request to file
fwrite($fd, "### $_REQUEST = ### \n");
fwrite($fd, print_r($_REQUEST, true));
}
else
{
echo 'No direct access';
}
if ステートメントを削除して、支払いステータスが完了しているかどうかを確認しようとしましたが、スクリプトが実行されているかどうかを確認するだけでなく、.txt ファイルも作成されません。また、IPN コードに直接アクセスしてエラーがないかどうかを確認しようとしましたが、問題ないようで、ファイルが作成され、要求変数がログに記録されます。
IPN シミュレーターも使用してみましたが、送信するたびに永遠に読み込まれ、エラーが発生します。
IPN Delivery Failed:I/O error: Connection timed out; nested exception is java.net.ConnectException: Connection timed out
これは私には意味がありません。
今、私はどの部分を見逃したのか、または私のIPNがまったく実行されているという問題を引き起こしているのか、非常に混乱しています.