•http是走公网通信,数据存在泄漏风险。
•https也是走公网,有ssl层对称加密和非对称加密通信。
•Socket一般是一些老银行才会有的方式,这里会区分单工、异步、长连接、全双工,同步等。
•专线是大部分银行喜欢用的为了安全,提供的双方独立于公网的信道。这里比较安全,一般通信就是用http。
•前置机是在专线基础上,银行给我们的服务器上安装的一套银行自主开发的软件。我们与前置机软件交互,前置机软件再与银行通信。再前置机软件里自动完成数据拆包、解包,加解密等操作。
异步-与银行交互本条链接无法直接获取到银行的返回业务结果终态。需要异步的调用查询接口获取结果。
同步-与银行交互本链路可以直接获取业务结果终态。
补单-针对结果未知,不明确,异常等 重新发起查询接口进行状态确定。我们公司有专门的补单系统做业务一致性保证。
队列重试-我们一般在支付接口未同步拿到终态时,主动将订单号信息放到队列里,这个队列来帮我们再次查询获取结果。一般采用延迟队列,5s,20s,60s,120s等类似机制。
秘钥-对数据进行摘要算法签名的key,一般是先将数据进行字典序升序排序并用&拼接,最后再拼接上这个key,然后摘要算法算出摘要值,作为报文中的signature参数。
对称加密:只有一个秘钥,算法一般采用AES,DES,3DES,一般小型支付机构喜欢用3DES。大部分支付机构或银行喜欢用摘要值比对。
非对称加密-基于PKI体系的公私钥证书来做签名、验签。可以防止被篡改,防止发起方否认交易,但是报文是明文的。大部分支付机构不采用这个方式,因为证书需要花钱买。小部分支付机构是自己生成公私钥证书。
一般出现在和传统银行通信交互中。
建立socket通道,交互中规定报文数据格式,报文头(报文长度等信息)+报文体。根据报文长度读取指定长度数据流即可。不关闭socket通道。
注意点:
a.保持和对方通道的心跳检测,可以每隔20s互发一个简单报文包探测是否链路存活。
b.如果连接异常断开,需要有reConnection机制。
c.根据需要约定好需要建立的长连接个数。
d.单个数据包不宜过大。
TalkingCoding技术微信群,加群主vx:surwen8278