【问题标题】:PayPal IPN Configuration using Java Web Service使用 Java Web 服务的 PayPal IPN 配置
【发布时间】:2017-10-14 00:25:48
【问题描述】:

我正在使用 Spring Web 服务进行 PayPal IPN 侦听器配置。我在 Google 中搜索过,我找不到太多有用的 Java 实现资源,只有很多 PHP 示例。

我正在尝试使用 PayPal Recurring Payment API 为我的 Web 应用程序创建一个定期付款选项。我有一些高级会员资格,因为我的网站用户必须支付一些钱才能订阅会员资格。我创建了一个计费计划、计费协议,并使用计费协议响应中的批准 URL 从用户那里获得授权。我被困在 IPN 侦听器中。我不知道如何在 Spring Web Service 中配置 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 应用程序中有很多用户。这里我不知道
如何识别哪个用户的支付完成了?
我需要哪个用户激活高级会员?
在创建计费计划或计费协议时,有什么方法可以配置 member_Id 和 User_Id 以返回 IPN 侦听器?

【问题讨论】:

    标签: java spring web-services paypal paypal-ipn


    【解决方案1】:

    我得到了这个问题的解决方案。我使用创建的Agreement_Id 来跟踪user_idmembership_id。执行协议后,我将Agreement_Idmembership_iduser_id 存储在我的数据库中。我将在 IPN Listener 中以 Recurring_Payment_Id 的名义获得 Agreement_Id。我将使用Agreement_id 查询我的数据库以获取user_idmembership_id。希望这可以帮助某人。

    【讨论】:

    • paypal 如何知道我的 IPN url 的服务器详细信息?你能解释一下如何设置它。
    • 您必须在 Paypal 开发人员仪表板中设置该 IPN 网址
    猜你喜欢
    • 2016-09-27
    • 2011-12-26
    • 2018-02-21
    • 2015-12-26
    • 1970-01-01
    • 2020-07-14
    • 2017-10-20
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多