paypal統合時にIPNを受信できません
1.標準の統合方法を使用して支払いボタンをクリックします(すでに成功しています)
2.返品は可能です。
3.IPNが受信できません。 。 。ただし、販売者のアカウント設定では、IPN が送信されていることがわかります。
4. サンドボックス環境
//PayPal から POST 情報を読み取り、変数を追加します?cmd?
$req = ' cmd= _notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(stripslashes($value));
$req .= "&$key =$ value";
}
//IPN 情報が受信されたかどうかを確認するために、受信した情報をログ ファイルに記録することをお勧めします
//検証のために情報を PayPal に POST して戻します
$header .= "POST /cgi-bin/webscr HTTP/1.0rn";
$header .= "Content-Type:application/x-www-form-urlencodedrn";
$header .= "Content -Length :" . strlen($req) ."rnrn";
//サンドボックスの場合、次のように設定します:
$fp = fsockopen('www.sandbox.paypal.com',80,$errno, $ errstr,30);
//$fp = fsockopen ('www.paypal.com', 80, $errno, $errstr, 30);
// POST 変数をローカル変数に記録します
//支払い詳細のすべての変数は参照できます:
//https://www.paypal.com/IntegrationCenter/ic_ipn-pdt-variable-reference.htm
$item_name = $_POST['item_name'] ;
$item_number = $_POST['item_number'];
$payment_status = $_POST['payment_status'];
$payment_amount = $_POST['mc_gross']; _POST['mc_currency'];
$txn_id = $_POST['txn_id'];
$receiver_email = $_POST['payer_email']; 🎜>//…
//応答 POST が正常に作成されたかどうかを判断します
if (!$fp) {
//HTTP エラー
}else {
//応答 POST を書き込みますinformation SOCKET port
fputs ($fp, $header .$req);
//POST に返信するための PayPal の認証情報の受け入れを開始します information
while (!feof($fp)) {
$ res = fgets ($fp, 1024);
//認証済み
if (strcmp ($res, "VERIFIED") == 0) {
@$fp = fopen(" aaa .txt","w");
if(!$fp){
echo "システム エラー";
exit();
}else {
fwrite($fp, " Complete");
fclose($fp);
}
//支払いステータスを確認します
//txn_id が処理されたかどうかを確認します
// receiver_email は PayPal アカウントのあなたの EMAIL アドレスです
//支払い金額と通貨単位が正しいかどうかを確認します
//データベースへの書き込みを含め、この支払いを処理します
}else if (strcmp ($res, " INVALID") == 0) {
//認証に失敗しました。コーディングエラーまたは不正な POST である可能性があります
@$fp = fopen("bbb.txt","w");
if(!$fp) {
echo "システム エラー";
exit();
}else {
fwrite($fp,"Error");
fclose($fp );
}
}
}
fclose ($fp);
}
?>
-- ----解決策 --------------------
PHP コード
//セッション開始();
$req = 'cmd=_notify-validate';
foreach ($_POST as $key => $value) {
$value = urlencode(ストリップスラッシュ($value));
$req .= "&$key=$value";
}
$url='https://www.paypal.com/cgi-bin/webscr';
$curl_result=$curl_err='';
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " .strlen($req)));
curl_setopt($ch, CURLOPT_HEADER , 0);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_TIMEOUT, 3000);
$curl_result = @curl_exec($ch);
$curl_err =curl_error($ch);
カール_クローズ($ch);
$mc_gross = $_POST['mc_gross']; <div class="clear"></div>
ログイン後にコピー