java 实现银联B2B、B2C、无卡支付

说明
公司要求接入银联的网银支付,之前很想当然的以为和支付宝或者微信一样简单,所以自己捣鼓了半天也没捣鼓出来,相关的资料也不好查,只能找银联的技术要了一份demo,因为银联的代码非常老,用的是jsp+servlet,对于高度依赖框架的同学来说比较晦涩难懂,为方便大家,我结合网上有的资料和银联的demo做了些总结,希望能帮到一些需要的人
## 准备工作
在开始接入前,需要先和银联商务对接,获取测试环境的开户信(开户需要的相关信息),相关文件会以邮件方式发给你,如图
![在这里插入图片描述](https://img-blog.****img.cn/20191216174050119.png?x-ossprocess=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JiMTk5NTA3Nw==,size_16,color_FFFFFF,t_70
java 实现银联B2B、B2C、无卡支付
收到邮件后下载附件,解压后可得到开发jar包和商户信息
java 实现银联B2B、B2C、无卡支付
java 实现银联B2B、B2C、无卡支付
普通项目直接引入,maven则需要把jar打到本地仓库

开始接入

由于是前台接入,则需要在后台把相关报文(参数)封装起来,相关参数可在银联发给你的接口文档上查到

创建常量类,用于存放银联常量
java 实现银联B2B、B2C、无卡支付
创建工具类
java 实现银联B2B、B2C、无卡支付
创建源文件,用于存放银联证书路径
注意:必须为绝对路径

java 实现银联B2B、B2C、无卡支付
发起支付前 ,在这里插入代码验证,避免重复点击支付,业务代码根据项目自由发挥
java 实现银联B2B、B2C、无卡支付

封装报文,path 路径必须为配置源文件绝对路径 ,SecssUtil 为银联jar包自带的签名工具类

如果是后台发起,需要更改提交路径,并把报文封装成表单提交,我这里演示前台提交,不过多赘述
java 实现银联B2B、B2C、无卡支付
业务代码处理完成后,把报文data参数返回给前端
java 实现银联B2B、B2C、无卡支付
渲染成表单后自动提交,不出意外的话就会跳到银联支付页面
java 实现银联B2B、B2C、无卡支付
注意开发的时候一定要注意证书路径是否正确,还有提交地址