银企互联NC中间件(演示:.NETJavaPhpPython)

Posted Mr方de银企互联知识分享

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了银企互联NC中间件(演示:.NETJavaPhpPython)相关的知识,希望对你有一定的参考价值。

*本程序非官方,作为企业客户的财务系统或客户端的一部分,由企业客户做好安全保护和维护*

* 使用本程序,视作已知晓且同意*


Java、php、Python我都没学过,网上摘了点代码,自己修改调试,完成了这次演示。一方面说明NC中间件的跨语言特性,另一方面,也表明通过本中间件来对接工行银企互联NC模式推广版,技术门槛可以降到极低。


对开发语言比较熟悉的,几个小时就能调通,包括大批量压缩方式、产生日志文件、获得电子回单文件等。


XML报文中的TranDate、TranTime、SignTime、fSeqno:

请使用<Name>XX</Name>格式,如使用<Name/>,程序无法自动替换内容。我没有使用XML相关的类,而是自己写了一个针对银企互联报文格式的字符串的类,采用<Name>XXXX</Name>这样的格式。


先使用.NET来演示我的NC中间件。


有一个公用的函数,是Http Post的功能,网上很多:

演示代码如下:

银企互联NC中间件(演示:.NET、Java、Php、Python)

上面这段代码,演示了一个查询余额(为了在命令行中直观显示,调用了NC中间件的QACCBAL接口),然后做一个10笔指令的支付,而且用的是压缩方式(鼠标选中的那段,加了<zip>和</zip>,告诉我的中间件,这利用压缩方式提交)。压缩方式支持1000笔(早期说法5000笔)。我这里只是演示压缩方式,10笔是不需要压缩的。


命令行运行:

银企互联NC中间件(演示:.NET、Java、Php、Python)

支付的自定义流水号是:1901021733P6B0@PE


查询该笔指令状态的程序就是:

银企互联NC中间件(演示:.NET、Java、Php、Python)

上述代码是查询指令状态,直接输出明文:


银企互联NC中间件(演示:.NET、Java、Php、Python)

上图中有</zip>信息,表明是压缩模式。


看一下PDF电子回单的代码,新增一个简单的函数,就是把Base64编码的字符串解码后写入文件:

static void B64String2File(string B64Str,string fileName)

{

byte[] bb= Convert.FromBase64String(B64Str);

FileStream fs = new FileStream(fileName, FileMode.Create);

fs.Write(bb, 0, bb.Length);

fs.Close();

}

做一个9分钱交易的电子回单:

银企互联NC中间件(演示:.NET、Java、Php、Python)

运行结果:

银企互联NC中间件(演示:.NET、Java、Php、Python)

打开PDF看看:

银企互联NC中间件(演示:.NET、Java、Php、Python)


代码简单而简洁,在艰苦的测试环境中也没有指定日期和时间。可以看看ICBC_Log目录,里面就是NC中间件自动产生的日志文件:

银企互联NC中间件(演示:.NET、Java、Php、Python)

可以看到这个PAYENT在支付之前,NC中间件主动发起一个请求去查询银行主机的日期时间,然后自动把XML中的相关信息调整到与银行日期时间一致。虽然,对银行来说会有一些“检测日期时间的”垃圾信息发过来,但对客户来说,是很好的体验。


下面用Java演示。

Java也网上找了一个Http Post的函数:

银企互联NC中间件(演示:.NET、Java、Php、Python)

先看一下如何使用ICBC_YQHL。

银企互联NC中间件(演示:.NET、Java、Php、Python)

这段代码就是把做一笔普通PAYENT,显示银行返回信息(明文)。

运行结果是:

银企互联NC中间件(演示:.NET、Java、Php、Python)

制作上面这笔67.89元的PDF电子回单的演示:先查询明细,获取时间戳,然后调用电子回单接口获得文件。

银企互联NC中间件(演示:.NET、Java、Php、Python)


获取的回单:

银企互联NC中间件(演示:.NET、Java、Php、Python)


PHP:

银企互联NC中间件(演示:.NET、Java、Php、Python)

php的代码,先查询余额,做一笔支付33.44元,再查余额。运行结果如下,可见余额已经变化。

银企互联NC中间件(演示:.NET、Java、Php、Python)

php,33.44元的交易的电子回单:

银企互联NC中间件(演示:.NET、Java、Php、Python)

银企互联NC中间件(演示:.NET、Java、Php、Python)


Python:

做一笔99.88元的支付:

银企互联NC中间件(演示:.NET、Java、Php、Python)

银企互联NC中间件(演示:.NET、Java、Php、Python)

上述交易回单:

银企互联NC中间件(演示:.NET、Java、Php、Python)

银企互联NC中间件(演示:.NET、Java、Php、Python)



2018年11月的时候,另一家使用SAP的客户,也选择了我的NC中间件对接,客户的开发团队还包含IBM的工程师。


12月末,重新制作测试环境数据,对方开发人员从早上9点开始到中午11:30,已经完成了支付的开发。测试过程中发生了“签名时间……”的错误,我发现是检测银行主机日期时间的时候超时了,没有检测到。另外,方便的让对方技术人员提供了日志文件,非常快速的判断了问题所在。


关于自主开发的NC中间件的文章,从“诞生”、“简介”、“部署”、“接口介绍”到今天的“演示”,应该差不多了。我提供了一个自认为优秀的轻量级开发对接平台,比起讲述具体如何面向NetSafeClient进行开发更有意义。至于未来是否经得起实践的检验,交给时间去判定吧。


*本程序非官方,作为企业客户的财务系统或客户端的一部分,由企业客户做好安全保护和维护*

* 使用本程序,视作已知晓且同意*


OVER

以上是关于银企互联NC中间件(演示:.NETJavaPhpPython)的主要内容,如果未能解决你的问题,请参考以下文章

用友ERP-nc保存的时候提示保存VO数组失败,详细请看日志是啥意思

XML报文:电子工资单

支付宝,微信接入需要注意点,招行银企直连接入注意点

RockBrain USB Server- 云计算虚拟化USB设备集中管理远程共享解决方案(涉及银企直联)

nc65启用中间件闪退怎么解决

大数据赋能 人行成都分行上半年促成银企融资对接超6000亿元