目录

前言:

以下是调用银联支付平台的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实现银联支付 ]相关推荐

  1. Java写银联支付C扫B经验分享--框架SSM

    用Java写银联支付C扫B经验分享–框架SSM POM.xml <!-- C扫B支付 --><dependency><groupId>org.projectlomb ...

  2. 1.Java接入银联支付(chinapay)教程及避坑点

    一.背景及效果展示 现如今,诸多的供应链系统需要使用电子钱包功能,所以接入银联B2B无卡支付,是很多系统应用需要做的事情.银联支付的类型分很多种:网关支付(带token请求实现,下次有空再分享).B2 ...

  3. Java对接银联支付

    一.下载银联sdk: 二.将所需的jar包导入项目中: 三.将示例代码拷贝到项目中来: 四.修改SDKConfig.java中加载公钥和私钥的位置,用动态加载的方式: path.substring(0 ...

  4. java调用银联支付接口开发,银联在线Java接口开发

    netpayclinet.jar 根据项目工程的需要放置对应路径下 用于提供数字签名的方法调用 MerPrk.key 可以放置到任意路径下,但是需要调用方法指定文件位置和名称 商户签名私钥 PgPub ...

  5. java对接支付宝微信银联_经典设计模式之策略模式【如何重构聚合支付平台,对接【支付宝,微信,银联支付】】(示例代码)...

    写在前面:设计模式源于生活,而又高于生活! 为什么要使用设计模式重构代码 使用设计模式可以重构整体架构代码.提高代码复用性.扩展性.减少代码冗余问题. Java高级工程师装逼的技能! 什么是策略模式 ...

  6. java 银联支付_java服务器端移动银联支付的流程

    一,银联支付的整体流程 客户端提供服务器给服务器订单信息----服务器端拿到数据推送给银联指定的地址----银联给服务器端返回一个流水账号----服务器将流水账号返给客户端 ----客户端由于集成了银 ...

  7. 使用Java完成网上支付(1. 银联)

    一. 账号申请 1. 打开网址,并注册 https://merchant.unionpay.com/cas/login?service=http%3A%2F%2Fmerchant.unionpay.c ...

  8. Java 银联支付官网demo测试及项目整合代码

    银联支付(网关支付B2C) 一.测试官网demo a)下载官网开发包,导入eclipse等待修改(下载的开发包没有servlet jar包自己在Tomcat找一个) b)进入银联官网账户https:/ ...

  9. java对接银联商务公众号+服务窗支付(1)

    java实现银联商务公众号+服务窗对接----支付下单 GitLab地址:https://gitlab.com/982837387/UnionPayGetWay.git 本文对接银联商务公众号+服务窗 ...

最新文章

  1. java项目测试支付异步通知接口
  2. IntelliJ IDEA 转移C盘.IntelliJIdea(索引目录)
  3. Python实例讲解 -- 发送邮件带附件 (亲测)
  4. 人工智能将进入能源生产领域
  5. 中国移动5G商用首批开放50城 明年扩展至全国地级以上城市
  6. 写好数据分析报告,数据的思路非常重要
  7. 终于,J 神还是加入了 Google!
  8. MySQL之四种SQL性能分析工具
  9. 数百种 Windows 软件的免费替代品列表(转)
  10. matlab 一阶惯性环节,一阶二阶电路滤波器的软件方式实现
  11. wps加载失败模板文件损坏_Normal模板异常损坏的修复方法
  12. Android OAID 获取 基于MSA oaid_sdk_1.0.25.zip
  13. 图形学空间坐标变化之二维图形观察及变换
  14. 可以跟小伙伴联机对战的五子棋,你会吗?今天用Python教大家搞定!!快上车!
  15. android原生分享功能,Android原生分享到微博、微信等平台的实现方式
  16. 英语学习笔记——语法篇(持续更新)
  17. 我愿称之为最强归纳—浮点数的规格化与进制数之间的转换
  18. python 文件命令_python中写入文件数据及文件定位操作命令
  19. c语言中变量赋值使用什么运算符,C语言基础学习运算符-赋值运算符
  20. 双指数边缘平滑滤波器用于磨皮算法的尝试

热门文章

  1. Python图像处理库PIL中图像格式转换(一)
  2. 大数据BI工具Tableau学习【第二期】]带你领略Tableau 的页面风采
  3. 任何没有行动的爱,顶多算是喜欢
  4. 解决webpack报错:ERROR in multi ./xxx/xxx.js ./xxx/xxx.js Module not found: Error: Can't resolve '.\xxx\
  5. Jmetal Problem和Problem Set的变量范围
  6. 付呗聚合支付快速教程 基础篇①——基本介绍和配置
  7. 一个关于高考的黑客故事:用2B铅笔注入阅卷系统
  8. 学生HTML动漫主题(人物)作业作品下载 个人人物博客网页设计制作 大学生个人网站作业模板 简单个人动漫主题网页制作
  9. 多视图几何笔记(一)射影平面
  10. 《Excel视频6》数值、left/right/mid/find