来自安全令牌的RETURNURL

时间:2016-06-07 20:11:57

标签: paypal

我在付费流程链接上使用安全令牌。我成功创建了具有以下值的令牌。

    setupParameters.put("CANCELURL", "http://localhost:9090/paypalcancel");
    setupParameters.put("ERRORURL", "http://localhost:9090/paypalerror");
    setupParameters.put("RETURNURL", "http://localhost:9090/paypalcompleted");
    setupParameters.put("URLMETHOD", "POST");
    setupParameters.put("TEMPLATE", "TEMPLATEB");
    setupParameters.put("DISABLERECEIPT", "TRUE");

看起来RETURNURL正在工作,但它正在重定向到下面的url。 https://payflowlink.paypal.com/http%3A%2F%2Flocalhost%3A9090%2Fpaypalcompleted

这给了我这个http错误HTTP错误404 - 找不到文件。 毫不奇怪,因为它没有打到我的网址。 ( “http://localhost:9090/paypalcompleted”)

我在这里缺少什么?

先谢谢,

1 个答案:

答案 0 :(得分:0)

好的,

所以问题在于使用Apache的HTTPClient。它必须是URLEncoding参数。我切换到使用标准的java URL连接,它运行正常。我只需要手工制作参数字符串。

        URL obj = new URL(url);
        HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", "Mozilla/5.0");
        con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

        String urlParameters = "";
        StringBuffer sb = new StringBuffer();
        if(setupParameters!=null) {
            for(String key : setupParameters.keySet()) {
                sb.append(key+"="+setupParameters.get(key)+"&");
            }
        }
        urlParameters=sb.toString().substring(0, sb.toString().length()-1);
        // Send post request
        con.setDoOutput(true);
        DataOutputStream wr = new DataOutputStream(con.getOutputStream());
        wr.writeBytes(urlParameters);
        wr.flush();
        wr.close();

        int responseCode = con.getResponseCode();
        System.out.println("\nSending 'POST' request to URL : " + url);
        System.out.println("Post parameters : " + urlParameters);
        System.out.println("Response Code : " + responseCode);