PayPal IPN を使用しています。私は何年も使用してきたスクリプトを使用しており、問題が発生したことはありませんが、現在は MassPay API を使用しており、1 つの要求に 250 を含めています。そのため、送信された IPN データは、私が通常扱うものよりもはるかに大きく、どういうわけかデータが失われています。
IPN スクリプト内で最初に行うことは、POST データをシリアル化し、それを MySQL の TEXT フィールドに保存することです。これを行ってもPHPまたはMySQLからエラーは発生せず、データはテーブルに正常に表示されますが、表示されるものと比較すると、POSTに実際に含まれていたデータのほぼ半分が欠落していますPayPal IPN 履歴ログに記録されます。
生の IPN データを保存する以外に、スクリプト内のすべての MassPay アイテムをループして、支払いを個別に処理しています。これは、IPN内の個々の一括支払いをすべてコンパイルする方法のPHPスニペットです...
// Mass Payments
$i = 1;
$mass_payments = array();
while(isset($_POST['masspay_txn_id_' . $i]))
{
$masspay_txn_id = isset($_POST['masspay_txn_id_' . $i]) ? $_POST['masspay_txn_id_' . $i] : '';
$mc_currency = isset($_POST['mc_currency_' . $i]) ? $_POST['mc_currency_' . $i] : '';
$mc_fee = isset($_POST['mc_fee_' . $i]) ? $_POST['mc_fee_' . $i] : 0;
$mc_gross = isset($_POST['mc_gross_' . $i]) ? $_POST['mc_gross_' . $i] : 0;
$receiver_email = isset($_POST['receiver_email_' . $i]) ? $_POST['receiver_email_' . $i] : '';
$status = isset($_POST['status_' . $i]) ? $_POST['status_' . $i] : '';
$unique_id = isset($_POST['unique_id_' . $i]) ? $_POST['unique_id_' . $i] : '';
$current_payment_data_set = array(
'masspay_txn_id' => $masspay_txn_id,
'mc_currency' => $mc_currency,
'mc_fee' => $mc_fee,
'mc_gross' => $mc_gross,
'receiver_email' => $receiver_email,
'status' => $status,
'unique_id' => $unique_id
);
array_push($mass_payments, $current_payment_data_set);
$i++;
}
繰り返しになりますが、PHP の警告、通知、エラーなどは表示されず、IPN スクリプトは 200 OK の結果で正常に完了しますが、システム内の支払いレコードの半分が本来のように更新されません。どういうわけか、PayPal から得ているものには含まれていません。受信した IPN データに表示されるものは、システムで期待どおりに更新されます。
繰り返しますが、PayPal IPN 履歴を確認すると、欠落していると思われるすべてのデータが IPN に含まれていることがわかります。IPN 履歴の 2 つを比較すると、masspay_txn_id_1 から masspay_txn_id_250 までのすべてのデータが含まれています。すべてに一意の ID などがあります。ただし、私のスクリプトは一意の ID 100 ~ 199 しか見ておらず、txn_type などの他の多くの一般的なものを除外しています。
どこにもエラーが発生していなくても、サーバー設定または POST データを失う原因となるものはありますか?
更新 すべてを含む PayPal IPN History が示したものを取得し、それを PHP スクリプトに配置して、データを IPN リスナーに POST しました。ただし、まだデータが失われているため、サーバーが POST データを切り捨てていますが、警告などは表示されません。これの原因や修正方法に関する情報は見つかりません..??
これに関する情報は大歓迎です。ありがとう!