<%@ page contentType="text/html; charset=UTF-8" language="java" %> // information about values of parameters please see at url // https://www.paypal.com/en_US/pdf/PP_WebsitePaymentsStandard_IntegrationGuide.pdf <% // final String strMerchantUrl = "https://www.paypal.com/cgi-bin/webscr"; final String strMerchantUrl = "https://www.sandbox.paypal.com/cgi-bin/webscr"; final String strEmail = "email_of_seller"; final String strDescription = "my item description"; final String strAmount = "1.3"; final String strCurrencyCode = "USD"; // your counter of invoice String strInvoice = "234234234"; final String returnUrl = "site_of_seller"; %> <form action=<%= strMerchantUrl %> method="post" accept-charset="UTF-8"> <input type="hidden" name="cmd" value="_cart" /> <input type="hidden" name="upload" value="1" /> <input type="hidden" name="business" value="<%= strEmail %>" /> <input type="hidden" name="item_name_1" value="<%= strDescription %>" /> <input type="hidden" name="amount_1" value="<%= strAmount %>" /> <input type="hidden" name="currency_code" value="<%= strCurrencyCode %>" /> <input type="hidden" name="no_shipping" value="1" /> <input type="hidden" name="invoice" value="<%= strInvoice %>" /> <input type="hidden" name="return" value="<%= returnUrl %>" /> <input type="image" value="PayPal" src="https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif" alt="Submit button" align="left" style="margin-right:7px;" /> </form>
package payment.paypal; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.logging.Logger; import java.util.Enumeration; import java.net.URLEncoder; import java.net.URL; import java.net.URLConnection; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @SuppressWarnings("serial") public class Ipn extends HttpServlet { private static final Logger log = Logger.getLogger(Ipn.class.getName()); public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { try { // read post from PayPal system and add 'cmd' Enumeration<?> en = req.getParameterNames(); String str = "cmd=_notify-validate"; while (en.hasMoreElements()) { String paramName = (String) en.nextElement(); String paramValue = req.getParameter(paramName); str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue, "UTF-8"); } // test log IPN string log.info("[Paypal IPN string] " + str); // post back to PayPal system to validate // URL url = new URL("https://www.paypal.com/cgi-bin/webscr"); URL url = new URL("https://www.sandbox.paypal.com/cgi-bin/webscr"); URLConnection conn = url.openConnection(); conn.setDoOutput(true); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); OutputStreamWriter wr = new OutputStreamWriter( conn.getOutputStream()); wr.write(str); wr.flush(); // response from PayPal - VERIFIED or INVALID BufferedReader br = new BufferedReader(new InputStreamReader( conn.getInputStream())); String line = br.readLine(); // test log check string log.info("[PayPal check string] " + line); wr.close(); br.close(); // assign posted variables to local variables String itemName = req.getParameter("item_name"); String itemNumber = req.getParameter("item_number"); String paymentStatus = req.getParameter("payment_status"); String paymentAmount = req.getParameter("mc_gross"); String paymentCurrency = req.getParameter("mc_currency"); String txnId = req.getParameter("txn_id"); String receiverEmail = req.getParameter("receiver_email"); String payerEmail = req.getParameter("payer_email"); // check notification validation if (line.equals("VERIFIED")) { // 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 (line.equals("INVALID")) { // log for investigation log.warning(line); } else { // error } } catch (Exception e) { log.warning("[ipn] " + e); } } }
<!-- payment paypal --> <servlet> <servlet-name>Ipn</servlet-name> <servlet-class>payment.paypal.Ipn</servlet-class> </servlet> <!-- --> <!-- payment paypal mapping --> <servlet-mapping> <servlet-name>Ipn</servlet-name> <url-pattern>/payment/paypal/ipn</url-pattern> </servlet-mapping> <!-- -->
<!-- Configure java.util.logging --> <system-properties> <property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/> </system-properties>
Source: https://habr.com/ru/post/137080/
All Articles