淘东电商项目(53) -银联支付案例源码分析

简介: 淘东电商项目(53) -银联支付案例源码分析

引言

本文主要讲解银联支付官方测试案例,并分析银联支付的流程。

本文目录结构:

l____引言

l____ 1.导入银联支付项目

l____ 2.效果演示

l____ 3.代码流程分析

1.导入银联支付

1.首先去官网注册账号(已有账号可以忽略此步骤),官网的地址:https://open.unionpay.com/tjweb/acproduct/dictionary

2.注册成功后,登录,登录成功后,进入商户测试中心

3.进入测试中心,点击左侧测试参数,下载下面红框的4个证书,测试demo需要用到。

4.进入开放平台下载demo:https://open.unionpay.com/tjweb/acproduct/list?apiSvcId=448&index=4

5.使用IDEA导入java项目(如果不知道IDEA如何导入Eclipse项目,可以参考我的博客https://yanglinwei.blog.csdn.net/article/details/106014301),导入成功如下图:

注意:配置tomcat时,红色框的内容必须如下,因为demo的代码写死了,否则运行不了!!!坑

6.配置证书路径:打开acp_sdk.properties文件,配置证书路径地址(配置成你本地的路径存放证书的路径即可)

2.测试

运行项目,浏览器输入http://localhost:8080/ACPSample_B2C/,demo界面的css样式丢失了(没有去找原因,使用Eclipse导入应该是没问题的,可能是IDEA没有配好,不影响功能演示),直接按下图,依次点击“消费样例”->"消费"->"提交”

点击提交后,会先跳转到:http://localhost:8080/ACPSample_B2C/form_6_2_FrontConsume,如下:

然后再跳转到支付界面:


支付账号可以在开放平台里获取,如下:

卡号 卡性质 机构名称 手机号码 密码 CVN2 有效期 证件号 姓名
6216261000000000018 借记卡 平安银行 13552535506 123456 341126197709218366 全渠道
6221558812340000 贷记卡 平安银行 13552535506 123456 123 2311 341126197709218366 互联网

网关、WAP短信验证码 111111 控件短信验证码 123456

网上截图如下:

输入银行账号后,下一步,输入用户信息,点击确认付款:


付款成功,可以看到界面如下:

点击返回商户,可以看到返回的响应参数如下:

3.代码流程分析

下面来讲解代码运行原理。

1.首先项目启动时,会进入AutoLoadServlet这个类,这个类从应用的classpath下加载acp_sdk.properties属性文件并将该属性文件中的键值对赋值到SDKConfig类中

2.当点击提交订单时,会进入Form_6_2_FrontConsume这个代码,并对信息进行校验。

UI 对应代码

3.我们分析上一步的最后一行代码,可以看到返回的是一个HTML页面

HTML页面的代码通过断点获取,可以看到里面的内容如下(整理后):

<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 </head>
 <body>
  <form id="pay_form" action="https://gateway.test.95516.com/gateway/api/frontTransReq.do" method="post">
   <input type="hidden" name="bizType" id="bizType" value="000201" />
   <input type="hidden" name="txnSubType" id="txnSubType" value="01" />
   <input type="hidden" name="orderId" id="orderId" value="20200509160810" />
   <input type="hidden" name="backUrl" id="backUrl" value="http://222.222.222.222:8080/ACPSample_B2C/backRcvResponse" />
   <input type="hidden" name="signature" id="signature" value="X2D6DAMvxPArQ4NIGPod45YkfLhIApFt8D5f5OVUVR3NV7EKhYMLSD4ndAT2brvdylwV0JmEeJ+jVzkJPZ1AjbXO9LEEkAHST5Pisx9aMvwgB563lCbLmsCoRaY3qVobmL6yHo2oA9kaaHLp1O54YudyAXa+xBZh+vgtsFHQ2LbOPAhjv0LeCm+tv8BlS7MJkRLZyqwu2XZLU0n9I2ADKqhWzxI9C91HUVJ5u0/vU2PSEhmS6FBA6TWyrZE7vIF9jjX0DvWz4T5yFtkcQYLDh6J4YBHIwMJpYDoYi70NrfowI6Z4/09eh88Cswv1pwh+dND7WFMEuBZF9W4cPNBu9g==" />
   <input type="hidden" name="txnType" id="txnType" value="01" />
   <input type="hidden" name="channelType" id="channelType" value="07" />
   <input type="hidden" name="frontUrl" id="frontUrl" value="http://localhost:8080/ACPSample_B2C/frontRcvResponse" />
   <input type="hidden" name="certId" id="certId" value="68759663125" />
   <input type="hidden" name="encoding" id="encoding" value="UTF-8" />
   <input type="hidden" name="version" id="version" value="5.1.0" />
   <input type="hidden" name="accessType" id="accessType" value="0" />
   <input type="hidden" name="txnTime" id="txnTime" value="20200509160810" />
   <input type="hidden" name="merId" id="merId" value="777290058110048" />
   <input type="hidden" name="payTimeout" id="payTimeout" value="20200509164025" />
   <input type="hidden" name="currencyCode" id="currencyCode" value="156" />
   <input type="hidden" name="signMethod" id="signMethod" value="01" />
   <input type="hidden" name="txnAmt" id="txnAmt" value="1000" />
   <input type="hidden" name="riskRateInfo" id="riskRateInfo" value="{commodityName=测试商品名称}" />
  </form>
  <script type="text/javascript">document.all.pay_form.submit();</script>
 </body>
</html>

4.可以看到返回的html,把内容都hidden了,浏览器自动解析,并提交,这时会跳转到银联支付的界面:


5.支付完成后,点击返回,可以看到会请求我们的前台地址(这个地址是在'acp_sdk.properties'里配置的)

点击“返回商户”:

跳转到配置的前台通知地址:

UI 代码

至此银联支付的源码讲解到此结束,具体的细节需要童鞋们自己断点去看。

目录
相关文章
|
8月前
|
开发者
淘东电商项目(52) -聚合支付开篇
淘东电商项目(52) -聚合支付开篇
43 0
|
8月前
|
数据库
淘东电商项目(54) -银联支付案例(同步与异步)
淘东电商项目(54) -银联支付案例(同步与异步)
78 0
|
8月前
|
设计模式 算法 Java
淘东电商项目(58) -聚合支付(基于设计模式自动跳转支付接口)
淘东电商项目(58) -聚合支付(基于设计模式自动跳转支付接口)
56 0
|
8月前
|
缓存 前端开发 安全
淘东电商项目(73) -秒杀系统(前端优化)
淘东电商项目(73) -秒杀系统(前端优化)
88 0
|
8月前
|
前端开发 JavaScript Java
淘东电商项目(24) -获取验证码功能
淘东电商项目(24) -获取验证码功能
44 0
|
8月前
淘东电商项目(80) -思维导图小结
淘东电商项目(80) -思维导图小结
25 0
淘东电商项目(80) -思维导图小结
|
8月前
|
消息中间件 NoSQL 前端开发
淘东电商项目(76) -秒杀系统(完整代码实现)
淘东电商项目(76) -秒杀系统(完整代码实现)
64 0
|
8月前
|
设计模式 算法 安全
淘东电商项目(78) -秒杀系统(服务保护)
淘东电商项目(78) -秒杀系统(服务保护)
51 0
|
8月前
|
前端开发 NoSQL 算法
淘东电商项目(77) -秒杀系统(小结)
淘东电商项目(77) -秒杀系统(小结)
33 0
|
8月前
|
Java 测试技术 Maven
淘东电商项目(13) -项目整合WxJava
淘东电商项目(13) -项目整合WxJava
38 0