銀聯在線 網關支付 (JAVA版)


 這一版本的編寫是在我上一次博客的基礎上寫的,有不懂得童鞋可以先看下我的原先在線支付的博客,熟悉下:http://blog.csdn.net/yulei_qq/article/details/45197543

 

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

 

我在原先案例代碼的基礎上增加了個Servlet類 GateWayPayment  和一個JSP文件.  home.jsp    rescources文件夾下放的是測試用的一些文件,如測試證書 . 下面我貼下GateWayPayment .java 和 home.jsp 的源碼.

GateWayPayment.java

 

[java]  view plain  copy
  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.         System.out.println("初始化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.         response.setContentType("text/html");  
  37.         PrintWriter out = response.getWriter();  
  38.         /** 
  39.          * 組裝請求報文 
  40.          */  
  41.         Map<String, String> data = new HashMap<String, String>();  
  42.         // 版本號  
  43.         data.put("version", "5.0.0");  
  44.         // 字符集編碼 默認"UTF-8"  
  45.         data.put("encoding", "UTF-8");  
  46.         // 簽名方法 01 RSA  
  47.         data.put("signMethod", "01");  
  48.         // 交易類型 01-消費  
  49.         data.put("txnType", "01");  
  50.         // 交易子類型 01:自助消費 02:訂購 03:分期付款  
  51.         data.put("txnSubType", "01");  
  52.         // 業務類型  
  53.         data.put("bizType", "000201");  
  54.         // 渠道類型,07-PC,08-手機  
  55.         data.put("channelType", "08");  
  56.         // 前台通知地址 ,控件接入方式無作用  
  57.         data.put("frontUrl", "http://localhost:8080/PayOnLine/acp_front_url.do");   
  58.         // 后台通知地址  
  59.         data.put("backUrl", "http://localhost:8080/PayOnLine/acp_back_url.do");  
  60.         // 接入類型,商戶接入填0 0- 商戶 , 1: 收單, 2:平台商戶  
  61.         data.put("accessType", "0");  
  62.         // 商戶號碼,請改成自己的商戶號  
  63.         data.put("merId", "777290058112538");    
  64.         // 商戶訂單號,8-40位數字字母  
  65.         data.put("orderId", new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));  //自動生成訂單號 ,生產系統一般是一個自動增長的序列.  
  66.         // 訂單發送時間,取系統時間  
  67.         data.put("txnTime", new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));  
  68.         // 交易金額,單位分  
  69.         data.put("txnAmt", "749900");  
  70.         // 交易幣種  
  71.         data.put("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

[html]  view plain  copy
  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.           <href="http://localhost:8080/acptest1/servlet/GateWayPayment"><img alt="相機" src="images/photo.png"></a>  
  28.       </div>  
  29.   </body>  
  30. </html>  

 

 

web.xml

 

[html]  view plain  copy
  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文件

 

[html]  view plain  copy
  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 .

 

當狀態變成以下狀態時

 

就可以啟動Tomcat服務器,訪問網頁:

 

 



點擊如上圖片就進入:

 

。表示環境已經搭建好了。

 

注:各位測試的時候,以下代碼需要更換,請填寫自己的商戶號.

 

[java]  view plain  copy
    1. // 商戶號碼,請改成自己的商戶號  
    2. t("merId", "777290058112538");    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM