银联在线支付 java_银联在线 网关支付 (JAVA版)
这一版本的编写是在我上一次博客的基础上写的,有不懂得童鞋可以先看下我的原先在线支付的博客,熟悉下: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.
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
/**
* 组装请求报文
*/
Map data = new HashMap();
// 版本号
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 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.
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
home.jsp
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
">
My JSP 'Home.jsp' starting page
点击如下图片,购买商品!
web.xml
acptest1
BackRcvResponse
com.unionpay.acp.BackRcvResponse
BackRcvResponse
/acp_back_url.do
FrontRcvResponse
com.unionpay.acp.FrontRcvResponse
FrontRcvResponse
/acp_front_url.do
GateWayPayment
com.unionpay.acp.GateWayPayment
GateWayPayment
/servlet/GateWayPayment
第二步:配置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");
银联在线支付 java_银联在线 网关支付 (JAVA版)相关推荐
- 银联批量结算 java_银联在线 网关支付 (JAVA版)
这一版本的编写是在我上一次博客的基础上写的,有不懂得童鞋可以先看下我的原先在线支付的博客,熟悉下:http://blog.csdn.net/yulei_qq/article/details/45197 ...
- 微信支付——微信退款实战教程(Java版)
微信支付之微信申请退款实战(Java版) 微信支付业务场景 一.注意事项 二.微信支付退款案例 1.微信退款案例 二.微信支付官方说明 总结 微信支付业务场景 当交易发生之后一年内,由于买家或者卖家的 ...
- 受托支付 java_智慧职教云课堂Java程序设计基础(哈尔滨职业技术学院)作业答案...
试述高血压针灸治疗的基本处方及方义. 受托支付的核心要义是什么? 简述计算机网络的客户/服务器方式工作模式. 你所在的村民今年采用了新品种瓜果,品质很好,瓜果大丰收,上市时间集中,现在瓜农担心瓜卖不出 ...
- 车票购买最低消费问题java_浅析12306售票算法(java版)
1.以G71列车为例,首先对车次站台进行占位编码(从1开始到最后一站递加) 对以上占位简单描述以下:G71总共18个站点那么我们的单个座位的座位标识可以用十八位长度的二进制字符串表示100000000 ...
- 我的世界一进去就java_我的世界国际java版1.12.2加了光影修复进游戏就直接崩溃...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 (WorldEntitySpawner.java:226) at net.minecraft.world.WorldEntitySpawner.func_ ...
- 迷宫求解 java_迷宫求解算法(java版)
迷宫求解算法一直是算法学习的经典,实现自然也是多种多样,包括动态规划,递归等实现,这里我们使用穷举求解,加深对栈的理解和应用 定义Position类用于存储坐标点 起点坐标为(1,1),终点坐标为(8 ...
- 基岩版刷铁傀儡机制和Java_我的世界:Java版1.14获得铁傀儡的四种方式,第三种千万别忘记...
在沙盒游戏我的世界中,铁傀儡是守护村庄和村民的生物,它们的攻击力很强,即使是玩家们也不敢轻易地惹怒它们!当玩家们进入Jaa版1.14生存模式之时,拥有四种获得铁傀儡的方式,接下来就为玩家们介绍一下!第 ...
- 罗马java_罗马数字转换阿拉伯数字(Java版,考虑较为全面)
一. 前言 朋友的作业,本想在网上找个现成的改改就行啦.可是一番google.baidu之后,找到的要么不是Java版本的,要么就是考虑的不够全面.遂,笔者自己写了个,如有考虑不全面的地方,望大家能够 ...
- 我的世界海洋java_我的世界Minecraft Java版18w15a发布
每周快照是Minecraft的测试机制,主要用于下一个正式版的特性预览.然而,每周快照主要用于新特性展示,通常存在大量漏洞.因此对于普通玩家建议仅做测试尝鲜用.使用测试版打开存档前请务必备份.适用于正 ...
最新文章
- 接口限流算法:漏桶算法令牌桶算法
- 从玉农业谋定塞外-丰收节交易会·林裕豪:巴彦淖尔深圳签约
- mac下anaconda安装selenium+PhantomJS
- Office SharePoint Server 2007
- php驱动下载好后安装在哪里,没网如何安装网卡驱动
- CSS 定位 (Positioning) 实例
- python3 tkinter 桌面软件教程
- 3dB等波纹低通滤波器设计(HFSS)
- 如何写出一份好的解决方案
- Unity-创建一个小地图
- iOS 组件化加载本地 gif 图片
- 【原创】使用高德 API
- android 7 语音助手,语音助手横评:iPhone 大战 Android 旗舰,谁更好用?
- 读取Java源文件中字段的注释当做Swagger的字段描述
- excel宏根据表格自动计算机,Excel使用宏录制自动将输入内容排到另一张表的操作方法...
- IDEA翻译插件出现报错: 更新 TKK 失败,请检查网络连接解决
- 融资租赁公司信息科技规划研究
- 计算机专硕_2021年北京科技大学计算机专硕考研初复试考研经验分享、择校备考分析指导...
- 2. Bean Validation声明式校验方法的参数、返回值
- SYN010E型全国产铷原子钟