使用 Java 在 Web 应用程序中集成 Paypal

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/7991771/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-30 22:35:16  来源:igfitidea点击:

Integrate Paypal in Web Application using Java

javapaypal

提问by Anand Soni

I want to integrate paypal in my web application. I am using RESTEasy API for restful requests. I want to know that how to integrate paypal in my application. I have dowonloaded paypal java sdk from their web site but right now I have no good applicaion which will help me to integrate paypal in my app. Can anybody suggest any site which shows step by step inegration of paypal in website or simple to understand ?

我想在我的网络应用程序中集成贝宝。我正在使用 RESTEasy API 来处理静态请求。我想知道如何在我的应用程序中集成贝宝。我已经从他们的网站下载了 paypal java sdk,但现在我没有好的应用程序可以帮助我将 paypal 集成到我的应用程序中。任何人都可以推荐任何显示网站中贝宝逐步集成或易于理解的网站吗?

采纳答案by Joachim Rohde

Paypal offers a few examplesand even a wizardthat generates you some code.

Paypal 提供了一些示例,甚至提供了一个为您生成一些代码的向导

回答by Ravi Kant

We have to follow the below step for configuring paypal in java web application.Here i have shown the configuration for Paypal to Paypal and CreditCard to Paypal payment.

我们必须按照以下步骤在 Java Web 应用程序中配置 Paypal。这里我展示了 Paypal 到 Paypal 和 CreditCard 到 Paypal 付款的配置。

1.create one sandbox account.
2.create web application.
3.Integrate the following struts2 action with your code.If you want to use with any other then just take methods and use directly.

1.创建一个沙箱帐户。
2.创建网络应用程序。
3.将下面的struts2动作与你的代码集成。如果你想与其他任何一起使用,那么只需取方法并直接使用。

public class PaypalAction extends ActionSupport implements SessionAware {


    private static final long serialVersionUID = 1L;
    private String resultString;
    private String token;

    @SuppressWarnings("rawtypes")
    private Map finalMap = new HashMap();

