私は、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リスナーに戻ることはできますか?