这一版本的编写是在我上一次博客的基础上写的

 

第一步,建立工程,工程目录如下:

java电商中订单到支付业务代码 java在线支付_java

 

我在原先案例代码的基础上增加了个Servlet类 GateWayPayment  和一个JSP文件.  home.jsp    rescources文件夹下放的是测试用的一些文件,如测试证书 . 下面我贴下GateWayPayment .java 和 home.jsp 的源码.

GateWayPayment.java

1. package com.unionpay.acp;  
2.   
3. import java.io.IOException;  
4. import java.io.PrintWriter;  
5. import java.text.SimpleDateFormat;  
6. import java.util.Date;  
7. import java.util.HashMap;  
8. import java.util.Map;  
9.   
10. import javax.servlet.ServletException;  
11. import javax.servlet.http.HttpServlet;  
12. import javax.servlet.http.HttpServletRequest;  
13. import javax.servlet.http.HttpServletResponse;  
14.   
15. import com.unionpay.acp.sdk.SDKConfig;  
16.   
17. public class GateWayPayment extends HttpServlet {  
18.       
19. @Override  
20. public void init() throws ServletException {  
21. "初始化Servlet.....");  
22.         SDKConfig.getConfig().loadPropertiesFromSrc();  
23. super.init();  
24.     }  
25.       
26. /** 
27.      *  
28.      */  
29. private static final long serialVersionUID = 7414643114833354891L;  
30.       
31. /** 
32.      * The doGet method of the servlet. <br> 
33.      */  
34. public void doGet(HttpServletRequest request, HttpServletResponse response)  
35. throws ServletException, IOException {  
36. "text/html");  
37.         PrintWriter out = response.getWriter();  
38. /** 
39.          * 组装请求报文 
40.          */  
41. new HashMap<String, String>();  
42. // 版本号  
43. "version", "5.0.0");  
44. // 字符集编码 默认"UTF-8"  
45. "encoding", "UTF-8");  
46. // 签名方法 01 RSA  
47. "signMethod", "01");  
48. // 交易类型 01-消费  
49. "txnType", "01");  
50. // 交易子类型 01:自助消费 02:订购 03:分期付款  
51. "txnSubType", "01");  
52. // 业务类型  
53. "bizType", "000201");  
54. // 渠道类型,07-PC,08-手机  
55. "channelType", "08");  
56. // 前台通知地址 ,控件接入方式无作用  
57. "frontUrl", "http://localhost:8080/PayOnLine/acp_front_url.do");   
58. // 后台通知地址  
59. "backUrl", "http://localhost:8080/PayOnLine/acp_back_url.do");  
60. // 接入类型,商户接入填0 0- 商户 , 1: 收单, 2:平台商户  
61. "accessType", "0");  
62. // 商户号码,请改成自己的商户号  
63. "merId", "777290058112538");    
64. // 商户订单号,8-40位数字字母  
65. "orderId", new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));  //自动生成订单号 ,生产系统一般是一个自动增长的序列.  
66. // 订单发送时间,取系统时间  
67. "txnTime", new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));  
68. // 交易金额,单位分  
69. "txnAmt", "749900");  
70. // 交易币种  
71. "currencyCode", "156");  
72. // 请求方保留域,透传字段,查询、通知、对账文件中均会原样出现  
73. // data.put("reqReserved", "透传信息");  
74. // 订单描述,可不上送,上送时控件中会显示该信息  
75. // data.put("orderDesc", "订单描述");  
76.   
77.         Map<String, String> submitFromData =  DemoBase.signData(data);  
78.   
79. // 交易请求url 从配置文件读取  
80.         String requestFrontUrl = SDKConfig.getConfig().getFrontRequestUrl();   
81. /** 
82.          *动态创建表单 
83.          */  
84.         String html = DemoBase.createHtml(requestFrontUrl, submitFromData);  
85. //      System.out.println(html);  
86.         out.print(html);   
87.         out.flush();  
88.         out.close();  
89.     }  
90.   
91. /** 
92.      * The doPost method of the servlet. <br> 
93.      */  
94. public void doPost(HttpServletRequest request, HttpServletResponse response)  
95. throws ServletException, IOException {  
96.               doGet(request, response);  
97.     }  
98.   
99. }

home.jsp

