在电子商务越来越发达的今天,第三方支付网关也越来越多,虽然第三方支付的公司很多,但在接口方面还是比较相似的,都有一定的规则在其中,比如支付,它势必会有订单生成、支付、返回成功标志、对账等功能,当然,各家网关还有自己独有的一些特点,比如IPS的分账系统。
或许大家会在各家公司之间取舍,就我个人来看,现在做的比较成功的,还算支付宝,有淘宝这个得天独厚的电子商务平台,使支付宝这个第三方成为了国内首屈一指的支付平台,稳定性和安全性都相对比较好。IPS是国内较早起家的第三方支付网关,成熟的商业模式和完善的客服体系,也在这个市场中,赢得了较好的口碑。还有一些大家比较熟悉的,快钱、财付通、chinapay、paypal等,就在今年,国内的银联机构也加入了这场战斗中,再加上各种第四方支付接口,电子商务在金融危机下的今天,正在迅速的发展中。
现在支付支持的方式越来越多,大概分为:
1、网银支付(银行卡)
2、充值卡支付(esales)
3、手机卡支付
4、第三方货币支付
除了网银支付这个大家都有的支付方式外,各家公司的其他功能,也是我们选择支付网关时需要考虑的。所以我们选择的时候需要考虑的一些问题如下:
1、稳定性
2、安全性
3、功能
4、手续费
5、结算时间
6、接口的复杂度
重要性从上往下,或许很多人会看手续费,但这其实并不是很重要,我使用过各种支付接口,有收费和免费的,免费的手续费也比较低,但在结算和功能上比收费的网关差的真的很多,所以大家在选择的时候一定要按照自己的网站规模来进行选择,那样才能更好的。这里我想说一下,就是第四方支付网关,这类网关其实是整合了多家网关,然后变为自己的一个支付网关,这类网关收费也相对较高,安全性方面也不是很好,如果可能还是不要选择这类网关比较好。
当你选择好支付网关后,请一定要下载他们的API文档,在这里 你可以下载 支付宝API IPSAPI
因为各家公司还有自己的特色,所有文档会不太一样,不过大致相同的是网银的支付方式,其实大概的流程如下:
提交:用户 –> 生成订单 –> 生成支付网关订单 –> 提交到支付网关(我们只需要到这里) –> 与银行支付网关交互
返回:银行返回到支付网关(我们无需知道) –> 支付网关返回网站 -> 处理返回数据 –> 返回给用户友好信息
知道了处理流程和API,我们的代码写起来就非常的简单,但我看了好多公司写的支付接口,说实在的,大多没有考虑到自己网站会使用多支付方式,造成了一个支付网关,一堆相互无关的代码,日积月累,留给后续程序人员带来了无尽的烦恼。其实我想大家也明白了,支付网关大体都差不多,只不过个别不一样,我们可以利用抽象工厂等设计模式,设计出漂亮的架构出来。关于支付网关框架,我是想做一个,其实很多CMS和BBS已经带了完整的支付框架,不过.Net的好像不多,我们可以参考他们的优点,仅仅需要配置,就可以方便任何人进行使用,如果有兴趣,大家可以联系我:)
说了支付,其实很多网关都功能比较完善,但仅仅支付是不够的,我们还需要考虑其他一些问题,比如技术支持、稳定性、数据完整性、掉单处理等等,都是我们网站开发人员需要考虑的问题。在支付网关中,有一项是大家比较忽略,但非常重要的一个环节:对账系统
何为对账系统呢?说白了,就像会计在核查账本,那我们在何种情况下会使用到呢?我想说的是,何处我们都要使用。看下面几种情况:
1、支付按流程完成,返回到用户。
2、用户支付途中遇到错误(包括网关异常、网络错误、返回错误等)
3、遇到骗子
第一种情况,大家会问既然成功了,为什么还要对账呢?因为我们与网关的交互都是依靠网络的,而网络却是最最不安全的东西,而金钱又是至关重要的东西,所以我们一定要对它严谨的处理。因为我们的支付包括返回,都是Post数据,Get返回,所以很可能有恶意的用户进行构造数据,蒙蔽你的返回处理系统,当然,如果你觉得你的返回接口比较强大,没有漏洞那就另当别论了。对账系统能够确保数据的再次比对,让你的数据能够安全的核对,因为对账系统一般都是由网关直接post给你,会有一定的安全措施在其中,比如域名、ip限制等。
第二种情况,相信大家会遇到的很多,这是无法避免的情况,不过大多情况都是发生在用户身上,网站服务器一般都是托管,24×7服务的,有了对账系统,能够在大多数情况下避免此种麻烦。当然还会遇到其个别的错误,这时候对账也无法成功,这时候就需要手工处理掉单。
第三种情况,为什么把他也列为一列呢?因为真的会有不少骗子,给你造成很多不必要的麻烦,这时候,我们可以根据自己的支付系统和对账系统一起来调查,这样也比较快捷,遇到了骗子就直接拉黑。
支付网关对账系统是非常严谨的一个系统,因为其中也包含了很多用户信息,包括安全验证码等,所以一般的对账系统,都有时间限制,比如5分钟,在5分钟内一直发送对账信息,如果成功,此条信息就销毁,避免不必要的麻烦。这是非常好的措施,但有时也会造成麻烦,万一我重启呢?不过好在这种情况,我们很少会遇到,除非遇到机房断电,519断网事件等。
那我们的对账系统需要如何来做呢?以我多年的经验,除了处理对账数据(与返回数据相类似),还要限定ip、限定域名等,以确保数据的安全性。
好了,就说到这里吧,后续我想还说说如何构建统一的支付接口,要看有没有时间了,这次把自己对支付网关的理解说了下,也把一些需要注意的说了说,希望能对你起到一些作用。
最后推荐几个国内好的支付网关:
原文:http://www.cnblogs.com/shaohz2014/p/3785542.html