交通银行支付开发 小总结(.net)

交通银行支付开发备忘

1.搭建环境

下载并安装jdk1.5下载路径:http://download.csdn.net/download/zhldt2008/3604031(如果之前就安装过了,这步骤就可以省了)

1.       安装jdk与配置JDK环境变量 详细步骤请参照:

http://jingyan.baidu.com/article/bea41d435bc695b4c41be648.html

2.       放置商户证书

在C盘下先建一个bocommjava文件夹,然后把交通银行给的cert、ini文件夹COPY到c:\bocommjava目录下(这里针对Windows系统)

3.       安装银行根证书

   第一步: 取得要导入的证书。 第二步: 开启CMD窗体,进入C:\ProgramFiles\Java\jdk1.5.0\jre\lib\security 目录下。 第三步: 执行以下命令: keytool-import -alias cacerts -keystore cacerts -file C:/test.cer -trustcacerts -alias后面的为别名,可随便起名,即使有重名也不要紧,可替换。 执行命令后会要求输入密码。 默认密码为changeit再输入y,进行确认。

是不是说的有点复杂,来个简单的,直接打开cmd命令窗体输入以下内容:

cd C:\Program Files\Java\jdk1.5.0\jre\lib\security 按回车然后再输入:

keytool -import -alias cacerts -keystore cacerts -file C:\bocommjava\cert\test_root.cer(这的C:\bocommjava\cert\test_root.cer,为test_root.cer存放的路径)

默认密码为changeit 再输入y,进行确认,至此证书导入完毕。

4.       把资料里给的socket.jar,拷贝到目录:C:\ProgramFiles\Java\jdk1.5.0\jre\bin文件夹下然后到cmd窗口执行如下语句:

cd C:\Program Files\Java\jdk1.5.0\jre\bin  按回车 再输入java -jar socket.jar 8080 socket.log

5.       把交行给的文件夹lib里的全部jar文件,拷贝到C:\ProgramFiles\Java\jdk1.5.0\jre\lib\ext目录下

6.       启动Socket

找到start.bat,并编辑start.bat,需要修改的参数有:路径、端口、日志名称。

路径为socket.jar所在的绝对路径,端口为socket启动时所占用的端口号,日志名称可修改。默认参数为例子中所提供的。

然后双击start.bat即可运行(是有界面的运行出现cmd窗口,cmd窗口不能关闭)

修改示例如下:

因为我们之前把socket.jar 放在了 C:\Program Files\Java\jdk1.5.0\jre\bin 目录下

所以,我们要修改这个start.bat文件找到start.bat,然后右键编辑,把原有的内容改为:

cd C:\Program Files\Java\jdk1.5.0\jre\bin

java -jar socket.jar 8080 socket.log

这时你再去C:\Program Files\Java\jdk1.5.0\jre\bin 目录下,看看有没有socket.log这个文件,如果有的话,说明就没问题。

7.       开始你的编码之旅吧。

 

双击start.bat,你可能会遇到这样一个问题:

cmd窗口打开后一闪而过 (闪烁一下然后自动关闭) 如果是这样,说明start.bat没有执行成功

解决办法:打开cmd 窗口输入:cd C:\Program Files\Java\jdk1.5.0\jre\bin 按回车

再双击一下start.bat 试试

个人感觉双击start.bat不好,那就把start.exe 放在开机启动项里吧。

 

2.常见问题

编码测试中遇到的一些问题,给各位分享一下,或许能帮到你,毕竟银行那边的工作人员和很忙,能自己解决的就自己解决吧。 

因为本人比较菜,遇到了不少问题。

问题1:跳转到测试地址:https://pbanktest.95559.com.cn/netpay/MerPayB2C 正常,但是如下错误:出错啦,请您回商户银行重新进行支付。

解决方案:

用火狐的FireBug或chrome自带的调试器查看https://pbanktest.95559.com.cn/netpay/MerPayB2C这个页面的表单提交内容,关键看提交过去的表单信息。如果你的表单信息为空,说明你的页面提交数据有问题。


问题2:对,是的,又是“出错啦,请您回商户银行重新进行支付”

解决方案:查看你所提交的表单参数是否符合相关规范。

1.      传递的表单参数中,多了一个_VIEWSTATE 的参数

你可能会想,压根就没有传递这个参数啊,怎么会无缘无故出现呢?别着急,看一下你的

标签,是不是多了一个runat=”server” ? 这个要拿掉,多出来的参数都是它捣的鬼,要想知道具体是为什么,去http://blog.csdn.net/qdzx2008/article/details/5334499看看吧。

2.      orderDate的参数值 这样传递参数值是不对的,(参数值的格式是yyyymmdd

3.      orderTime的参数值 这样传递参数值是不对的,(参数值的格式是hhmmss

4.     issBankNo的参数值为空也就是交行签名数据为空,这个当然报错。(去调试看看,是不是代码出现 bug,或是该放的文件没放好,jar文件没有放到相应的位置

5.      如果上述问题你没有出现,但是还是报这个错误。那么再看看你的form表单submit中是不是有name属性,有的话去掉,或是把name换成id

6.      测试都成功了,一看商户名称


是融易通,有没有想把这三个字改成自己网站名称的?好吧,修改参数值

proxyMerName ="**商城"; 

再次执行报错:提示代码: EBLN0183  提示信息: 验证签名失败,请与银行联系

知道为什么吗?银行的解释是这样的:商户名称不是由你发来的是根据商户证书从后台查出的。你没开正式商户证书没有连接生产环境就没法显示正确的商户名称。

 

 如上有错误,或是更好的改进方法,还请各位高人基于评点。

3.上线要注意的问题

  按照交行的相关说明,导入root证书、修改xml文件、修改config.cs 文件中的商户编码为你们所申请到的编码,配置java运行环境正确的端口号、还有一点的是:别忘记要修改跳转到交行支付的路径(一定要是上线的url)否则就会报“签名验证失败” 

你可能感兴趣的:(asp.net)