银联支付之在线网关支付
- 准备
-
- SDK示例Demo
- 修改acp_sdk.properties
- 启动项目
- 测试
- 项目集成
- 添加依赖
- 集成SDK
- 支付类型与支付信息对象
- Mapper接口
- 支付接口
- 支付信息
- 真正支付接口
- 回调接口
- 加载配置信息
- 添加OR修改配置
- 添加数据库表
- 添加支付类型信息
- 执行测试
-
准备
中国银联.开放平台 https://open.unionpay.com/tjweb/index
选择业务产品.全渠道.在线网关支付
下载SDK
在线网关支付页面下载SDK
选择合适的SDK,导入开发工具
下载证书
在线网关支付页面选择网关测试进入商户入网测试中心,在测试参数项下载证书
SDK示例Demo
SDK示例Demo导入开发工具 ,并进行相应配置
修改acp_sdk.properties
配置项目访问路径配置4个证书存放路径 #前台通知地址,填写银联前台通知的地址,必须外网能访问acpsdk.frontUrl=http://localhost:9999/ACPSample_B2C/frontRcvResponse#########################入网测试环境签名证书配置 ################################# 签名证书路径,必须使用绝对路径,如果不想使用绝对路径,可以自行实现相对路径获取证书的方法;测试证书所有商户共用开发包中的测试签名证书,生产环境请从cfca下载得到。acpsdk.signCert.path=D:/certs/acp_test_sign.pfx##########################加密证书配置################################# 敏感信息加密证书路径(商户号开通了商户对敏感信息加密的权限,需要对 卡号accNo,pin和phoneNo,cvn2,expired加密(如果这些上送的话),对敏感信息加密使用)acpsdk.encryptCert.path=d:/certs/acp_test_enc.cer##########################验签证书配置################################# 验签中级证书路径(银联提供)acpsdk.middleCert.path=D:/certs/acp_test_middle.cer# 验签根证书路径(银联提供)acpsdk.rootCert.path=D:/certs/acp_test_root.cer
启动项目
配置后启动项目,示例中包含了各种Demo,后续项目集成可参考
测试
测试消费样例,卡号与支付密码在测试参数处
将SDK示例项目配置文件复制到项目中,修改外网能访问的前台通知地址
#前台通知地址,填写银联前台通知的地址,必须外网能访问acpsdk.frontUrl=http://jackchen.imwork.net
修改application.yml
server:port: 8888spring:application:name: pay-serviceredis:host: 127.0.0.1password:port: 6379#数据库连接信息datasource:url: jdbc:mysql://127.0.0.1:3306/pay?serverTimezone=UTCusername: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driver
添加数据库表
CREATE TABLE `payment_info` (`id` int(11) NOT NULL AUTO_INCREMENT,`type_id` int(11) DEFAULT NULL,`order_id` varchar(255) DEFAULT NULL,`platformorder_id` varchar(255) DEFAULT NULL,`price` decimal(10,4) DEFAULT NULL,`source` varchar(255) DEFAULT NULL,`state` int(255) DEFAULT NULL,`pay_message` text,`create_date` datetime DEFAULT NULL,`update_date` datetime DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8 CREATE TABLE `payment_type` (`id` int(11) NOT NULL AUTO_INCREMENT,`type_name` varchar(255) DEFAULT NULL,`front_url` varchar(255) DEFAULT NULL,`back_url` varchar(255) DEFAULT NULL,`merchant_id` varchar(255) DEFAULT NULL,`create_date` datetime DEFAULT NULL,`update_date` datetime DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
添加支付类型信息
支付类型表添加数据作为支付类型的配置, 回调地址需被外网访问
INSERT INTO `pay`.`payment_type`(`id`, `type_name`, `front_url`, `back_url`, `merchant_id`, `create_date`, `update_date`) VALUES (1, 'yinlianPay', 'http://jackchen.imwork.net/pay/callback/syn', 'http://jackchen.imwork.net/pay/callback/asyn', '777290058110048', '2021-08-30 16:25:51', NULL);
执行测试
生成支付信息
请求http://jackchen.imwork.net/generatePaymentInfo接口,生成支付信息,得到token
开始支付
以得到的token访问http://jackchen.imwork.net/payGateway?token=pay-3bb87b52-35e9-4592-ae72-1516bebd8754接口跳转到支付网关
支付成功,返回商户
支付状态查询
访问https://jackchen.imwork.net/queryPayStatus?orderId=qwesdfsfdfds431&txnTime=20210830180004接口查询订单状态
商户测试中心查询
商户测试中心查询交易信息
可看到很重要的2个信息:回调地址