快捷交易一般需要先签约,生成协议号(Token)后再进行支付。
银行的快捷签约对于商户来说基本上有两种设计结构:
·商户一卡号结构,与商户和卡号相关,同一卡号下协议号不变;
·商户一会员号一卡号结构,与商户、会员号和卡号相关,不同的会员号对应的同一卡号的协议号不一样。
两种结构对于以下问题处理的灵活度是不一样的。商户卡号结构比较简单,可用性较差。不同的用户绑定一张卡,如果跟着卡走,一个解绑了,另一个用户也会自动解绑,但是现实生活里多个用户绑一张卡的情形很多。比如老板让秘书绑定自己的卡买东西,秘书离职了或者换秘书解绑了,结果老板自己的账户也不能用了。
下面我们看看快捷支付里的几个关键问题。
快捷问题一:是否支持重复签约?
答:重复签约是指已经签过约的卡号再次进行签约。需要确认这样的行为是否得到支持,比如进行重复签约时通道依旧会如第一次签约那样,验证卡信息是否正确,如正确再返回给商户或者支付平台“签约成功”;反之,则会签约失败。
在实际应用中,会有以下几种场景:
·实名制,只能将自己的卡用于自己已实名认证的账户下;
·允许多个用户绑定同一张卡;
·同一个用户多次绑定同一张卡。
对于这些场景,一定要明确是否支持重复签约,且每次签约信息验证是否独立、不影响之前的已签约情况。若不支持,则需要进一步确认是否会对已签约的卡号验证要素正确及返回协议号。
比如通道不支持重复签约,当已签约过的卡号再次进行签约时,通道返回“已签约”。那我们需要区分处理逻辑,通道方的不同处理逻辑对应的支付平台处理机制完全不同。
如果返回“已签约”的逻辑是验证了卡要素且为正确(否则会返回“卡信息错误”),那么这代表卡要素一定是正确的,支付平台可以将原卡号对应的协议号直接取出来进行支付。如果在此逻辑上,还能顺便返回原协议号给调用方,那么连调取该卡对应的原协议号流程都可以省略。
如果返回“已签约”的逻辑是不验证卡要素,仅代表该卡号已经签约过,那么无法判断该卡号是否正确。对于支付平台而言,简单的处理逻辑是告诉用户不支持重复绑卡;复杂点的是将卡要素上送自身鉴权通道进行鉴权,验证正确后再取出原协议号进行支付。
当然,作为支付平台,我们理想中的情况是银行支持重复签约,且是独立验证的,不影响之前的已签约情况。万不支持,也希望银行先验证要素正确再告知结果“已签约”,或者支付通道告知“已签约”的时候可以将原协议号一并返回。
当然实际情况可能会更差,什么都没有,支付通道只返回结果“已签约”,剩下的就得支付平台的产品经理自己想办法解决了。
确认的情况不同,针对的方案也会不一样;如果不进行确认,会造成诸多问题。下面我们分两种场景来介绍。
场景一:实名制,自己的卡只能用于自己已实名认证的账户下或者同一个用户多次绑定同一张卡。
在该场景下,会有以下问题。
·若不支持重复签约,则该用户删除了该卡或者因忘记再次绑卡的时候,会发生签约失败或者报错“该卡已签约”。
·若会影响之前已经签约的结果,则用户其余模块里已存在的协议号就会失效,但是用户和商户并不知道,依然发起支付,会支付失败。对于系统来说,这就是无效的脏数据了。
·如果针对“已签约”情况,返回结果的时候不验证要素,也不返回协议号,那么就需要自己借助额外鉴权数据库去完成鉴权,以及在验证要素正确后调取此卡号原协议号。
场景二:允许多个用户绑定同一张卡。
在该场景下,会有以下问题。
·若不支持重复签约,在其他用户签约同一张卡的时候,会发生签约失败或者报错“该卡已签约”。
·若会影响之前已经签约的结果,则A用户签约失败,结果B用户原本已经绑定了的卡也一并失效,造成B用户后续也会支付失败。对于系统来说,这就是无效的脏数据了。
·如果针对“已签约”情况,返回结果的时候不验证要素,也不返回协议号,那么就需要自己借助额外鉴权数据库完成鉴权,以及调取之前关于此卡号的协议号。
举个例子,大卫在某网站用自己的账户购买过东西,当时使用自己招商银行信用卡进行过签约,卡号为123。大卫把这张银行卡放在了助理小黄那里。小黄在同样网站登录自己的账户为公司购买东西,支付中使用大卫卡号为123的卡进行支付,支付流程也需要签约再支付。无论小黄使用的时候是否签约成功,均不能影响大卫账户的支付签约情况。如果小黄签约的时候,不支持重复签约,那么需要网站自己去验证要素正确性;结合鉴权、卡服务、 用户数据进行相当复杂的处理,才能保证老板和小黄各自独立使用,不影响。
如果银行对于已重复签约的情况不返回协议号,那么商户需要自己去捞取协议号和验证信息。
快捷问题二:用户签约后若支付信息变化,协议号是否还有效?
答:支付信息包括卡号、姓名、证件类型、证件号、手机号,如果是信用卡,还要加上有效期和CW。因为快捷支付是以协议号作为扣款凭证的,所以信息的变化是否造成协议号失效关系着支付能否成功。
接入过境内外几百家支付通道,笔者的实操经验如下。
·协议号是与卡号关联的,如果卡号变了,协议号一定会失效。
·对于绝大多数通道,姓名、证件类型、证件号、 手机号这些要素变化,协议号不变。
·如果过了有效期,用户未续办卡,协议号会失效;有效期如果变化,用户续办卡,协议号依然有效。
·CW依据各银行设定,有些CW变化后协议号依然有效,而有些CW变化后协议号会失效。