我开发过,呵呵。不要想的过于复杂。
在考虑实施网上支付的时候,你首先应该做的是联系相应银行,进行咨询。
主要是因为目前国内此类操作不是很规范,并不保证数据格式一定和银联相兼容。一般来说,银行会用专门放置在公网上的前置机和你的系统通讯,而你的系统是以银行给你规定好的通讯方式以及数据协议和前置机进行通讯。目前此类前置机平台一般以unix居多,它会公布一个ip以及port,后台用专门的守护进程进行监听。所以也就是说,你需要在你自己的系统中通过socket的方式,向它指定的ip:port按照它规定好的数据格式发送你的数据包。这种情况一般来说是单工的,也就是说,你只负责post,它只负责接受你发的数据包,但并不response。安全方面:做的好的银行也许会更加规范,在建立通讯之前,它需要验证你的合法身份,同时你也需要验证它的合法身份。此类安全性检查一般有几种方式,我举例说明一下。
1、也是最简单,但是比较傻b的做法,验证ip地址。只允许具体某些ip和前置机通讯。(注:伪造IP这种小儿科太简单,因此此类方法只能防君子,达不到金融系统安全标准)
2、验证用户和口令。这种方式比较常见,也有很多弊端,例如建立通讯前,TCP/IP无加密通道保护,容易被人窃取。
3、安装证书,前置机颁发证书给你的机器,在通讯前它会验证你的证书,并要求你post你的私钥,合法通过,然后你再验证它的证书以及私钥。全部合法通过,再建立ssl通道,开始通讯。
设计考虑:
由于自身系统具备自己的数据格式,所以考虑兼容性以及以后的扩展性,建立建立一个系统数据平台,所有数据以XML统一,然后在此平台上设计不同的数据接口,借以把XML系统数据“翻译为”各种数据格式。专门开发一个socket通讯模块,此模块要实现系统数据平台的数据泛型接口
以便和实现了相应数据接口的具体“数据翻译类”进行挂接,从而完成数据的翻译-->发送过程。大体思路就应该如此。当然,具体银行可能还有其他特殊要求,所以不能一概而论。希望能对你有帮助。good luck~~~~