2017-05-15 12 views
0

私は、Spring Webサービスを使用したPayPal IPNリスナーの設定に取り組んでいます。私はGoogleで検索しましたが、私はJava実装のための多くの有用なリソースを得ることができませんが、PHPのための多くの例があります。Java Webサービスを使用したPayPal IPNの設定

PayPal定期支払いAPIを使用して、自分のWebアプリケーションの定期支払いオプションを作成しようとしています。私は私のウェブサイトのユーザーのためにいくつかのプレミアムメンバーシップを持っています。私はBilling Plan、Billing Agreementを作成し、Billing AgreementからのApproval URLを使用して、ユーザーからAuthorizeを取得しました。私はIPNリスナにこだわりました。 Spring WebサービスでIPNリスナーを設定する方法はわかりません。 Webアプリケーションに自動更新機能が必要です。ここに私のリスナーです

@RequestMapping(value = "ipn", method = RequestMethod.POST) 
    public @ResponseBody 
    Map<String,Object> IPNListener(HttpServletRequest request, HttpServletResponse response) throws IllegalStateException, IOException { 
     try { 
      HttpClient client = HttpClientBuilder.create().build(); 
      HttpPost post = new HttpPost("https://ipnpb.sandbox.paypal.com/cgi-bin/webscr"); 
      List<NameValuePair> params = new ArrayList<NameValuePair>(); 

      params.add(new BasicNameValuePair("cmd", "_notify-validate")); //You need to add this parameter to tell PayPal to verify 
      for (Enumeration<String> e = request.getParameterNames(); e.hasMoreElements();) { 
       String name = e.nextElement(); 
       String value = request.getParameter(name); 
       params.add(new BasicNameValuePair(name, value)); 
      } 
      post.setEntity(new UrlEncodedFormEntity(params)); 

      HttpResponse resp = client.execute(post); 
      InputStream is = resp.getEntity().getContent(); 
      BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
      String result = ""; 
      String line = null; 
      while ((line = br.readLine()) != null) { 
       result += line; 
      } 
      String rc = result.trim(); 
      logger.info("IPN Listener Result :: " + rc); 
      if ("VERIFIED".equals(rc)) { 
       logger.info("IPN Listener Verified"); 
       // Add Premium Membership for User 
      } 
     } catch (Exception e) { 
      logger.error("IPN Listener Exception "); 
      e.printStackTrace(); 
     } 
     return null; 
    } 

私はWebアプリケーションで非常に多くのユーザーがいます。ここで私は考えていない
どのユーザーの支払いが行われたのかを特定する方法は?
プレミアムメンバーシップを有効にする必要があるユーザーは?
membership_IdとUser_Idを設定して、請求プランまたは請求契約書の作成中にIPNリスナーに戻ることはできますか?

答えて

0

私はこの問題の解決策を得ました。作成したAgreement_Idを使ってuser_idmembership_idを追跡しました。契約を締結した後、Agreement_Idmembership_iduser_idをデータベースに保存しました。 IPNリスナーでRecurring_Payment_Idという名前のAgreement_Idを取得します。データベースを照会してuser_idmembership_idAgreement_idとします。これが誰かを助けるかもしれないことを望みます。

関連する問題