2016-07-15 2 views
0

this referenceでPayPalが提供するサンプルコードは、わかりやすいすべてのコード例とは明らかに矛盾しています。具体的には、「& cmd = _notify-validate」が先頭であり、最後ではありません。IPNリスナーのコード例は、ドキュメントによって正しくありません。それは...ですか?

次のコードは、最初のテストに合格します。つまり、IPNシミュレータの要求にただ応答します。いったんgruntコードが追加されると、「IPNは送信されず、ハンドシェイクは確認されませんでした。あなたの情報を確認してください。応答。私は限り次のコードをコメントしました

は、適切と思わ:

 protected void Page_Load(object sender, EventArgs e) 
     { 
      mclog.Info("entered PayPalListener Page_Load"); 

      // Commenting out the rest results in a successful handshake etc with the IPN Simulator 

      string strSandbox = "https://www.sandbox.paypal.com/cgi-bin/webscr"; 
      // string strLive = "https://www.paypal.com/cgi-bin/webscr"; 
      mclog.Info(string.Format("strSandBox = [{0}]", strSandbox)); 


      HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strSandbox); 
      req.Method = "POST"; 
      req.ContentType = "application/x-www-form-urlencoded"; 
      byte[] param = Request.BinaryRead(HttpContext.Current.Request.ContentLength); 


      // The following string can have the cmd text at the beginning or end. Both cause the IPN to spit the dummy. 
      string strRequest = "&cmd=_notify-validate&"; 
      strRequest += Encoding.ASCII.GetString(param); 
      // "&cmd=_notify-validate"; 
      req.ContentLength = strRequest.Length; 

      mclog.Info(string.Format("strRequest = [{0}]", strRequest)); 

      //Send the request to PayPal and get the response 
      StreamWriter streamOut = 
       new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII); 
      streamOut.Write(strRequest); 
      streamOut.Close(); 


      StreamReader streamIn = 
       new StreamReader(req.GetResponse().GetResponseStream()); 
      string strResponse = streamIn.ReadToEnd(); 
      streamIn.Close(); 
      mclog.Info(string.Format("strResponse = [{0}]", strResponse)); 



     } 

コードはそうした後ずっと私は私がしなければならない何か他のものがあると仮定検索、正しい表示されます。私の "プロファイル"にIPNを "有効にする"という言葉がありますが、私の開発者アカウントで見つけることができるプロファイルにはそのようなオプションはありません。

私は何日も努力してきましたが、欲求不満のレベルはスケールです。 PayPalのドキュメントが非常に混乱していて、以前の良いアドバイスが古くなっているようですので、いくつかの提案があれば、できるだけ詳しく記述してください。

いくつかのロギング結果は次のとおりです。数年前からJavaサーブレットベースのIPNリスナーを実行しているの私の経験で

