0

他のユーザーが売りに出したデジタル商品をユーザーが購入できるウェブサイトを構築しています。PayPal Adaptive Paymentsを使用して、お金が(私ではなく)売り手に直接送金されるようにしたい。

支払いは機能していますが、売り手(受け取り側)として自分のPayPalアカウントを使用しない限り、IPNメッセージが表示されません。他のPayPalアカウントが受信者である場合、私のIPNURLはまったくヒットしません。

このシナリオで即時支払い通知を受け取る必要があるかどうか、なぜそれが機能しないのか、または支払いが完了したときにそれを見つけることができる他の方法を教えてください。

アップデート

PayPalにログインしてIPN履歴を見ると、他の受信者への支払いのためにIPNを送信しようとしたことがわかりますが、すべてHTTPステータスコード403を取得しています。自分への支払いのためにIPNを送ろうとしたときもわかります。これはHTTPステータスコード200を取得しました。

そのURLにはアクセス制御がないため、なぜ403応答が返されるのかわかりません。そして、IPNが他の誰かへの支払いの場合にのみ403を取得する理由はわかりません。

Webサーバーのログを見ると、PayPalがIPNレシーバーにアクセスしようとしているのがわかります。支払いが自分宛ての場合を除いて、ほとんどの場合404になります。これは200になります。

173.0.82.126 - - [23/Jun/2012:15:25:00 +1000] "POST /ajax/paypal/AdaptivePayments/ipn.php HTTP/1.0" 404 - "-" "-"
173.0.82.126 - - [23/Jun/2012:15:24:59 +1000] "POST /ajax/paypal/AdaptivePayments/ipn.php HTTP/1.0" 200 - "-" "-"

POSTの本体に基づいてIPNレシーバーへのPOSTを拒否している可能性のあるものがApacheWebサーバーにあるかどうかを確認します。

4

1 に答える 1

0

returnUrlとcancelUrlに「/../」が含まれていることに間違いなく関連していることがわかりました。returnUrlとcancelUrlから「/../」を削除することで問題を解決しました。PayPalのAdaptivePaymentsPHP NVP SDKのサンプルでは「/../」が使用されているため、これらが問題になるとは思いませんでした。「/../」を含む本文でPOSTをブロックしているのは、Apacheのセキュリティ設定である必要があると思いますが、詳しく調べていません。

于 2012-06-24T00:15:40.210 に答える