這一版本的編寫是在我上一次博客的基礎上寫的,有不懂得童鞋可以先看下我的原先在線支付的博客,熟悉下:http://blog.csdn.net/yulei_qq/article/details/45197543
第一步,建立工程,工程目錄如下:
我在原先案例代碼的基礎上增加了個Servlet類 GateWayPayment 和一個JSP文件. home.jsp rescources文件夾下放的是測試用的一些文件,如測試證書 . 下面我貼下GateWayPayment .java 和 home.jsp 的源碼.
GateWayPayment.java
- 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);
- }
- }
home.jsp
- <%@ 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.xml
- <?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\\
第四步:根據配置文件制定的證書路徑配置證書,證書在工程的resources文件夾下.
第5步:集成網關支付測試,網址:https://open.unionpay.com/ajweb/account/myProduct/integrate?prodId=1 .
當狀態變成以下狀態時
就可以啟動Tomcat服務器,訪問網頁:

點擊如上圖片就進入:
。表示環境已經搭建好了。
注:各位測試的時候,以下代碼需要更換,請填寫自己的商戶號.
- // 商戶號碼,請改成自己的商戶號
- t("merId", "777290058112538");