这一周,我终于开发完成了公司的聚合代扣支付网关!!!
今天就给大家介绍一下微信代扣和支付宝的周期扣款那些事。
在很多实际的商业场景中,有很多周期性扣款的需求,比如每个月收一次水电费,小区每个月或每个季度要交一次物业费,腾讯视频会员每个月交18元会员费等。
随着周期自动续费类业务的发展,适用周期自动扣款的业务场景越来越多。这些业务有以下共性:
支付宝和微信平台结合以上业务共性特征,分别开放周期扣款和代扣功能,商家可以通过使用这个功能,按照约定的业务规则进行异步扣款。
支付宝的周期扣款强调的是一个周期性,在每个周期的固定时间才能扣款一次款。微信的委托贷款并不是完全对等支付宝的周期扣款。微信委托扣款有三种模式(参考下图微信模板):1.授权扣款:在用户授权后,在实际消费后就可以自动扣款,比如火车票抢票场、打车类软件、停车场或高速公路无人缴费、理财通基金定投等;2.自动续费:这个和支付宝的周期扣款很像,有周期性,通常用于连续包月、包季、包年的业务场景;3.免密支付:用于小额免密支付场景,用户点击支付后无需输入密码即可完成支付。
目前商户在蚂蚁开放平台创建周期代扣应用,并提交审核。支付宝周期扣款对满足以下要求的商家开放:
支付宝周期扣款的费率由收款方承担,目前费率为 0.6%。
目前微信支付委托代扣还不支持在线申请,需要通过对接的微信业务同学帮忙申请。申请时需要配置扣款模板,创建后模版内容是否可以修改,模版内容的扣款金额是不是实际扣款金额。
支付宝和微信都提供了两种签约扣款模式:1:先签约后扣款;2:支付中签约。
在我们的项目中,由于是项目的一期,我们的对接模式是先签约,后扣款的模式。
首先在用户在商户的H5页面或公众号中,选择使用支付宝或微信签约,然后调用我们系统的签约接口,按照微信或支付宝的规则,拼接URL Scheme连接返给用户手机使用的浏览器或公众号,访问url会拉起支付宝App或微信App进入相应的签约页面,用户点击签约,即可完成签约过程。
在用户签约过程中,我们的系统后端会轮询调用支付宝、微信的签约查询接口查询签约结果,同时会等待支付宝、微信后端收到用户签约完成后的通知结果。
我们收到用户的签约成功的结果后,会通知商户,该用户签约完成。
上图是用户在H5页面选择支付宝签约时,拉起的支付宝签约界面。
商户系统发现已经签约的用户需要扣费,就会调用我们的扣费接口,我们就会调用支付宝、微信的扣费接口进行实际的扣费。扣费不是支付宝或微信的主动过程,是需要商户发起的。
我们向支付宝微信发起扣款指令后,会主动调用扣款结果查询接口,查询扣款是不是成功,同时,等待支付宝、微信通知扣款结果。
当我们收到支付宝、微信扣款的最终结果后,会通知商户,该用户已经扣费成功了。
上图是,上商户发起扣款后,用户手机显示扣款成功的截图。
解约有两种方式。1.用户在支付宝或微信中选择主动解约,2.商户系统发起解约。
商户系统发起解约时,会调用我们的系统,我们会调用支付宝或微信的解约接口进行解约。然后我们会调用签约关系查询接口查询是否解约成功,同时我们会等待支付宝或微信的解约完成通知。
当我们收到商户的解约最终结果时,会通知商户。
上图是商户系统发起解约,解约成功时,用户收到的消息。
除了上面介绍的接口,还有修改扣款日期接口、退款接口,交易关闭接口等。
本次开发中,我主要负责代扣网关的开发,和下游不同的支付渠道支付宝、微信进行交互,为我们上游各种业务提供代扣的能力。
作为聚合代扣的网关,为上游各种业务方提供服务,需要考虑的问题也比较多,并发问题,上游轮询查询问题,以最快的速度获取支付宝微信的签约、扣款结果问题、如何接收支付宝微信的通知、如何通知上游业务方,通知失败如何处理等。这里就不详细说了。可以参考我之前的一篇文章《支付公司如何赚钱?支付网关如何设计?》
支付宝:目前支付宝的额度限制为:对每个用户的单笔扣款不超过 100 元,当日扣款不超过 1000 元,当月扣款不超过 30000 元;扣款周期最短为 7 天,最长没有限制。
微信:每个用户单笔500、单日2500、单月75000;
这里每个用户单日最高扣款需要说明一下,如果一个用户通过支付宝或微信和多个商户签约,这些商户在一天内的扣款总额就是当日最高扣款。
如果一个商户单笔扣款大于支付宝微信的限制,就需要让微信和支付宝给该商户提高当日扣款额度,支付宝微信愿不愿意给商户提额就看商户的能力了。
支付宝:扣款周期最短为 7 天,最长没有限制。
微信:自动续费周期一般是以月、季度为周期,具体扣款发起时间不受模版内容的周期影响。
支付宝签约时需要确定用户的首次扣款时间,以决定下一个周期扣款的时间。如果按月扣款,那么首次扣款日期不能大于28号,这种情况可以将首次扣款日期设置为1号,然后可以提前三天发起扣款。
一个商户如果想使用支付宝微信的代扣功能,有两种模式对接,1.商户模式对接:商户自己调用支付宝或微信的接口进行开发,或者商户找人带开发,这里开发使用的key是商户自己的;2.服务商(ISV)模式对接:商户不需要直接和支付宝微信对接,可以将自己的公众号或小程序授权给服务商,由服务商代替商户对接微信支付宝,这里使用的是服务商的key。
目前支付宝周期扣款功能暂不对系统服务商(ISV)开放,只能商户自己开发,或找人代开发。微信扣款的先签约后扣款模式支持服务商模式。
我们作为服务商,肯定是首选服务商模式,因为服务商模式我们才有钱赚。但是支付宝不支持服务商模式,我们只能免费给商户代开发了。
作为我们服务商,不管是让商户模式对接还是给商户代开发,都会涉及到秘钥管理的问题。关于秘钥管理,我会在我的《安全系列》的文章中作为一期详细说明的。
微信代扣-商户模式对接文档
微信代扣-服务商模式对接文档
支付宝周期扣款文档
好了,这期就到这里,下一期我们来说一下即将开发的支付宝月月付!!
完成,收工!!
【传播知识,共享价值】,感谢小伙伴们的关注和支持,我是【诸葛小猿】,一个彷徨中奋斗的互联网民工。