2

PayPal の即時支払い通知の実装に苦労しています。PayPal から IPN リクエストを受け取りましたが、PayPal が要求するフィールドがありません。たとえば、「mc_gross」、「payment_gross」、または「txn_id」はありません。これらのフィールドがすべて欠落している IPN を検証するにはどうすればよいですか?

PayPal のサンドボックス サイトで即時支払い通知 (IPN) シミュレーターを使用すると、まったく異なる IPN が生成されます (もちろん、API ドキュメントに記載されているすべてのフィールドが含まれています)。

私は「Adaptive Payments」API を使用しており、非常に単純な PAY 操作を実行するように設定しています (それ以外の場合は正常に動作します)。SOとインターネットの投稿を一日中読んでいますが、何が問題なのかわかりません。

これは、私の IPN ハンドラーの Request.Params 配列のダンプです (無関係な変数は省略されています)。

payment_request_date => Fri Jan 18 05:50:04 PST 2013
return_url => http://MYHOST/ReturnUrl
fees_payer => EACHRECEIVER
ipn_notification_url => http://MYHOST/PayPal.aspx
sender_email => sender_acc_pre@gmx.net
verify_sign => AoIh-cQwnxZ7nSmfalIL7L182SDTA2JKiIrVnwt.uetdGX.Jw0bG2C1f
test_ipn => 1
transaction[0].id_for_sender_txn => 66X080248E331472D
transaction[0].receiver => some_email_biz@gmx.net
cancel_url => http://MYHOST/CancelUrl
transaction[0].is_primary_receiver => false
pay_key => AP-28U75135KE1302901
action_type => PAY
transaction[0].id => 96E03111D3558372G
memo => This is a sandbox test payment
transaction[0].status => Completed
transaction[0].paymentType => SERVICE
transaction[0].status_for_sender_txn => Completed
transaction[0].pending_reason => NONE
transaction_type => Adaptive Payment PAY
transaction[0].amount => EUR 30.25
status => COMPLETED
log_default_shipping_address_in_transaction => false
charset => windows-1252
notify_version => UNVERSIONED
reverse_all_parallel_payments_on_error => false
ALL_HTTP => HTTP_CONTENT_LENGTH:1102
HTTP_CONTENT_TYPE:application/x-www-form-urlencoded
HTTP_HOST:92.231.161.192

何か案は?

4

1 に答える 1

2

Adaptive Payments IPN は、通常の IPN とは少し異なります。

Adaptive Payments を使用すると、アプリケーションには、受信者アカウントとは別の独自の IPN 通知機能があります。あなたのアプリケーションは、トランザクションが行われたという通知を受け取るだけで、アイテムや価格などについての詳細は何も提供しません。

受信者のアカウントは、表示されると予想されるフィールドを含む別の IPN (構成されている場合) を取得します。

あなたの場合、トランザクション データをデータベースに「保留中」または任意の名前で保存し、トランザクション ID に基づいて受信した IPN データに関連付ける必要があります。

于 2013-01-18T22:49:07.250 に答える