4

PayPalが過去数週間にわたって開発者APIにいくつかの変更を加えたため、開発者センターのIPNシミュレーターが期待どおりにテストIPNに応答しなくなったことに気づきました。今、それはメッセージを吐き出している:

「IPN配信に失敗しました:応答を抽出できません:コンテンツタイプが見つかりません」

テストIPN自体実際には問題なく実行されているようです。私のIPNコントローラー(ASP内)はIPNを受信して​​エコーバックし、PayPalは予想どおり「確認済み」で応答しています。

これは単なるシミュレーターのフロントエンドのバグですか、それともここで何かが足りないのですか?私のコードは(私が知る限り)いつものようにContentTypeヘッダーを確実に送信しています:

req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded"; <-- ## HEADER IS PRESENT ##
byte[] param = Request.BinaryRead(HttpContext.Request.ContentLength);
string strRequest = Encoding.ASCII.GetString(param);
strRequest += "&cmd=_notify-validate";
req.ContentLength = strRequest.Length;

Microsoftの開発テストサーバーは(非常にばかげて)ローカルでしかアクセスできないため、IPN要求をローカル開発サーバーに転送するためのプロキシとしてnginxを使用していることに注意してください。これが結果に影響を与える可能性があるかどうかはわかりませんが、PayPalが変更されるわずか1週間ほど前には問題なく機能していました。

よろしくお願いします

4

1 に答える 1

2

いいえ - これは、PayPal から IPN メッセージを受信した後、IPN ハンドラー自体が適切な HTTP 200 応答を返していないようです。シーケンスは次のとおりです。

  1. PayPal が IPN メッセージを送信します
  2. IPN ハンドラが IPN メッセージを受信し、HTTP 200 を返します (応答にデータはありません)。
  3. IPN ハンドラーは POST メッセージを PayPal に送信して確認します。

#2が失敗しているようです。IPN スクリプトをチェックして、IPN メッセージを受信するとすぐに (確認のために IPN を送信する前であっても) 正常な応答が返されることを確認することをお勧めします。

于 2013-03-15T05:01:59.160 に答える