java调银企互联接口_银企互联NC中间件(演示:.NET、Java、Php、Python)

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

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

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

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

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

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

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

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

演示代码如下:

51db2a672ae8b7e5e06c2e8d26a74eb0.png

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

命令行运行:

7caf54b392aed3b2dc0693952b315ffe.png

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

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

e9292451e426748cb4705c9253fd57fe.png

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

28a2df897cc64023a25df7a2e33c9df4.png

上图中有信息,表明是压缩模式。

看一下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分钱交易的电子回单:

34cfb9f9b2294162e442e1c0495f95ee.png

运行结果:

5b03ad711dc39eec779a81a170f05372.png

打开PDF看看:

bfcba4c52b988bdb1f0df5cc4d41ac76.png

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

04bc2ac89ceabc1ad5f679ec0c6e16ad.png

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

下面用Java演示。

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

778b3b25d993304bbb0423fc93ece403.png

先看一下如何使用ICBC_YQHL。

669b3b33ee679e8615c6c3f9af41797f.png

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

运行结果是:

4c42be964bdebfd3bca714c80e7c205c.png

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

72b5e33999cb16089691e5d0b374cf06.png

获取的回单:

b30c59bc6696ef5fba4b88f4ff53ddc8.png

PHP:

22f3eec119250808ce74c69b2e94d130.png

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

bd14891ee8dbaf78beecf3b953a0b112.png

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

1e6a5984e6243a9cdba56b14b3f251f9.png

3418cbe92d61c166fa191e43dd554425.png

Python:

做一笔99.88元的支付:

a018aae1c4ba6d8c9e70874a791764f5.png

aae2f34a4db2f5a580363d63970e2e50.png

上述交易回单:

d011276c330f2e23321ed0bd9bf1bbfd.png

817c2c7b875c5a6622b6371809434fa4.png

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

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

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

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

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

OVER

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
银企直连是指银行与企业之间直接建立的电子银行业务对接通道,使得企业可以通过互联网直接与银行进行资金清算、账户管理、贷款申请等业务交易,从而提高资金使用效率和运营效率。 在Java语言中实现银企直连,需要使用相关的API和工具,其中包括: 1. JCE(Java Cryptography Extension):Java加密扩展,提供了加密算法和密钥管理功能,保证交易数据的安全性。 2. JCA(Java Cryptography Architecture):Java加密体系结构,提供了加密操作的API,如数字签名、消息摘要等。 3. JDK(Java Development Kit):Java开发工具包,包含了Java编译器、JRE(Java Runtime Environment)、API等。 4. SSL(Secure Sockets Layer):安全套接层协议,提供了数据加密和身份验证功能,确保通信安全。 5. XML:可扩展标记语言,用于构建业务交易报文格式。 6. SOAP(Simple Object Access Protocol):简单对象访问协议,用于构建Web服务。 7. JAX-WS(Java API for XML Web Services):Java的Web服务API,提供了SOAP协议的支持。 具体实现步骤如下: 1. 使用JDK开发环境,编写银企直连业务交易系统的程序代码。 2. 使用JCE和JCA提供的加密算法,对交易数据进行加密和数字签名,确保数据的完整性和安全性。 3. 使用SSL协议,建立与银行之间的安全通道,确保通信的安全性。 4. 构建业务交易报文的XML格式,并使用SOAP协议将报文发送到银行的Web服务端口。 5. 使用JAX-WS API,解析银行的响应报文,并进行业务处理。 6. 对于响应报文,需要进行数据解密和验签操作,确保数据的完整性和安全性。 7. 将业务处理结果返回给企业客户端。 以上是Java语言实现银企直连的基本流程,具体实现还需要根据不同的银行和业务需求进行相应的调整和配置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值