工行网银B2c第三方接口开发

最近做网络商城的一个网银支付接口,可算给我焦死了,各种规则啊,总体来说比较麻烦,也不算难,只要搞清楚流程就好了。下面理清一下思路来说一下;

需要准备一些什么?

首先要带上银行卡和身份证去当地分行申请开发B2c第三方网银接口。然后当地银行会给你一个.pfx的文件。这其实就是一个加密的证书,然后你点击安装,输入你申请的公文阴匙,会把.pfx文件,拆分成.crt和.key的文件。这些文件的用途后面再讲,现在先不管,当地工行还会给你一个商户号,和商户代码。

业务说明?



首先要看清楚这张图,我们开发人员主要做的就是1,2,3.简单描述一下就是,从添加订单页面,填写你要添加的订单,然后提交数据到后台,然后我们使用工行的加密和签名方法对我们的数据进行封装一下,再返回到一个客户端,也就是一个视图页面,然后我们将订单数据提交到银行。剩下的都交给银行去处理就完事了,最后我们还有做一个页面取接收银行返回过来的数据,判断交易是否成功,然后我们对订单的状态进行调整。

添加订单

这个算是最简单的一个了,简单点说就是把我们的页面的表单数据提交到后台,也就是简单的添加,自己在表单里面定义好属性,然后提交到后台,不管是用struts还是spring也好,只要后台能接受到数据就完事了。

封装数据

最难最重要的就是这一步了,这一步比较麻烦,也比较复杂。首先要理解这一步是干嘛,简单的来说,就是我们要把我们的数据给封装成工行所需要的数据给提交过去。先看看工行开发文档是怎么说的:

FORM表单数据如下:

 

变量名称

变量命名

长度定义

说明

接口名称

interfaceName

MAX(30)

必输,

取值:“ICBC_PERBANK_B2C

接口版本号

interfaceVersion

MAX(15)

必输,

取值:“1.0.0.11

交易数据

tranData

无限制

必输,签名;

整合所有交易数据形成的xml明文串,并做BASE64编码;

具体格式定义见下文;

注意:

需有xml头属性;整个字段使用BASE64编码;

xml明文中没有回车换行和多余空格;

订单签名数据

merSignMsg

无限制

必输,

商户使用工行提供的签名API和商户证书将tranDataxml明文串进行签名,得到二进制签名数据,然后进行BASE64编码后得到可视的merSignMsg

注意:签名时是针对tranDataxml明文,不是将tranData进行BASE64编码后的串;

商城证书公钥

merCert

无限制

必输,

商户用二进制方式读取证书公钥文件后,进行BASE64编码后产生的字符串;


第一个,第二个都是固定的值已经定义好了,接下来看看第三个,文档里面已经说得很清楚了,我们要按照开发文档给的xml格式,去整合我们的交易数据。这里我用到了simpleframework.xml来解析xml技术,这种方法很适合哪种少重复,数据量小的,解析起来很方便。简单介绍一下他的规范。

root代表的是他的根节点,@Element标识元素,@Attribute标识元素属性。除root元素、最深一层元素,其他层元素对应的bean类都需将其子元素的bean作为属性引入。这里我们要做的就是给这些元素赋值,把我们的表单数据变成元素数据然后执行他的序列化方法序列成xml文件。


序列化后的xml文件如下图所示:

<?xml version="1.0" encoding="GBK" standalone="no"?>

<B2CReq>

<interfaceName>ICBC_PERBANK_B2C</interfaceName>

<interfaceVersion>1.0.0.11</interfaceVersion>

<orderInfo>

<orderDate>20100308141629</orderDate>

<curType>001</curType>

<merID>0200EC20001119</merID>

<subOrderInfoList>

<subOrderInfo>

<orderid>201003081416290</orderid>

<amount>1</amount>

<installmentTimes>1</installmentTimes>

<merAcct>0200026009018372212</merAcct>

<goodsID>001</goodsID>

<goodsName>威尼熊</goodsName>

<goodsNum>2</goodsNum>

<carriageAmt>20</carriageAmt>

</subOrderInfo>

<subOrderInfo>

<orderid>201003081416291</orderid>

<amount>1</amount>

<installmentTimes>1</installmentTimes>

<merAcct>0200026009018372212</merAcct>

<goodsID>001</goodsID>

<goodsName>威尼熊</goodsName>

<goodsNum>2</goodsNum>

<carriageAmt>20</carriageAmt>

</subOrderInfo>

</subOrderInfoList>

</orderInfo>

<custom>

<verifyJoinFlag>0</verifyJoinFlag>

<Language>ZH_CN</Language>

</custom>

<message>

<creditType>2</creditType>

<notifyType>AG</notifyType>

<resultType>1</resultType>

<merReference>localhost</merReference>

<merCustomIp>127.0.0.1</merCustomIp>

<goodsType>1</goodsType>

<merCustomID>123456</merCustomID>

<merCustomPhone>13466780886</merCustomPhone>

<goodsAddress>三里屯</goodsAddress>

<merOrderRemark>防欺诈接口专用</merOrderRemark>

<merHint>请保留包装</merHint>

<remark1></remark1>

<remark2></remark2>

<merURL>http://localhost:9080/EbizSimulate/emulator/Newb2c_Pay_Mer.jsp</merURL>

<merVAR>test</merVAR>

