严正声明,本文中所称的某支付平台系统,全为本人虚构,如有雷同,纯属巧合。

第一个问题,某支付平台系统,因为某种奇怪的原因,需要在前端代码里取得卡号,CVV的明文并赋予给相应的变量,这个过程虽然时间很短,但是代码跑起来确实会有这个过程。

那么这样做,就完全不符合支付行业的PCI Compliance标准了,连最basic版本的PCI Compliance,也不符合。

有人可能要argue,你看PayPal,Stripe的前端SDK,它们不是也可以操纵卡号,CVV等敏感信息,我们这么做,和它们一样,又有什么关系呢,它们的SDK允许这么做都能符合PCI Compliance,我们这么做为什么就不符合了呢。

其实,如果仔细研读PCI Compliance的文档,就会发现,其实在前端代码里操作卡号,CVV等敏感信息,并不能决定是否违反了PCI Compliance,所以在前端代码里操作这些信息,其实是完全可以的。但是这个的关键在于,你的前端代码的origin,是不是符合PCI Compliance。

也就是说起决定作用的是,你用来下载前端代码SDK的服务器,是不是PCI Compliance的。

像PayPal,Stripe这些,它们的前端SDK,都是浏览器下载于它们的已经完全经过PCI Compliance认证的服务器,这些SDK工作时的domain,这个domain里的所有服务器,也都是完全PCI Compliance的,所以它们的前端就是PCI Compliance的。

而某支付平台系统,它的SDK和某些实时生成的form的code,都是浏览器下载于它在azure上搭建的CDN和它的ux server。SDK工作时的domain,也是它的ux server的domain。然而某支付平台系统,它在azure上搭建的CDN和它的ux server,并不满足PCI Compliance的要求。PCI Compliance对于服务器硬件的要求和软件加密的规定极其严格,这里就不再展开了。

那么为什么PCI组织要求通过看你的前端代码的origin,来决定是不是符合PCI Compliance呢?那是因为,一旦你用来下载前端代码的server不是PCI Compliance,或者说有security隐患,那么hacker就有机会攻入你的server,篡改你服务器上的前端代码,等用户的浏览器下载了前端的code,那么hacker的恶意代码也会在用户的浏览器里毫无阻拦的跑起来,从而获得用户的卡号等敏感信息。

所以,某支付平台系统并不符合PCI Compliance,可能暗示着存在有安全隐患。当然有人也可以argue PCI Compliance也不是一个强制的一定要遵守的标准,但是在当前市面上所有类似的系统都是PCI Compliance的现在,某支付平台系统如果不是PCI Compliance,又怎么和别的系统竞争呢,又有什么存在的意义呢。

第二个问题,某支付平台系统,没有MTL。

MTL,即Money Transfer License。有了这个,钱才能进支付平台系统的账户,否则钱不能进入支付平台系统的账户。

MTL对于电商系统,意义重大。以淘宝为例,买家买了东西,买家付的钱必须先进淘宝自己的账户,然后卖家发货,买家确认后,淘宝再把钱转给卖家。

淘宝为什么要把买家的钱截取到它的平台账户里面呢,主要是淘宝作为平台,作为一个拥有绝对信用的中间商,需要同时兼顾买家和卖家的利益。为了照顾买家的利益,不能直接把钱打给卖家,否则卖家不发货了怎么办。

而某支付平台系统没有MTL,却也想做电商。

所以某支付平台系统只能把买家付的钱,直接付到卖家的账户上。尽管某支付平台系统,对于卖家的账户有部分的控制权,可以控制在卖家的账户上的钱,什么时候可以真的进入卖家的银行卡,并且卖家也不能自行提取他账户上的钱。但是这样造成了某支付平台系统实现如下功能时,需要付出巨大的努力,而不能比较轻松的完成:收货时间延长;针对买家的每一笔支付打钱到卖家的银行卡;买家不想要货了退钱的流程,等。并且没有MTL导致了某支付平台系统的核心电商卖家支付功能的实现,完全couple在了用的是哪一家支付提供商,每个支付提供商的流程和实现完全不同,而且并不是每个支付提供商都能让某支付平台系统对于卖家的账户有部分的控制权的,可能换个支付提供商,电商场景就做不了了。

没有MTL,还极大的限制了某支付平台系统的能力,平台的账户上有钱了,就可以玩出很多的花来,而没有MTL,就只能做最简单的场景。并且因为没有MTL,以至于对于每一个特定的支付项目,某支付平台系统都无法用一个统一的流程,需要对每个项目,客制化对应的流程,很多流程还需要外面的支付提供商提供客制化的API,这样就消耗了大量的资源和时间。

通过上面的描述可以看出,其实,某支付平台系统的核心功能,都是依靠外面的支付提供商PayPal,Stripe等来支持的。所以,某支付平台系统其实不应该叫支付平台,而只能叫做支付场景集成服务,它没有任何支付系统的核心,只不过是把外面的API包了一层而已,大量的工作都是在别的客户的代码库上去集成功能,更多的还是实现客户那边的business logic。这种叫做Partner Integration Engineering,我以前也做过,在VMware的产品里集成我们storage系统的能力。以为某支付平台系统做的是PayPal,Stripe那样的系统的,可能要失望了。

最后,要实现PCI Compliance和拿到MTL,需要巨大的投入。那么一种说法是,先把某支付平台系统做出来,做大,然后就可以证明某支付平台系统是很有前途的,这样就可以让公司做大手笔的投入来实现PCI Compliance和拿到MTL。另一种说法是,巨大的投入以实现PCI Compliance和拿到MTL,这是这个支付平台系统能做大做强的前提,没有这些,就限制了业务根本没办法做大。

所以到底是先有鸡还是先有蛋呢。某支付平台系统到底是想做成PayPal,Stripe,还是只想做系统集成服务呢?马云说过,因为相信,所以看见。想想王坚是怎么做成的。

上一篇 下一篇