2016-07-15 00:02:29:854 W15 INFO MyPayPal.PayPal.PayPalListener.Page_Load.0 entered PayPalListener Page_Load 
2016-07-15 00:02:29:854 W15 INFO MyPayPal.PayPal.PayPalListener.Page_Load.0 Received 
2016-07-15 00:02:29:870 W15 INFO MyPayPal.PayPal.PayPalListener.Page_Load.0 strSandBox = [https://www.sandbox.paypal.com/cgi-bin/webscr] 
2016-07-15 00:02:29:870 W15 INFO MyPayPal.PayPal.PayPalListener.Page_Load.0 strRequest = [payment_type=instant&payment_date=Fri%20Jul%2015%202016%2016%3A32%3A05%20GMT+0930%20%28Cen.%20Australia%20Standard%20Time%29&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&[email protected]&payer_id=TESTBUYERID01&address_name=John%20Smith&address_country=United%20States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San%20Jose&address_street=123%20any%20street&[email protected]&[email protected]&[email protected]&residence_country=US&item_name1=something&item_number1=AK-1234&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=12.34&mc_handling=2.06&mc_handling1=1.67&mc_shipping=3.02&mc_shipping1=1.02&txn_type=cart&txn_id=636818821&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AneSo.zKXXEtrcrzCxSU.y9TEUb1A9u2e-FoPLwAA6kE8qMzV0UNUYV5] 
2016-07-15 00:02:29:870 W15 INFO MyPayPal.PayPal.PayPalListener.Page_Load.0 strRequest = [payment_type=instant&payment_date=Fri%20Jul%2015%202016%2016%3A32%3A05%20GMT+0930%20%28Cen.%20Australia%20Standard%20Time%29&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&[email protected]&payer_id=TESTBUYERID01&address_name=John%20Smith&address_country=United%20States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San%20Jose&address_street=123%20any%20street&[email protected]&[email protected]&[email protected]&residence_country=US&item_name1=something&item_number1=AK-1234&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=12.34&mc_handling=2.06&mc_handling1=1.67&mc_shipping=3.02&mc_shipping1=1.02&txn_type=cart&txn_id=636818821&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AneSo.zKXXEtrcrzCxSU.y9TEUb1A9u2e-FoPLwAA6kE8qMzV0UNUYV5&cmd=_notify-validate] 
2016-07-15 00:45:09:012 W15 INFO MyPayPal.Global.createMCLog.0 ################################### 
2016-07-15 00:45:09:106 W15 INFO MyPayPal.Global.createMCLog.0 MyPayPal v1.0.0.0 Startup 
2016-07-15 00:45:12:700 W15 INFO MyPayPal.PayPal.PayPalListener.Page_Load.0 entered PayPalListener Page_Load 
2016-07-15 00:45:12:715 W15 INFO MyPayPal.PayPal.PayPalListener.Page_Load.0 strSandBox = [https://www.sandbox.paypal.com/cgi-bin/webscr] 
2016-07-15 00:45:12:778 W15 INFO MyPayPal.PayPal.PayPalListener.Page_Load.0 strRequest = [&cmd=_notify-validate&] 
2016-07-15 00:45:12:778 W15 INFO MyPayPal.PayPal.PayPalListener.Page_Load.0 strRequest = [&cmd=_notify-validate&payment_type=instant&payment_date=Fri%20Jul%2015%202016%2017%3A14%3A51%20GMT+0930%20%28Cen.%20Australia%20Standard%20Time%29&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&[email protected]&payer_id=TESTBUYERID01&address_name=John%20Smith&address_country=United%20States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San%20Jose&address_street=123%20any%20street&[email protected]&[email protected]&[email protected]&residence_country=US&item_name1=something&item_number1=AK-1234&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=12.34&mc_handling=2.06&mc_handling1=1.67&mc_shipping=3.02&mc_shipping1=1.02&txn_type=cart&txn_id=952340474&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31Ag-J5Edcf2.K.Ii9C6RoBck3ltT5] 
+0

ServicePointManager.SecurityProtocol =(SecurityProtocolType)3072を追加しました。および\t \t \t ServicePointManager.Expect100Continue = true;現在は「無効」な応答しか得られません。 – David

答えて

1

、検証メッセージ内のパラメータの順序は、違いのわずかなビットがありませんこれは、IPNの文書の多数の記述とは対照的です。

Paypalはサーブレットから検証メッセージを送信するためのJavaコードを提供し、Javaサーブレットは最初に送信された順序でパラメータにアクセスすることができません。

EDIT NBこれは有効ではありません。

strRequest = [&cmd=_notify-validate&payment_type=instant&payment_date=... 

POSTパラメータが&で始めるべきではありません。これは、名前と値のペアの間の区切り文字です。

+0

私はこれを発見したと思うが、PayPalからの応答は毎回同じである。上記のコードは動作しませんが、Web上のいくつかの場所に投稿されたのはC#コードです。 – David

+0

言語は関係ありません。とにかくJavaで再構成できないため、Javaの使用は順序が重要ではないことを証明しているだけです。編集を参照してください。 – EJP

関連する問題