// Zaxaa ZPN Sample Code for JSP <%@ page import="java.security.*"%> <% // Your Zaxaa API Signature here String apiSignature = ""; // Grab transaction type String transType = request.getParameter("trans_type"); if(!transType.isEmpty()) { // Read POST data and validate ZPN String transReceipt = request.getParameter("trans_receipt"); String transAmount = request.getParameter("trans_amount"); String sellerID = request.getParameter("seller_id"); String hashKey = request.getParameter("hash_key").trim(); int itemCount = Integer.parseInt(request.getParameter("item_count")); String myHashKey = getMD5Hash(sellerID + apiSignature + transReceipt + transAmount).toUpperCase().trim(); if( myHashKey.equals(hashKey) ) { // ZPN is valid // Do something... // You can do more validation like matching your seller ID // or matching your email address... // or validate the received amount... TransType transTypeEnum = TransType.valueOf(transType.toUpperCase()); switch ( transTypeEnum ) { case SALE: // New payment for one-time product(s) for (int i=0; i <%! // MD5 hash generator public String getMD5Hash(String input) { try { MessageDigest md = MessageDigest.getInstance("MD5"); byte[] array = md.digest(input.getBytes()); StringBuffer sb = new StringBuffer(); for (int i = 0; i < array.length; ++i) { sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1,3)); } return sb.toString(); } catch (NoSuchAlgorithmException e) { } return null; } public enum TransType{ SALE, FIRST_BILL, REBILL, CANCELED, REFUND } %>