サイトで単純な Web トランザクションを行った後、IPN ハンドラーは「完了」と予想された 1 つのヒットだけでなく、2 つのヒットを受け取ります。それぞれ別のデータで。最初は次のようになります。
stdClass Object
(
[transaction] => Array
(
[0] => stdClass Object
(
[invoiceId] => PVIFmMOZTm2xkjbs
[id_for_sender_txn] => 3M760109N8943254L
[receiver] => me@gmail.com
[is_primary_receiver] => false
[id] => 08B29244UF9480324
[status] => Completed
[paymentType] => GOODS
[status_for_sender_txn] => Completed
[pending_reason] => NONE
[amount] => GBP 50.00
)
)
[payment_request_date] => Wed Sep 18 12:55:36 PDT 2013
[return_url] => http://mysite.com/checkout/paypal-overlay-state/complete
[fees_payer] => EACHRECEIVER
[ipn_notification_url] => http://mysite.com/ipn
[sender_email] => buyer@gmail.co.uk
[verify_sign] => AFcWxV21C7fd0v3bYYYRCpSSRl31ASUp2KT0F-R3d2QqGIzfWpkS.gWz
[test_ipn] => 1
[cancel_url] => http://mysite.com/checkout/paypal-overlay-state/cancel
[pay_key] => AP-4V279017Y7501703X
[action_type] => PAY
[memo] => SOMETHING
[transaction_type] => Adaptive Payment PAY
[tracking_id] => PVIFmMOZTm2xkjbs
[status] => COMPLETED
[log_default_shipping_address_in_transaction] => false
[charset] => windows-1252
[notify_version] => UNVERSIONED
[reverse_all_parallel_payments_on_error] => false
)
2番目は次のようになります。
stdClass Object
(
[mc_gross] => 50.00
[invoice] => PVIFmMOZTm2xkjbs
[protection_eligibility] => Ineligible
[payer_id] => NRQL7RKB54XWY
[tax] => 0.00
[payment_date] => 12:57:41 Sep 18, 2013 PDT
[payment_status] => Completed
[charset] => windows-1252
[first_name] => Ashley
[mc_fee] => 1.90
[notify_version] => 3.7
[custom] =>
[payer_status] => unverified
[business] => me@gmail.com
[quantity] => 0
[verify_sign] => AFcWxV21C7fd0v3bYYYRCpSSRl31AJGmBkDrCSx-mp-dKf5.Wc6co3ra
[payer_email] => payer@gmail.co.uk
[memo] => SOMETHING
[txn_id] => 08B29244UF9480324
[payment_type] => instant
[last_name] => Ward
[receiver_email] => me@gmail.com
[payment_fee] =>
[receiver_id] => XSSCKHZJZRBDQ
[txn_type] => web_accept
[item_name] =>
[mc_currency] => GBP
[item_number] =>
[residence_country] => GB
[test_ipn] => 1
[receipt_id] => 2722-5250-1650-6726
[transaction_subject] =>
[payment_gross] =>
[ipn_track_id] => a503d9ea64b1e
)
このデータをどのように理解すればよいですか? なんで2ヒットなの?そして、私が注意する必要があるのはどれですか?
表示されている配列は、各リクエストの PHP $_POST 配列を直接出力したものです。タイムスタンプから、1 つの IPN が 2 番目の IPN より少し前に到着することがわかります。
編集:
最初の配列 (最初の IPN ヒット) は、Adaptive Payments API を使用しているときに取得する追加の領収書であることがわかりました。
ほとんどのユースケースでは、2 番目の IPN ヒットには必要な有用なデータがすべて含まれているため、これは無視できると思います。
1 つの注意点は、より便利な 2 番目の IPN 配列が最初の配列の 2 分後に表示されることです。最初の IPN ヒットは支払いが処理された直後に到着しますが、2 番目のヒットはこの 2 分後まで来ません...これがなぜなのかわかりません...
ありがとう!