这一版本的编写是在我上一次博客的基础上写的,有不懂得童鞋可以先看下我的原先在线支付的博客,熟悉下: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服务器,访问网页:

点击如上图片就进入:

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

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

	        // 商户号码,请改成自己的商户号
data.put("merId", "777290058112538");

源码下载地址:http://yun.baidu.com/share/link?shareid=192593261&uk=1226600628

银联在线 网关支付 (JAVA版)的更多相关文章

  1. 银联支付java版

    注:本文来源于:<  银联支付java版    > 银联支付java版 2016年09月18日 15:55:20 阅读数:2431 首先去银联官网注册测试支付账户   下载对应的demo[ ...

  2. 微信支付java版V3验证数据合法性

    [TOC] 1. 微信支付java版V3验证数据合法性 概要:使用微信支付接口时,微信会返回或回调给商户XML数据,开发者需要验证微信返回的数据是否合法. 特别提醒:商户系统对于支付结果通知的内容一定 ...

  3. Phonegap 之 iOS银联在线支付(js调用ios端银联支付控件)

    Phonegap项目,做支付的时候,当把网站打包到ios或android端成app后,在app上通过wap调用银联在线存在一个问题: 就是当从银联支付成功后,再从服务器返回到app客户端就很难实现. ...

  4. mallmold开源商城系统网银在线chinabank支付插件

    最近没事捣鼓项目,找了个轻型商城系统mallmold,用起来还觉的挺不错的,尤其是mallmold中文版,赞一个.中文版集成了大部分主流支付系统,但因是个人网站,没法获得对应的服务,最终选择了网银在线 ...

  5. java版的类似飞秋的局域网在线聊天项目

    原文链接:http://www.cnblogs.com/wangleiblog/articles/5323305.html 转载请注明 最近在弄一个java版的局域网在线聊天项目,功能跟飞秋差不多.p ...

  6. 银联支付Java开发

    注:原来来源于: <  银联支付Java开发  > 银联的demo写的不错,基本上可以直接使用. 首先是对acp_sdk.properties的内容修改,注意这个文件的文件名不能进行修改. ...

  7. 银联在线支付B2C UnionPay.NET

    新春即将来临,首先给大家拜个早年,祝攻城狮们新年快乐.万事如意.合家欢乐.团团圆圆.幸福健康.来年更能大展宏图 实现各自的梦想! 同时预祝各大科技公司大佬们事业蒸蒸日上.公司转型突破创新.冲出突围带领 ...

  8. 微信支付(公众号支付APIJS、app支付)服务端统一下单接口java版

    一.微信公众号支付APIJS: 要完整的实现微信支付功能,需要前后端一起实现,还需要微信商户平台的配置.这里只是涉及服务端的代码. jar包:pom.xml <!-- ↓↓↓↓↓↓↓↓ 支付相关 ...

  9. 银联接口测试——详细(JAVA)

    准备材料 1.注册账号 https://open.unionpay.com/ajweb/register?locale=zh_CN 2.▼登录账号 -->帮助中心--> 下载,选择网关支付 ...

随机推荐

  1. C语言程序设计第二次作业--顺序结构

    C语言程序设计第二次作业--顺序结构 1.输出带框文字:在屏幕上输出以下3行信息. ************* Welcome ************* 源程序 #include <stido ...

  2. Mianbot:基于向量匹配的情境式聊天机器人

    Mianbot是采用样板与检索式模型搭建的聊天机器人,目前有两种产生回覆的方式,专案仍在开发中:) 其一(左图)是以词向量进行短语分类,针对分类的目标模组实现特征抽取与记忆回覆功能,以进行多轮对话,匹 ...

  3. 关于thymeleaf th:replace th:include th:insert 的区别

    关于thymeleaf th:replace th:include th:insert 的区别    th:insert   :保留自己的主标签,保留th:fragment的主标签.    th:re ...

  4. 利用生产者消费者模型和MQ模型写一个自己的日志系统-并发设计里一定会用到的手段

    一:前言 写这个程序主要是用来理解生产者消费者模型,以及通过这个Demo来理解Redis的单线程取原子任务是怎么实现的和巩固一下并发相关的知识:这个虽然是个Demo,但是只要稍加改下Appender部 ...

  5. kafka topic 相关操作

    1.列出集群中的topic bin/kafka-topics.sh --zookeeper spark1:2181,spark2:2181,spark3:2181 --list 2.创建topic r ...

  6. 浏览器本地下拉框查询选择js

    首先需要引用jquery-1.7.2.js. 页面下拉框有对应的数据,此下拉框的查询将不与服务器交互.本地下拉框查询.暂不支持通过键盘上下按键和enter键控制 // JavaScript Docum ...

  7. print语句中逗号(,)和反斜杠(\)的区别

    逗号结尾:   禁止输出换行反斜杠结尾:强制输出换行 >>> print ('A','B') #用一个逗号结尾就可以禁止输出换行 A B >>> print ('A ...

  8. python学习之路前端-CSS

    CSS概述 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:style ...

  9. Mac下安装PEAR

    The following instructions install PEAR and PECL on Mac OS X under/usr/local/. PECL is bundled with ...

  10. Java 零散笔记

    运算符: 整数被0除将会产生一个异常,而浮点数被0除会得到无穷大或NaN结果. 二元运算符: 如果运算符得到一个值,其类型与左侧操作数的类型不用,就会发生强制类型转换. int x = 0; x += ...