    public void paypalPay() {
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();
        Integer payPercent = 10;     
        Map result = new HashMap();
        String data1 = "";

        try {
            data1 = URLEncoder.encode("USER", "UTF-8") + "="+ URLEncoder.encode("Sandbox UserName","UTF-8");
            data1 += "&" + URLEncoder.encode("PWD", "UTF-8") + "="+ URLEncoder.encode("Sandbox Password", "UTF-8");
            data1 += "&" + URLEncoder.encode("SIGNATURE", "UTF-8") + "="+ URLEncoder.encode("Sandbox Signature","UTF-8");
            data1 += "&" + URLEncoder.encode("METHOD", "UTF-8") + "="+ URLEncoder.encode("SetExpressCheckout", "UTF-8");

            data1 += "&" + URLEncoder.encode("RETURNURL", "UTF-8") + "=" + URLEncoder.encode(request.getRequestURL().toString().replaceAll(request.getServletPath(), "") + "/successPage","UTF-8");
            data1 += "&" + URLEncoder.encode("CANCELURL", "UTF-8") + "="+ URLEncoder.encode(request.getRequestURL().toString().replaceAll(request.getServletPath(), "") + "/failurePage",   "UTF-8");

            data1 += "&" + URLEncoder.encode("VERSION", "UTF-8") + "="+ URLEncoder.encode("104.0", "UTF-8");            
            data1 += "&" + URLEncoder.encode("AMT", "UTF-8")+ "=" + URLEncoder.encode("10", "UTF-8");                       
            data1 += "&" + URLEncoder.encode("CURRENCYCODE", "UTF-8") + "=" + URLEncoder.encode("USD", "UTF-8");            
            data1 += "&" + URLEncoder.encode("L_NAME0", "UTF-8") + "=" + URLEncoder.encode("Sample Test", "UTF-8");
            data1 += "&" + URLEncoder.encode("L_AMT0", "UTF-8") + "=" + URLEncoder.encode("10", "UTF-8");                   
            data1 += "&" + URLEncoder.encode("CUSTOM", "UTF-8") + "="+ URLEncoder.encode("Thank You For business","UTF-8");         
            data1 += "&" + URLEncoder.encode("DESC", "UTF-8") + "=" + URLEncoder.encode("Product Details", "UTF-8");                    
            data1 += "&" + URLEncoder.encode("NOSHIPPING", "UTF-8") + "="+ URLEncoder.encode("1", "UTF-8");


        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        result = post(data1);



        Iterator<?> iter = result.entrySet().iterator();

        while (iter.hasNext()) {
            Map.Entry mEntry = (Map.Entry) iter.next();

        }

        if(result!=null){

            token = (String) result.get("TOKEN");
            String url = "https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express"+ "-" + "checkout&token=" + (String) result.get("TOKEN");
            try {
                response.sendRedirect(url);
            } catch (IOException e) {

                e.printStackTrace();
            }

        }


    }

    public String successPage() {
        HttpServletRequest request = ServletActionContext.getRequest();

        String payerID = request.getParameter("PayerID");
        String token=request.getParameter("token");
        doPaypalPayment(payerID,token);
        return "success";
    }


    public String failurePage()
    {

        return "failurePage";
    }


    public void doPaypalPayment(String payerID, String token2) {
        Map result = new HashMap();
        String data = "";
        try {

            data1 = URLEncoder.encode("USER", "UTF-8") + "="+ URLEncoder.encode("Sandbox UserName","UTF-8");
            data1 += "&" + URLEncoder.encode("PWD", "UTF-8") + "="+ URLEncoder.encode("Sandbox Password", "UTF-8");
            data1 += "&" + URLEncoder.encode("SIGNATURE", "UTF-8") + "="+ URLEncoder.encode("Sandbox Signature","UTF-8");

            data += "&" + URLEncoder.encode("METHOD", "UTF-8") + "="+ URLEncoder.encode("DoExpressCheckoutPayment", "UTF-8");
            data += "&" + URLEncoder.encode("PAYERID", "UTF-8") + "="+ URLEncoder.encode(payerID, "UTF-8");
            data += "&" + URLEncoder.encode("PAYMENTACTION", "UTF-8") + "="+ URLEncoder.encode("Sale", "UTF-8");
            data += "&" + URLEncoder.encode("TOKEN", "UTF-8") + "="+ URLEncoder.encode(token2, "UTF-8");
            data += "&" + URLEncoder.encode("AMT", "UTF-8") + "="+ URLEncoder.encode("10", "UTF-8");
            data += "&" + URLEncoder.encode("VERSION", "UTF-8") + "="+ URLEncoder.encode("104.0", "UTF-8");
            data += "&" + URLEncoder.encode("CURRENCYCODE", "UTF-8") + "="+ URLEncoder.encode("USD", "UTF-8");

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        result = post(data);    
    }


     public void deformatNVP()
        {   
            try
            {
                String delims = "[&]";
                String equals = "[=]";
                String[] tokens = this.resultString.split(delims);

                for(int i = 0; i < tokens.length; i++)
                {
                    String[] newTokens = tokens[i].split(equals);
                    this.finalMap.put(URLDecoder.decode(newTokens[0], "UTF-8"), URLDecoder.decode(newTokens[1], "UTF-8"));
                }

            } catch (Exception e) {
                System.out.println(e.toString());
            }
            //return finalMap;
        }

        public Map post(String data)
        {
            try
            {
                //Connect to the url
                URL url = new URL("https://api-3t.sandbox.paypal.com/nvp");
                URLConnection conn = url.openConnection();
                conn.setDoOutput(true);
                OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
                //Post the data
                wr.write(data);
                wr.flush();

                // Get the response
                BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                this.resultString = rd.readLine();
                deformatNVP();
                wr.close();
                rd.close();

            } catch (Exception e) {
                System.out.println(e.toString());
            }
            return finalMap;  
        }





        @Override
        public void setSession(Map<String, Object> arg0) {
            // TODO Auto-generated method stub

        }


         public void doPaypalPaymentWithCreditCard() {
                try 
                {
                    //Load the caller service

                    //Create a new map to hold the result
                    Map result = new HashMap();

                    // Construct data request string
                   String data1 = URLEncoder.encode("USER", "UTF-8") + "="+ URLEncoder.encode("Sandbox UserName","UTF-8");
                   data1 += "&" + URLEncoder.encode("PWD", "UTF-8") + "="+ URLEncoder.encode("Sandbox Password", "UTF-8");
                   data1 += "&" + URLEncoder.encode("SIGNATURE", "UTF-8") + "="+ URLEncoder.encode("Sandbox Signature","UTF-8");                    data += "&" + URLEncoder.encode("METHOD", "UTF-8") + "=" + URLEncoder.encode("DoDirectPayment", "UTF-8");
                    data += "&" + URLEncoder.encode("AMT", "UTF-8") + "=" + URLEncoder.encode("20.10", "UTF-8");
                    data += "&" + URLEncoder.encode("VERSION", "UTF-8") + "=" + URLEncoder.encode("80.0", "UTF-8");
                    data += "&" + URLEncoder.encode("IPADDRESS", "UTF-8") + "=" + URLEncoder.encode("192.168.1.0", "UTF-8");
                    data += "&" + URLEncoder.encode("PAYMENTACTION", "UTF-8") + "=" + URLEncoder.encode("Sale", "UTF-8");
                    data += "&" + URLEncoder.encode("CREDITCARDTYPE", "UTF-8") + "=" + URLEncoder.encode("Visa", "UTF-8");
                    data += "&" + URLEncoder.encode("ACCT", "UTF-8") + "=" + URLEncoder.encode("4532513511140817", "UTF-8");
                    data += "&" + URLEncoder.encode("EXPDATE", "UTF-8") + "=" + URLEncoder.encode("102014", "UTF-8");
                    data += "&" + URLEncoder.encode("CVV2", "UTF-8") + "=" + URLEncoder.encode("123", "UTF-8");
                    data += "&" + URLEncoder.encode("FIRSTNAME", "UTF-8") + "=" + URLEncoder.encode("Jason", "UTF-8");
                    data += "&" + URLEncoder.encode("LASTNAME", "UTF-8") + "=" + URLEncoder.encode("Michels", "UTF-8");
                    data += "&" + URLEncoder.encode("STREET", "UTF-8") + "=" + URLEncoder.encode("123", "UTF-8");
                    data += "&" + URLEncoder.encode("CITY", "UTF-8") + "=" + URLEncoder.encode("Papillion", "UTF-8");
                    data += "&" + URLEncoder.encode("STATE", "UTF-8") + "=" + URLEncoder.encode("NE", "UTF-8");
                    data += "&" + URLEncoder.encode("ZIP", "UTF-8") + "=" + URLEncoder.encode("68046", "UTF-8");
                    data += "&" + URLEncoder.encode("COUNTRYCODE", "UTF-8") + "=" + URLEncoder.encode("US", "UTF-8");


                    result = post(data);

                    //This will iterate through the entire response map
                    Iterator iter = result.entrySet().iterator();
                    while (iter.hasNext()) {
                            Map.Entry mEntry = (Map.Entry) iter.next();
                            System.out.println(mEntry.getKey() + " : " + mEntry.getValue());
                    }

                    //Now that you have a response check to see if it is a success
                    String ack = "" + result.get("ACK");
                    if("Success".equals(ack))
                    {
                        System.out.println("Congratulations your transaction was a success");
                    }
                    else
                    {
                        System.out.println("There was an error with your request.");
                    }
                } 
                catch (Exception e) 
                {
                    System.out.println(e.toString());
                }
            }//end of main function




}

This is working fine for me.Hope it will help to those who want to configure payment through paypal.

这对我来说很好用。希望对那些想通过贝宝配置付款的人有所帮助。