Wie verwende ich die HTTP-POST in der JSP-Seite zu schicken, ein FORMULAR für Paypal und Antwort Lesen?

Ich bin mit paypal sandbox zu testen, die Payment Data Transfer (PDT) - Funktion von Paypal. Bitte beachten Sie, Paypal nicht mit einem code-Beispiel, in JSP für die PDT. Ich bin schockiert, da scheinen Sie zu haben, Beispiele für alles andere.

Laut Paypal kann ich geben Sie die URL, die ich verwenden möchten, für die Bearbeitung der PDT Informationen. Ich habe gerade, dass in meiner sandbox Profil.

Jetzt bin ich stecken, auf ein paar Dinge, die mit der JSP-code. Ich schaffte es, einige Beispiel-code, aber es könnte nicht vollständig sein, und um die Wahrheit zu sagen, ich bin nicht gerade vertraut mit einigen der code in es.

Den JSP-code ist unten. Wenn man sich Paypal-Zahlung Daten-Transfer Seite, es erklärt, ohne code-Beispiele, die PDT-Prozess.

Heißt es, dass der Transaktions-id wird angehängt werden, um die URL angegeben in deinem Profil. Okay, also ich kann diese id über request.getParameter("tx"). Das ist der einfache Teil.

1) - Aber wie Schreibe ich das Formular (wie unten gezeigt) zurück zu Paypal? Diesen Teil verstehe ich nicht. Wie kann ich das code?

2) --Dann wird die Seite Zustände "Im PayPal' s Antwort auf deinen Beitrag, die erste Zeile wird ERFOLG oder SCHEITERN. Ein Beispiel für erfolgreiche Antwort sieht wie folgt aus (HTTP-Header wurde weggelassen):

ERFOLG

first_name=Jane+Doe

last_name=Smith

payment_status=Completed

payer_email=janedoesmith%40hotmail.com

payment_gross=3.99

mc_currency=USD

custom=Für+den+Kauf+von+seltenen+Buch+Grün+Eier+%26+Schinken

Wie werden diese Informationen abgerufen, die in meiner JSP-Seite?

Html-Form zu Posten Paypal

<form method=post action="https://www.paypal.com/cgi-bin/webscr"> 
<input type="hidden" name="cmd" value="_notify-synch"> 
<input type="hidden" name="tx" value="TransactionID"> 
<input type="hidden" name="at" value="YourIdentityToken"> 
<input type="submit" value="PDT"> 
</form>

JSP-code

//Java JSP

<%@ page import="java.util.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.io.*" %>

<%@ page import="javax.servlet.*"%>
<%@ page import="javax.servlet.http.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="java.sql.*"%>

<%
//read post from PayPal system and add 'cmd'
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);
}

String transId = request.getParameter("tx");

//post back to PayPal system to validate
//NOTE: change http: to https: in the following URL to verify using SSL (for increased security).
//using HTTPS requires either Java 1.4 or greater, or Java Secure Socket Extension (JSSE)
//and configured for older versions.
java.net.URL u = new java.net.URL("https://www.sandbox.paypal.com/cgi-bin/webscr");

java.netHttpURLConnection uc = (java.net.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");

            DataSource ds = null;
            Connection conn = null;
            Statement stmt = null;

            try {
            final Context ctx = new InitialContext();
            ds = (DataSource) ctx.lookup("java:comp/env/jdbc/mydb");
            conn = ds.getConnection();
            stmt = conn.createStatement();

            //test_paypal
            int success = stmt.executeUpdate("insert into test_paypal values("paymentStatus="+request.getParameter("payment_status")+"paymentAmount="+request.getParameter("mc_gross")+
                                             "txnId"+request.getParameter("txn_id")+")");
             }//try
             catch(Exception e) {}

             finally {
                       stmt.close();
                       conn.close();
                     }



check notification validation
if(res.equals("VERIFIED")) {
//check that paymentStatus=Completed
//check that txnId has not been previously processed
//check that receiverEmail is your Primary PayPal email
//check that paymentAmount/paymentCurrency are correct
//process payment
}
else if(res.equals("INVALID")) {
//log for investigation
}
else {
//error
}
%>
InformationsquelleAutor katura | 2011-06-15
Schreibe einen Kommentar