Hey,
Thanks for your thoughts! But that's not the part I can't figure out ;-)
If I do implement things on this low level, I don't see how to route the users browser to the PayPal site.
Having a JSP/Servlet environment to play with, I am bound to what it offers me ...
I know how to do a POST submission, I just don't know how to do this from either a Struts Action,
or HttpServlet, having the users browser end up on the PayPal site to make his payment.
So if you, or anybody could help my stuck mind build the bridge to that, I'll be eternally thankful :o)
Thanks, Chris
David G. Friedman wrote:
Let's see, you could google this search query: +java +code +post +paypal
You'll find this page which explains it all very nicely on how to post to PayPal: http://www.paypaldev.org/topic.asp?TOPIC_ID=228
My personal code is very similar to it. I'm not the best coder so don't be too critical of my code. Below is a snippet of my method that does a POST (HTTPS) to Verisign's PayFlowLink. It shouldn't take much for you to do the same to adapt it to HTTP(S?) Post to PayPal.
// BEGIN RELEVANT CODE SNIPPETS
// The basics are to put these things in your method:
// Add a security provider to allow SSL POSTs: Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
// Set a handler for SSL (not sure how this is different from the above System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol");
try { // Setup the URL: URL url = new URL("https://payflowlink.verisign.com/RunTrans.cfm");
// Setup the connection object: HttpURLConnection conn = (HttpURLConnection) url.openConnection();
// Setup the query string --- WARNING this below is for // Verisign PayFlowLink, NOT PAYPAL! String separators = new String("&"); StringBuffer parms = new StringBuffer("SOMETHING=SOMEVALUE" + separator); parms.append("PARAMTWO=VALUETWO" + separator); parms.append("PARAMTHREE=VALUETHREE" + separator); // An echo print for your testing mode (remove in production!!!!) System.out.println("Verisign POST is: " + parms.toString());
// Use a byte array for the String in the connection and set various // properties for the connection byte[] bytes = parms.toString().getBytes(); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); conn.setRequestProperty("Content-length", String.valueOf(bytes.length)); conn.setDoInput(true); conn.setDoOutput(true); OutputStream out = null;
// Perform the HTTPS POST try { out = conn.getOutputStream(); out.write(bytes); out.flush(); out.close(); } catch (Exception e) { System.out.println( "Error opening OutputStream from Verisign Payment Post is:" + e.getMessage()); return (false); }
// Read the returned information BufferedReader reader = new BufferedReader( new InputStreamReader(conn.getInputStream()));
// Figure out how to read it. I use Perl5Utils to scan through // my Verisign result for specific error codes response = reader.readLine();
} catch (MalformedURLException mue) { System.out.println("Verisign Purchase: Bad URL, aborting."); return (false); } catch (IOException ioe) { System.out.println( "Verisign Purchase: Failed Internet Connection Attempt."); return (false); }
// END RELEVANT CODE SNIPPETS
Regards, David
-----Original Message----- From: Wendy Smoak [mailto:[EMAIL PROTECTED] Sent: Friday, September 10, 2004 7:16 PM To: Struts Users Mailing List Subject: Re: Create and submit POST form from Action
From: "mail" <[EMAIL PROTECTED]>
I populate my cart, and paypal expects a POST form submission to present
the user with the payment forms (register/login/submit payment),
and after the user submits or cancels the payment, paypal would submit a
reply form to my site ... at least this is the flow I understand from the
paypal developer docs.
AFAIK they do their thing and either post to your 'success' page or your 'failure' page. So if you make your 'success' page a URL that maps to an Action... wouldn't that do it?
You may also want to go talk with these guys: http://www.paypaldev.org/topic.asp?TOPIC_ID=3239
-- Wendy Smoak
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]