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週間ほど前には問題なく機能していました。
よろしくお願いします