首先,这是一篇工具类的文章了,也是为了备忘,需求就是微信公众号的开发后台对接支付,有银联,支付宝,微信等,我负责写银联的接口。明天大年三十,今天在公司码完字也要灰走了,祝大家新年快乐,发大财。
先说一下实现的整个流程,通过一个链接或者按钮直接跳转到银联的页面,中间带着支付金额和收款的银行账户,支付完成跳回原页面显示成功或失败,这里普遍用到的是,返回一个form表单,模拟点击跳转,多个input携带参数。
这是银联的接口api页面
https://open.unionpay.com/tjweb/acproduct/dictionary
先下载银联的demo工程
https://open.unionpay.com/ajweb/help/file/techFile?productId=1
下载后是这样的(根据语音选择java版,仔细通读里面的readme.txt,根据里面操作打开工程)
是个传统的web工程,用的还是servlet,大致就是把项目里写好的方法cv过来,所以得自己把这个demo项目看懂了,楼主比较笨,花了两个12-3点才看个大概。
这是打开后工程的样子(有一个是银联自己的包,在WEB_INF下的lib里,需要自己引入,不是maven工程,最好用eclipse打开,idea下也有eclipse方式打开的模式)
其中,Form_6_2就是支付接口,6_3是撤销,6_4是退款,6_5是查询
我写的思想是把所有要用到的方法全部放在了一个类里UnionPay,包括加载的参数,方法都改为了private,直接互相调用,根据demo里的方法一层一层的复制粘贴就行,最后这个类大概1000行,反正都是银联写好的方法,改动的几率很小,代码就不粘了,一方面机密,一方面银联demo里都有,
ps:好像没说什么有用的东西,这种工具类的文章尽量帮大家少踩坑吧,代码还是得自己写,放2篇我参考的博客https://www.cnblogs.com/aiyoubucuoo/p/5488540.html
http://blog.csdn.net/u010882234/article/details/56005197
配置信息在properties中,具体的得自己看代码才能明白,我这里就是给大家把我踩的坑说一下:
1 . 代码中说明了签名私钥证书,中级证书,根证书,加密公钥是需要的,但是磁道加密公钥和签验证书是不需要的,我问过银联的客服现在(20180214)正在开发,但是不能用,所以不用加载磁道公钥和签验证书,不然会报错
2 . 本地测试需要配置本地证书的路径,在服务器上配置服务器路径,证书不能放在项目中(!!!),
敏感信息加密证书路径
acpsdk.encryptCert.path=/Users/huojian/Documents/target/acp_test_enc.cer
验签中级证书路径(银联提供)
acpsdk.middleCert.path=/Users/huojian/Documents/target/acp_test_middle.cer
验签根证书路径(银联提供)
acpsdk.rootCert.path=/Users/huojian/Documents/target/acp_test_root.cer
3 。测试环境有银联测试账户,不用自己付款的
https://open.unionpay.com/ajweb/help/faq/list?id=4&level=0&from=0&keyword=测试卡
4 。 有任何问题都是可以问客服的,大大加快了开发效率,在官网登陆后右侧有在线客服,然后qq聊天
http://open.unionpay.com/upload/weixin/wqa_index.html
5 。 中间还遇到了一下问题,因为我用的是springboot,
怎么在springboot中引入第三方jar包https://www.jianshu.com/p/574f74d1d0ee
欢迎关注我的微博@住街对面的查理,我的生活很有趣,你要不要来看一看。