Reputation: 21
I created an ipn sandbox(paypal)and added a code bellow,but I don't had a response from server.What can be the problem please? And how can I get the logs from my server? PS: I'm working with java spring. Thank you.
Enumeration en = request.getParameterNames();
String str = "cmd=_notify-validate";
while (en.hasMoreElements()) {
String paramName = (String) en.nextElement();
String paramValue = request.getParameter(paramName);
str = str + "&" + paramName + "="
+ URLEncoder.encode(paramValue, "UTF-8");
}
String url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
URL u = new URL(url);
HttpURLConnection uc = (HttpURLConnection) u.openConnection();
uc.setRequestMethod("POST");
uc.setDoOutput(true);
uc.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
PrintWriter pw = new PrintWriter(uc.getOutputStream());
pw.println(str);
pw.close();
BufferedReader in = new BufferedReader(new InputStreamReader(
uc.getInputStream()));
String res = in.readLine();
in.close();
//assign posted variables to local variables
String itemName = request.getParameter("item_name");
String itemNumber = request.getParameter("item_number");
String paymentStatus = request.getParameter("payment_status");
String paymentAmount = request.getParameter("mc_gross");
String paymentCurrency = request.getParameter("mc_currency");
String txnId = request.getParameter("txn_id");
String receiverEmail = request.getParameter("receiver_email");
String payerEmail = request.getParameter("payer_email");
if (res.equals("VERIFIED")) {
//---
} else if (res.equals("INVALID")) {
//---
} else {
// error
System.out.println("error");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Upvotes: 2
Views: 161
Reputation: 1627
here is my service method for your review may be it helps, its a bit cleaner approach instead of creating url at lower level which is little suspicious to me in your code , but error code can help to find the cause more accurately
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
configLogging();
System.out.println("Inside service method");
@SuppressWarnings("deprecation")
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(Constants.IPN_SANDBOX_ENDPOINT);
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);
System.out.println("<"+name+","+value+">");
params.add(new BasicNameValuePair(name, value));
}
post.setEntity(new UrlEncodedFormEntity(params));
String rc = getRC(client.execute(post)).trim();
// IPNMessageHandler ipnMessageHandler = new IPNMessageHandler(request);
// ipnMessageHandler.handleMessage();
if ("VERIFIED".equals(rc)) {
//Your business code comes here
System.out.println("IPN is fine and working");
IPNMessageHandler ipnMessageHandler = new IPNMessageHandler(request);
ipnMessageHandler.handleMessage();
}
}
private String getRC(HttpResponse response) throws IOException, IllegalStateException {
InputStream is = response.getEntity().getContent();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String result = "";
String line = null;
while ((line = br.readLine()) != null) {
result += line;
}
// System.out.println("Response after: "+result);
return result;
}
Upvotes: 1