• 银联在线 网关支付 (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");    
  • 相关阅读:
    专业词汇-数学-运算:四则运算
    专业词汇-数学-运算:逆运算
    专业词汇-数学:运算
    DNF Package Management-CentOS 8
    Change the HostName of CentOS 8
    CentOS8 修改SSH端口,禁用root登录,修改SSH协议
    CentOS8 Disable IPV6 and Selinux
    Ubuntu 20.04 Install SSH, Change SSH Port, Enable root
    ubuntu 20.04 重启网卡服务
    Ubuntu 20.04 Install Guest Additions for VirtualBox
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/6169131.html
Copyright © 2020-2023  润新知