我在付费流程链接上使用安全令牌。我成功创建了具有以下值的令牌。
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”)
我在这里缺少什么?
先谢谢,
保
答案 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);