2016-07-11 6 views
0

データを送り返す際に、私はINVALIDという応答をPayPalから受け取り続けます。私はこれまで助けてくれなかったので、他にも多くの記事を読んできました。これは私が確認できるものです:IPN通知拒否INVALID

  1. paramsの順番は同じです。
  2. データは、リクエストに先行するcmd=_notify-validate&を除いて同じです。

これは、最大データをポストするためにいくつかの簡単なハックのコードです:

using (WebClient client = new WebClient()) 
{ 
    var nvc = new NameValueCollection { {"cmd", "_notify-validate"} }; 
    foreach (var f in formCollectionData.AllKeys) 
     nvc.Add(f, formCollectionData[f]); 

    try 
    { 
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; 
     client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"; 
     var response = client.UploadValues(_urls[payPalResponse.test_ipn], "POST", nvc); 
     var result = System.Text.Encoding.UTF8.GetString(response); //returns "INVALID" 
    } 
    catch (Exception e) 
    { 
     ; 
    } 
} 

formCollectionDataは(MVCを使用して)私の行動に通って供給されるデータです。これが正しいことをRequest.Form.ToString()のデータを見て確認しました。

私はいくつかの方法を使って投稿を試みましたが、同じINVALIDの結果を得ました。

私はpaypal設定の言語エンコーディングをUTF-8に変更しましたが、IPNシミュレータを使用していますので、これがどのように適用されるかはわかりません。

私は円で回っているようで、何をすべきかわかりません。私はちょうどIPNの歴史に入ると1を再送信し、それが正常に働いていることで、私のサンドボックスのPayPalアカウントからこれを試してみた

EDIT。私は検証済みのステータスを取得します。

これは、IPNシミュレータが正しく動作しないため、エンコーディングと関係があると想定しています。シミュレータのエンコーディングをUTF-8に表示/変更することは可能ですか?

+1

問題をPayPal(https://www.paypal-techsupport.com/)に報告したい場合があります。私の経験に基づいて、IPNシミュレータは、受信したIPNデータに互換性のないエンコーディングが原因で問題を引き起こしました – vandershraaf

答えて

1

同じ問題が発生しました。シミュレータとの間違いのようです。

シミュレータのすべての日付フィールドが空白になるようにクリアしてみてください。フォーム内の特殊文字の一部が問題を引き起こしているようです。

これはIPNシミュレータのバグであり、実際のIPNメッセージは同じように影響を受けません。

+0

これは過去1週間でこれをテストしただけです。それは確かに問題を解決しました。 – webnoob

関連する問題