5

支払いのアプリケーションで、paypal 支払いゲートウェイ IPN を使用しています。

支払いが正常に完了すると、IPN 応答が正しく受信されます。

受け取り後、確認のため返送します。

$ch = curl_init();

$paypalUrl = PAYPAL_URL;
curl_setopt($ch, CURLOPT_URL, $paypalUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_field); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$res = curl_exec($ch);

現在、同じ IPN 応答を複数回 (正確には約 9 回) 受信しています。検証用の IPN 応答を次の形式で送信しています。

    cmd=_notify-validate&orderUUID=eac962fe-3a0a-4b26-be89-e5ccf54ee2cb&
    mc_gross=15.00&settle_amount=11.58&
     protection_eligibility=Ineligible&payer_id=LR3LZ8R978ZK8&tax=0.00
    &payment_date=06%3A55%3A17+Jun+05%2C+2013+PDT&payment_status=Completed
  &charset=windows1252&first_name=abc&option_selection1=&option_selection2=&
 mc_fee=0.74&exchange_rate=0.812061&notify_version=3.7
  &settle_currency=USD&custom=&payer_status=verified&business=business%40mydomain.com
  &quantity=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AlU7JAwS8--HoB6lJfimizlVxnVa&payer_email=personal%40mydomain.com&option_name1=tour&option_name2=abc+abc&txn_id=6RU07240YB682730C&payment_type=instant&last_name=abc&receiver_email=business%40mydomain.com&payment_fee=&receiver_id=LW9JSM57BYH5Q&txn_type=web_accept&item_name=ite  m+name&mc_currency=AUD&item_number=&residence_country=US&test_ipn=1&handling_amount=0.00 &transaction_subject=item+reserva!tion+for+1+spaces+on+Jun+06&payment_gross=&shipping=0.00&ipn_track_id=b85bc954da9e5

同じ応答を複数回受信する理由は何ですか?

私がそれに従っていたので、IPN 応答のために 200 OK をペイパルに送信する必要があります。ペイパルが 200 OK を取得しない場合、再試行します... 同じですか?

4

3 に答える 3

3

ここで私は一つのことを経験しました。元のホスト名が abc.com で、その上に 1 つのテスト インスタンスを作成したとします。新しいホスト名は testing.abc.com になります。上記の問題が発生しているテスト インスタンスからトランザクションを実行していたとき (IPN 応答を複数回受信)。応答を正しく処理しました (つまり、この重複した応答または新しい応答をチェックしました)。今、私のアプリケーションは実稼働環境に移動され、私のホスト名は abc.com で、すべて正常に動作しています!! (IPN 応答の受信は 1 回のみ)。同じ応答を複数回送信しようとしていたため、paypal はテスト インスタンスから成功ステータスを受信できなかったと思います。

于 2014-01-27T05:23:05.573 に答える