</message>

</B2CReq>

里面的数据有很多规则,这里大家一定要注意下,仔细阅读我们的开发文档,注意一定要细心,千万不要大意,不然会很麻烦;

好了这里我们要读取xml的数据,对它进行加密;



好了,现在我们的tranData数据基本上都封装好了。接着再看看我们的merSignMsg数据。这里要使用我们的key和crt加上我们的密钥匙


现在我们已经得到了merSignMsg数据了,最后我们要得到merCert这个数据,下面就不举例了,这个比较简。然后我们到controller,控制层去把数据放到session里面。再跳到页面表单。

<from method="post" action="

https://mybank3.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet">

<INPUT NAME="interfaceName" TYPE="text" value="ICBC_PERBANK_B2C" >

<INPUT NAME="interfaceVersion" TYPE="text" value="1.0.0.11">

<INPUT NAME="tranData" TYPE="text" value="${tranData}">

<INPUT NAME="merSignMsg" TYPE="text" value="${merSignMsg}">

<INPUT NAME="merCert" TYPE="text" value="${merCert}">

<INPUT TYPE="submit">

</from>

要注意提交时间,因为工行的测试时间是不定的,要和工行测试人员联系,在表单数据里面,时间相差要和工行测试时间保持在10分钟以内不然会报错的。好了今天就怎么多了,该睡觉了,6月份已经过去了,7月份也来到了,希望自己能在7月里收获更多,加油。吃的苦中苦,方为人上人,我始终坚信努力,就有收获,希望看到这篇文章的朋友,能够放下心中的浮躁,不要因为自己朋友的工资比自己高而暂时激发了自己的斗志,想到去学习,等到哪一天又忽然放弃了,我觉得学习java就一定要热爱他,这样才能够学好。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在线支付模块使用说明书 配置源程序 附加数据库SQL Server 2000 (1)将DataBase文件夹中的两个文件拷贝到SQL Server 2000安装路径下的Data文件夹中。 (2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项。 (3)将弹出“附加数据库”对话框,在该对话框中单击“ ”按钮,选择所要附加数据库的.mdf文件,单击“确定”按钮,即可完成数据库的附加操作。 将程序发布到Tomcat下 (1)将01、02文件夹拷贝到Tomcat安装路径下的webapps文件夹中。 (2)第1个实例需要将从支付宝获取的接口API打包成jar文件,打包后的目录如图所1.1示,然后将该jar文件与jsf-api.jar、jsf-impl、jstl-1.2.jar以及SQL Server 2000数据库驱动包(mssqlserver.jar、msutil.jar、msbase.jar)拷贝到Tomcat安装路径下的webapps\01\WEB-INF\lib文件。 图1.1 打包后的目录 说明:第2个实例需要将工行提供的两个类包icbc.jar和InfosecCrypto_Java1_02_JDK14+.jar,以及jsf-api.jar、jsf-impl、jstl-1.2.jar和SQL Server 2000数据库驱动包(mssqlserver.jar、msutil.jar、msbase.jar)拷贝到Tomcat安装路径下的webapps\ 02\WEB-INF\lib文件。 (3)选择开始菜单中的“所有程序\Apache Tomcat 6.0\Monitor Tomcat”命令,这时在windows的系统托盘中会显示标识Tomcat服务器启动状态的图标,如果显示为 ,则说明Tomcat服务器没有启动,这时可以在该图标上单击鼠标右键在弹出的快捷菜单中选择“Start Service”菜单项启动Tomcat服务器,启动后将显示为 。 (4)打开IE浏览器,在地址栏中输入http://localhost:8080/,进入“Tomcat软件管理”页面。 注意:8080为安装Tomcat时设置的端口号 。 (5)单击Tomcat Manager超链接,弹出“连接到 localhost”对话框。 (6)在用户名及密码处输入登录Tomcat的用户名和密码,单击【确定】按钮。 (7)进入“Tomcat应用程序管理”页面,在此页面中单击“01”、“02”,进入本程序主页面,完成Tomcat配置。 使用说明 本实现提供了两种支付方式,第一种是使用支付宝平台提供的接口实现在线支付,第二种是使用工商银行提供的接口实现在线支付。这里我们只介绍第一种的操作方法。运行程序,打开程序主页面,如图1.2所示。单击“查看详细信息”超链接,进入商品详细信息页面,在这里单击“放入购物车”按钮,将商品添加到购物车中。 图1.2 主页的运行效果图 将商品添加到购物车中后,进入购物车页面,如图1.3所示。在这里可以查看当前购买的商品、还可以修改商品数量及删除商品。 图1.3 购物车页面 确认要购买的商品后,单击“商品结算”按钮,进入登录页面,输入用户名mr,密码mrsoft,然后单击“登录”按钮进行登录,返回到购物车页面,再次单击“商品结算”按钮,此时进入填写订单信息页面,在这里选择“支付支付平台”,如图1.4所示。 图1.4 填写订单信息页面 信息填写完成后,单击“生成订单”按钮,生成订单,如图1.5所示。单击“确认订单”按钮,然后付款,完成购买操作。 图1.5 生成订单页面 单击“确定订单”按钮,进入链接支付宝平台的支付页面,如图1.6所示。单击图中的图片超链接就会将请求提交给支付宝平台的接口。 图1.6 链接支付宝平台的支付页面

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值