A Coder

Coding My Dream!

0%

建设银行接口开发注意事项

这几天一直在做公司项目里的3G这块,从购物车到订单再到个人中心,都自己一步步做下来,感觉好有成就感!~不过项目进展一直卡在建设银行的接口这块。不说废话,切入正题,就我这些天遇到的问题,注意事项做个记录,与大家分享。

我从建设银行相关人员哪里获取了一个设计文档,看了几遍之后,明白了其中的实现原理。主要如下:

1、有关付款和订单信息,通过MD5加密接口的参数传送采用普通的URL方式传到建行接口。如:

http://waptest.ccb.com/cmwap/mbswap12/payIndex.jsp?TXCODE=MP6000&MERCHANTID=123456789&ORDERID=20061001234&PAYMENT=200.00 &INVALIDTIME=20100317220000&REMARK1=&REMARK2=&WAPVER=wap1.2&MAGIC =qwertyuioplkjhgfdsazxcvbnm901234

MAGIC: 通过以下的数值字符串拼接后使用MD5计算出来:

TXCODE+MERCHANTID+ ORDERID+ PAYMENT

2、建行通过对数据重新MD5加密,与传来的MD5值比较,确认未被篡改。

3、建行付款成功后,也以GET方式传送数据到我们的服务器。数据经过MD5withRSA算法加密,也就是先经过MD5加密,再用RSA私钥加密生成256位16进制数字签名。和原数据一起传到我们的服务器。如:

http://xxx.xxx.xxx/CGI? MERCHANTID=0000003&POSID=000000000&BRANCHID=110000000&ORDERID=00000031 &PAYMENT=3.88&REMARK1=&REMARK2=&BJOURNAL=&DN=&SUCCESS=Y &SIGNBANK=ad33dec3fbfc15417402a1399e65e46996c0cf49fc7ffca9222f8cd693c8376b6f92882 8967bec424b3ef029516193b7d969ac1840083635a3e0901b8cd526caa44c1a072f496d7f0d4bca3 942c0d9030bede37c7809b835cec787eb39e18b7596a724fba9805b24714dfbb0f4a3fb430b32e0 75254a114d4c38a0ac52ef46a0

手机支付平台签名由以下字段顺序连接起来成一字符串,然后通过MD5withRSA算法对该串进行计算得出:

MERCHANTID + ORDERID + PAYMENT + BJOURNAL + SUCCESS

这个位置文档里写的不清楚,其实应是对以下字符串进行加密:

MERCHANTID=0000003ORDERID=00000031 &PAYMENT=3.88&BJOURNAL=45432525&SUCCESS=Y

而非他们的值进行加密!

4、服务器获取数据后,使用建设银行提供的公钥对数据进行解密得到32位的MD5值,再对返回数据进行MD5加密得到MD5值与公钥解密得到的MD5值进行比较,如果相等,即可认证用户付款成功!对订单进行付款确认处理!

主要流程就如上所示!

如果使用的是JAVA,那在设计文档里就有现成的类可以调用,但如果是其他的程序语言,不要伤心,也有COM组件可以调用!

组件可以在 苏前辈的 《建设银行接口详细说明》找到下载地址 注意事项如下:

1、需要安装微软的JAVA虚拟机,msjavx86.exe  如果你的电脑安装会出错内存不能为writer错误,那么强烈建议你更换版本号不一样的操作系统试试,我之前一直无法安装,就是系统的原因,我用的是Win2003Sp2系统,后来换用版本号为101019-0340的Win2003Sp2顺利安装。

2、使用COM组件需要先注册,使用 regsvr32 命令对CCBRSA.dll进行注册就可以了。

在苏前辈的文章中还有一些的实例代码,大家可以直接拿来用。希望能够解决大家遇到的问题。详细的步骤可以参考苏前辈的文章!《建设银行接口详细说明

PS:建行商户管理平台上每下载一次的公钥,都会是重新生成的!所以要及时修改生产环境中的公钥!