這一版本的編寫是在我上一次博客的基礎上寫的,有不懂得童鞋能夠先看下個人原先在線支付的博客,熟悉下:http://blog.csdn.net/yulei_qq/article/details/45197543css
第一步,創建工程,工程目錄以下:html
我在原先案例代碼的基礎上增長了個Servlet類 GateWayPayment 和一個JSP文件. home.jsp rescources文件夾下放的是測試用的一些文件,如測試證書 . 下面我貼下GateWayPayment .java 和 home.jsp 的源碼.java
GateWayPayment.javaweb
package com.unionpay.acp; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.unionpay.acp.sdk.SDKConfig; public class GateWayPayment extends HttpServlet { @Override public void init() throws ServletException { System.out.println("初始化Servlet....."); SDKConfig.getConfig().loadPropertiesFromSrc(); super.init(); } /** * */ private static final long serialVersionUID = 7414643114833354891L; /** * The doGet method of the servlet. <br> */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); /** * 組裝請求報文 */ Map<String, String> data = new HashMap<String, String>(); // 版本號 data.put("version", "5.0.0"); // 字符集編碼 默認"UTF-8" data.put("encoding", "UTF-8"); // 簽名方法 01 RSA data.put("signMethod", "01"); // 交易類型 01-消費 data.put("txnType", "01"); // 交易子類型 01:自助消費 02:訂購 03:分期付款 data.put("txnSubType", "01"); // 業務類型 data.put("bizType", "000201"); // 渠道類型,07-PC,08-手機 data.put("channelType", "08"); // 前臺通知地址 ,控件接入方式無做用 data.put("frontUrl", "http://localhost:8080/PayOnLine/acp_front_url.do"); // 後臺通知地址 data.put("backUrl", "http://localhost:8080/PayOnLine/acp_back_url.do"); // 接入類型,商戶接入填0 0- 商戶 , 1: 收單, 2:平臺商戶 data.put("accessType", "0"); // 商戶號碼,請改爲本身的商戶號 data.put("merId", "777290058112538"); // 商戶訂單號,8-40位數字字母 data.put("orderId", new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); //自動生成訂單號 ,生產系統通常是一個自動增加的序列. // 訂單發送時間,取系統時間 data.put("txnTime", new SimpleDateFormat("yyyyMMddHHmmss").format(new Date())); // 交易金額,單位分 data.put("txnAmt", "749900"); // 交易幣種 data.put("currencyCode", "156"); // 請求方保留域,透傳字段,查詢、通知、對帳文件中均會原樣出現 // data.put("reqReserved", "透傳信息"); // 訂單描述,可不上送,上送時控件中會顯示該信息 // data.put("orderDesc", "訂單描述"); Map<String, String> submitFromData = DemoBase.signData(data); // 交易請求url 從配置文件讀取 String requestFrontUrl = SDKConfig.getConfig().getFrontRequestUrl(); /** *動態建立表單 */ String html = DemoBase.createHtml(requestFrontUrl, submitFromData); // System.out.println(html); out.print(html); out.flush(); out.close(); } /** * The doPost method of the servlet. <br> */ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'Home.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> 點擊以下圖片,購買商品! <div> <a href="http://localhost:8080/acptest1/servlet/GateWayPayment"><img alt="相機" src="images/photo.png"></a> </div> </body> </html>
web.xmlapi
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>acptest1</display-name> <servlet> <servlet-name>BackRcvResponse</servlet-name> <servlet-class>com.unionpay.acp.BackRcvResponse</servlet-class> </servlet> <servlet-mapping> <servlet-name>BackRcvResponse</servlet-name> <url-pattern>/acp_back_url.do</url-pattern> </servlet-mapping> <servlet> <servlet-name>FrontRcvResponse</servlet-name> <servlet-class>com.unionpay.acp.FrontRcvResponse</servlet-class> </servlet> <servlet-mapping> <servlet-name>FrontRcvResponse</servlet-name> <url-pattern>/acp_front_url.do</url-pattern> </servlet-mapping> <servlet> <servlet-name>GateWayPayment</servlet-name> <servlet-class>com.unionpay.acp.GateWayPayment</servlet-class> </servlet> <servlet-mapping> <servlet-name>GateWayPayment</servlet-name> <url-pattern>/servlet/GateWayPayment</url-pattern> </servlet-mapping> </web-app>
第二步:配置acp_sdk.properties文件服務器
###### SDK 配置文件 配置文件中日誌和證書的存放路徑根據實際狀況配置,交易地址和證書根據測試環境、生產環境配套配置 ##########################交易發送地址配############################# ######(如下配置爲認證環境:入網測試環境用,生產環境配置見文檔說明)####### ##前臺交易請求地址 acpsdk.frontTransUrl=https://101.231.204.80:5000/gateway/api/frontTransReq.do #### 後臺交易請求地址 acpsdk.backTransUrl=https://101.231.204.80:5000/gateway/api/backTransReq.do ##後臺交易請求地址(若爲有卡交易配置該地址) acpsdk.cardTransUrl=https://101.231.204.80:5000/gateway/api/cardTransReq.do ##單筆查詢請求地址 acpsdk.singleQueryUrl=https://101.231.204.80:5000/gateway/api/queryTrans.do ##批量交易請求地址 acpsdk.batchTransUrl=https://101.231.204.80:5000/gateway/api/batchTransReq.do ##文件傳輸類交易地址 acpsdk.fileTransUrl=https\://101.231.204.80\:9080/ ## app 交易請求地址 acpsdk.appTransUrl=https://101.231.204.80:5000/gateway/api/appTransReq.do #########################簽名證書配置 ################################ ######(如下配置爲測試環境:入網測試環境用,生產環境配置見下述文檔說明))####### ##簽名證書路徑 acpsdk.signCert.path=D\:\\certs\\PM_700000000000001_acp.pfx ##簽名證書密碼 acpsdk.signCert.pwd=000000 ##簽名證書類型 acpsdk.signCert.type=PKCS12 ##########################加密證書配置################################ ##\密碼加密證書路徑 acpsdk.validateCert.dir=D\:\\certs\\
第5步:集成網關支付測試,網址:https://open.unionpay.com/ajweb/account/myProduct/integrate?prodId=1 .app
當狀態變成如下狀態時jsp
就能夠啓動Tomcat服務器,訪問網頁:ide
點擊如上圖片就進入:測試
。表示環境已經搭建好了。
注:各位測試的時候,如下代碼須要更換,請填寫本身的商戶號.
// 商戶號碼,請改爲本身的商戶號 data.put("merId", "777290058112538");
源碼下載地址:http://yun.baidu.com/share/link?shareid=192593261&uk=1226600628