[Java实现银联支付 ]
目录
前言:
以下是调用银联支付平台的API -demo:
注意:
依赖:
配置文件:
前言:
主要记录一些小笔记......
以下是调用银联支付平台的API -demo:
import com.unionpay.acp.sdk.AcpService;
import com.unionpay.acp.sdk.LogUtil;
import com.unionpay.acp.sdk.SDKConfig;import java.util.HashMap;
import java.util.Map;public class UnionPayService {public UnionPayService() {// 加载银联支付SDK配置文件SDKConfig.getConfig().loadPropertiesFromSrc();}// 发起支付请求public String pay(String orderId, String txnAmt) {Map<String, String> requestData = new HashMap<String, String>();requestData.put("version", "5.1.0");requestData.put("encoding", "UTF-8");requestData.put("signMethod", "01");requestData.put("txnType", "01");requestData.put("txnSubType", "01");requestData.put("bizType", "000201");requestData.put("channelType", "08");requestData.put("accessType", "0");requestData.put("merId", "your_mer_id");requestData.put("orderId", orderId);requestData.put("txnTime", "20220101120000");requestData.put("txnAmt", txnAmt);requestData.put("currencyCode", "156");requestData.put("backUrl", "http://your_server_url");requestData.put("frontUrl", "http://your_client_url");requestData.put("payTimeout", "1200");Map<String, String> submitFromData = AcpService.sign(requestData, "UTF-8");String requestUrl = SDKConfig.getConfig().getSingleRequestUrl();Map<String, String> response = AcpService.post(submitFromData, requestUrl, "UTF-8");if (AcpService.validate(response, "UTF-8")) {String tn = response.get("tn");return tn;} else {LogUtil.writeErrorLog("验证签名失败");return null;}}// 查询订单状态public boolean query(String orderId) {Map<String, String> requestData = new HashMap<String, String>();requestData.put("version", "5.1.0");requestData.put("encoding", "UTF-8");requestData.put("signMethod", "01");requestData.put("txnType", "00");requestData.put("txnSubType", "00");requestData.put("bizType", "000000");requestData.put("channelType", "08");requestData.put("accessType", "0");requestData.put("merId", "your_mer_id");requestData.put("orderId", orderId);requestData.put("txnTime", "20220101120000");Map<String, String> submitFromData = AcpService.sign(requestData, "UTF-8");String requestUrl = SDKConfig.getConfig().getSingleQueryUrl();Map<String, String> response = AcpService.post(submitFromData, requestUrl, "UTF-8");if (AcpService.validate(response, "UTF-8")) {String respCode = response.get("respCode");if (respCode.equals("00")) {return true;} else {return false;}} else {LogUtil.writeErrorLog("验证签名失败");return false;}}
}
注意:
- 其中,your_mer_id是商户号,orderId是订单号,txnAmt是交易金额。需要注意的是,银联支付平台的API接口需要使用商户证书进行签名和加密,因此需要在SDKConfig中设置商户证书的路径和密码。
- SDKConfig.getConfig().getSingleRequestUrl()方法是用于获取银联支付平台的支付请求URL的。在调用银联支付平台的支付请求API接口时,需要将请求数据发送到银联支付平台的支付请求URL上,以便银联支付平台进行处理。getSingleRequestUrl()方法就是用于获取这个支付请求URL的。
- 在调用银联支付平台的支付请求API接口时,需要将请求数据使用商户证书进行签名和加密,然后将签名后的数据发送到银联支付平台的支付请求URL上。银联支付平台会使用银联公钥证书进行验签和解密,然后处理请求数据并返回响应数据。因此,在调用银联支付平台的支付请求API接口时,需要同时设置商户证书和银联公钥证书的路径和密码。
- SDKConfig.getConfig().loadPropertiesFromSrc()方法是通过调用银联支付SDK中的SDKConfig类的静态方法getConfig()获取SDKConfig实例,然后调用loadPropertiesFromSrc()方法加载配置文件的
- AcpService.post()方法是银联支付SDK中的一个工具类方法,用于向银联支付平台发送HTTP POST请求,并返回响应数据,并将响应数据进行验签和解密
依赖:
<dependency>
<groupId>com.unionpay</groupId>
<artifactId>acp-sdk</artifactId>
<version>5.1.0</version>
</dependency>
配置文件:
需要在项目的classpath下添加acp_sdk.properties文件
# 商户号
acpsdk.merId=your_mer_id# 商户证书路径
acpsdk.signCert.path=/path/to/your/signCert.pfx# 商户证书密码
acpsdk.signCert.pwd=your_signCert_password# 银联公钥证书路径
acpsdk.validateCert.dir=/path/to/your/validateCertDir/# 银联公钥证书文件名
acpsdk.validateCert.file=acp_test_verify_sign.cer# 银联公钥证书密码
acpsdk.validateCert.pwd=your_validateCert_password# SDK日志输出目录
acpsdk.log.dir=/path/to/your/logDir/
[Java实现银联支付 ]相关推荐
- Java写银联支付C扫B经验分享--框架SSM
用Java写银联支付C扫B经验分享–框架SSM POM.xml <!-- C扫B支付 --><dependency><groupId>org.projectlomb ...
- 1.Java接入银联支付(chinapay)教程及避坑点
一.背景及效果展示 现如今,诸多的供应链系统需要使用电子钱包功能,所以接入银联B2B无卡支付,是很多系统应用需要做的事情.银联支付的类型分很多种:网关支付(带token请求实现,下次有空再分享).B2 ...
- Java对接银联支付
一.下载银联sdk: 二.将所需的jar包导入项目中: 三.将示例代码拷贝到项目中来: 四.修改SDKConfig.java中加载公钥和私钥的位置,用动态加载的方式: path.substring(0 ...
- java调用银联支付接口开发,银联在线Java接口开发
netpayclinet.jar 根据项目工程的需要放置对应路径下 用于提供数字签名的方法调用 MerPrk.key 可以放置到任意路径下,但是需要调用方法指定文件位置和名称 商户签名私钥 PgPub ...
- java对接支付宝微信银联_经典设计模式之策略模式【如何重构聚合支付平台,对接【支付宝,微信,银联支付】】(示例代码)...
写在前面:设计模式源于生活,而又高于生活! 为什么要使用设计模式重构代码 使用设计模式可以重构整体架构代码.提高代码复用性.扩展性.减少代码冗余问题. Java高级工程师装逼的技能! 什么是策略模式 ...
- java 银联支付_java服务器端移动银联支付的流程
一,银联支付的整体流程 客户端提供服务器给服务器订单信息----服务器端拿到数据推送给银联指定的地址----银联给服务器端返回一个流水账号----服务器将流水账号返给客户端 ----客户端由于集成了银 ...
- 使用Java完成网上支付(1. 银联)
一. 账号申请 1. 打开网址,并注册 https://merchant.unionpay.com/cas/login?service=http%3A%2F%2Fmerchant.unionpay.c ...
- Java 银联支付官网demo测试及项目整合代码
银联支付(网关支付B2C) 一.测试官网demo a)下载官网开发包,导入eclipse等待修改(下载的开发包没有servlet jar包自己在Tomcat找一个) b)进入银联官网账户https:/ ...
- java对接银联商务公众号+服务窗支付(1)
java实现银联商务公众号+服务窗对接----支付下单 GitLab地址:https://gitlab.com/982837387/UnionPayGetWay.git 本文对接银联商务公众号+服务窗 ...
最新文章
- java项目测试支付异步通知接口
- IntelliJ IDEA 转移C盘.IntelliJIdea(索引目录)
- Python实例讲解 -- 发送邮件带附件 (亲测)
- 人工智能将进入能源生产领域
- 中国移动5G商用首批开放50城 明年扩展至全国地级以上城市
- 写好数据分析报告,数据的思路非常重要
- 终于,J 神还是加入了 Google!
- MySQL之四种SQL性能分析工具
- 数百种 Windows 软件的免费替代品列表(转)
- matlab 一阶惯性环节,一阶二阶电路滤波器的软件方式实现
- wps加载失败模板文件损坏_Normal模板异常损坏的修复方法
- Android OAID 获取 基于MSA oaid_sdk_1.0.25.zip
- 图形学空间坐标变化之二维图形观察及变换
- 可以跟小伙伴联机对战的五子棋,你会吗?今天用Python教大家搞定!!快上车!
- android原生分享功能,Android原生分享到微博、微信等平台的实现方式
- 英语学习笔记——语法篇(持续更新)
- 我愿称之为最强归纳—浮点数的规格化与进制数之间的转换
- python 文件命令_python中写入文件数据及文件定位操作命令
- c语言中变量赋值使用什么运算符,C语言基础学习运算符-赋值运算符
- 双指数边缘平滑滤波器用于磨皮算法的尝试
热门文章
- Python图像处理库PIL中图像格式转换(一)
- 大数据BI工具Tableau学习【第二期】]带你领略Tableau 的页面风采
- 任何没有行动的爱,顶多算是喜欢
- 解决webpack报错:ERROR in multi ./xxx/xxx.js ./xxx/xxx.js Module not found: Error: Can't resolve '.\xxx\
- Jmetal Problem和Problem Set的变量范围
- 付呗聚合支付快速教程 基础篇①——基本介绍和配置
- 一个关于高考的黑客故事:用2B铅笔注入阅卷系统
- 学生HTML动漫主题(人物)作业作品下载 个人人物博客网页设计制作 大学生个人网站作业模板 简单个人动漫主题网页制作
- 多视图几何笔记(一)射影平面
- 《Excel视频6》数值、left/right/mid/find