1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
2. <%  
3. String path = request.getContextPath();  
4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
5. %>  
6.   
7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
8. <html>  
9. <head>  
10. <base href="<%=basePath%>">  
11.       
12. <title>My JSP 'Home.jsp' starting page</title>  
13.       
14. <meta http-equiv="pragma" content="no-cache">  
15. <meta http-equiv="cache-control" content="no-cache">  
16. <meta http-equiv="expires" content="0">      
17. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
18. <meta http-equiv="description" content="This is my page">  
19. <!-- 
20.     <link rel="stylesheet" type="text/css" href="styles.css"> 
21.     -->  
22. </head>  
23.     
24. <body>  
25.              点击如下图片,购买商品!  
26. <div>   
27. <a href="http://localhost:8080/acptest1/servlet/GateWayPayment"><img alt="相机" src="images/photo.png"></a>  
28. </div>  
29. </body>  
30. </html>

web.xml

1. <?xml version="1.0" encoding="UTF-8"?>  
2. <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">  
3. <display-name>acptest1</display-name>  
4. <servlet>  
5. <servlet-name>BackRcvResponse</servlet-name>  
6. <servlet-class>com.unionpay.acp.BackRcvResponse</servlet-class>  
7. </servlet>  
8. <servlet-mapping>  
9. <servlet-name>BackRcvResponse</servlet-name>  
10. <url-pattern>/acp_back_url.do</url-pattern>  
11. </servlet-mapping>  
12. <servlet>  
13. <servlet-name>FrontRcvResponse</servlet-name>  
14. <servlet-class>com.unionpay.acp.FrontRcvResponse</servlet-class>  
15. </servlet>  
16. <servlet-mapping>  
17. <servlet-name>FrontRcvResponse</servlet-name>  
18. <url-pattern>/acp_front_url.do</url-pattern>  
19. </servlet-mapping>  
20. <servlet>  
21. <servlet-name>GateWayPayment</servlet-name>  
22. <servlet-class>com.unionpay.acp.GateWayPayment</servlet-class>  
23. </servlet>  
24. <servlet-mapping>  
25. <servlet-name>GateWayPayment</servlet-name>  
26. <url-pattern>/servlet/GateWayPayment</url-pattern>  
27. </servlet-mapping>  
28. </web-app>

 

第二步:配置acp_sdk.properties文件

1. ###### SDK 配置文件 配置文件中日志和证书的存放路径根据实际情况配置,交易地址和证书根据测试环境、生产环境配套配置  
2. ##########################交易发送地址配#############################  
3. ######(以下配置为认证环境:入网测试环境用,生产环境配置见文档说明)#######  
4. ##前台交易请求地址  
5. acpsdk.frontTransUrl=https://101.231.204.80:5000/gateway/api/frontTransReq.do  
6. #### 后台交易请求地址  
7. acpsdk.backTransUrl=https://101.231.204.80:5000/gateway/api/backTransReq.do  
8. ##后台交易请求地址(若为有卡交易配置该地址)  
9. acpsdk.cardTransUrl=https://101.231.204.80:5000/gateway/api/cardTransReq.do  
10. ##单笔查询请求地址  
11. acpsdk.singleQueryUrl=https://101.231.204.80:5000/gateway/api/queryTrans.do  
12. ##批量交易请求地址  
13. acpsdk.batchTransUrl=https://101.231.204.80:5000/gateway/api/batchTransReq.do  
14. ##文件传输类交易地址  
15. acpsdk.fileTransUrl=https\://101.231.204.80\:9080/  
16. ## app 交易请求地址  
17. acpsdk.appTransUrl=https://101.231.204.80:5000/gateway/api/appTransReq.do  
18.   
19.   
20.   
21. #########################签名证书配置 ################################  
22. ######(以下配置为测试环境:入网测试环境用,生产环境配置见下述文档说明))#######  
23. ##签名证书路径  
24. acpsdk.signCert.path=D\:\\certs\\PM_700000000000001_acp.pfx  
25. ##签名证书密码  
26. acpsdk.signCert.pwd=000000  
27. ##签名证书类型  
28. acpsdk.signCert.type=PKCS12  
29.   
30. ##########################加密证书配置################################  
31. ##\密码加密证书路径  
32. acpsdk.validateCert.dir=D\:\\certs\\


第四步:根据配置文件制定的证书路径配置证书,证书在工程的resources文件夹下.

 

第5步:集成网关支付测试,网址:https://open.unionpay.com/ajweb/account/myProduct/integrate?prodId=1 .

java电商中订单到支付业务代码 java在线支付_java_02

 

当状态变成以下状态时

java电商中订单到支付业务代码 java在线支付_java电商中订单到支付业务代码_03

 

就可以启动Tomcat服务器,访问网页:

java电商中订单到支付业务代码 java在线支付_xml_04

 


点击如上图片就进入:

java电商中订单到支付业务代码 java在线支付_xml_05

 

。表示环境已经搭建好了。

 

注:各位测试的时候,以下代码需要更换,请填写自己的商户号.

1. // 商户号码,请改成自己的商户号  
2. t("merId", "777290058112538");    
3.