这一周,我肝了公司的聚合代扣支付网关!

1,550 阅读8分钟

这一周,我终于开发完成了公司的聚合代扣支付网关!!!

收钱吧

今天就给大家介绍一下微信代扣和支付宝的周期扣款那些事。

一、场景

在很多实际的商业场景中,有很多周期性扣款的需求,比如每个月收一次水电费,小区每个月或每个季度要交一次物业费,腾讯视频会员每个月交18元会员费等。

随着周期自动续费类业务的发展,适用周期自动扣款的业务场景越来越多。这些业务有以下共性:

  • 一旦开启续费,间隔周期时间固定;
  • 每期扣款金额基本上是已确定的。

二、支付宝周期扣款和微信代扣

支付宝和微信平台结合以上业务共性特征,分别开放周期扣款和代扣功能,商家可以通过使用这个功能,按照约定的业务规则进行异步扣款。

支付宝的周期扣款强调的是一个周期性,在每个周期的固定时间才能扣款一次款。微信的委托贷款并不是完全对等支付宝的周期扣款。微信委托扣款有三种模式(参考下图微信模板):1.授权扣款:在用户授权后,在实际消费后就可以自动扣款,比如火车票抢票场、打车类软件、停车场或高速公路无人缴费、理财通基金定投等;2.自动续费:这个和支付宝的周期扣款很像,有周期性,通常用于连续包月、包季、包年的业务场景;3.免密支付:用于小额免密支付场景,用户点击支付后无需输入密码即可完成支付。

品牌墙

2.1开通流程

目前商户在蚂蚁开放平台创建周期代扣应用,并提交审核。支付宝周期扣款对满足以下要求的商家开放:

  • 暂开放给企业用户;
  • 服务周期自动续费业务特性的商户都可以使用
  • 申请企业与支付宝合作年限1年及以上;
  • 在签约时,商家需要在线提交营业执照,注册资本大于等于1000万人民币;
  • 企业无经营风险,包含但不限于工商信息可查询到的风险信息:行政处罚、股权冻结、股权质押、动产抵押、动产抵押物等;
  • 目前周期扣款的额度限制为:对每个用户的单笔扣款不超过 100 元,当日扣款不超过 1000 元,当月扣款不超过 30000 元;
  • 扣款周期最短为 7 天,最长没有限制。

支付宝周期扣款的费率由收款方承担,目前费率为 0.6%。

支付宝周期扣款

目前微信支付委托代扣还不支持在线申请,需要通过对接的微信业务同学帮忙申请。申请时需要配置扣款模板,创建后模版内容是否可以修改,模版内容的扣款金额是不是实际扣款金额。

微信模板

2.2 接口对接流程

支付宝和微信都提供了两种签约扣款模式:1:先签约后扣款;2:支付中签约。

在我们的项目中,由于是项目的一期,我们的对接模式是先签约,后扣款的模式。

2.2.1用户签约

首先在用户在商户的H5页面或公众号中,选择使用支付宝或微信签约,然后调用我们系统的签约接口,按照微信或支付宝的规则,拼接URL Scheme连接返给用户手机使用的浏览器或公众号,访问url会拉起支付宝App或微信App进入相应的签约页面,用户点击签约,即可完成签约过程。

用户签约

在用户签约过程中,我们的系统后端会轮询调用支付宝、微信的签约查询接口查询签约结果,同时会等待支付宝、微信后端收到用户签约完成后的通知结果。

我们收到用户的签约成功的结果后,会通知商户,该用户签约完成。

上图是用户在H5页面选择支付宝签约时,拉起的支付宝签约界面。

2.2.2商户扣款

商户系统发现已经签约的用户需要扣费,就会调用我们的扣费接口,我们就会调用支付宝、微信的扣费接口进行实际的扣费。扣费不是支付宝或微信的主动过程,是需要商户发起的。

扣款

我们向支付宝微信发起扣款指令后,会主动调用扣款结果查询接口,查询扣款是不是成功,同时,等待支付宝、微信通知扣款结果。

当我们收到支付宝、微信扣款的最终结果后,会通知商户,该用户已经扣费成功了。

上图是,上商户发起扣款后,用户手机显示扣款成功的截图。

2.2.3.解约

解约有两种方式。1.用户在支付宝或微信中选择主动解约,2.商户系统发起解约。

商户系统发起解约时,会调用我们的系统,我们会调用支付宝或微信的解约接口进行解约。然后我们会调用签约关系查询接口查询是否解约成功,同时我们会等待支付宝或微信的解约完成通知。

解约

当我们收到商户的解约最终结果时,会通知商户。

上图是商户系统发起解约,解约成功时,用户收到的消息。

除了上面介绍的接口,还有修改扣款日期接口、退款接口,交易关闭接口等。

三、交互流程

交互流程

本次开发中,我主要负责代扣网关的开发,和下游不同的支付渠道支付宝、微信进行交互,为我们上游各种业务提供代扣的能力。

作为聚合代扣的网关,为上游各种业务方提供服务,需要考虑的问题也比较多,并发问题,上游轮询查询问题,以最快的速度获取支付宝微信的签约、扣款结果问题、如何接收支付宝微信的通知、如何通知上游业务方,通知失败如何处理等。这里就不详细说了。可以参考我之前的一篇文章《支付公司如何赚钱?支付网关如何设计?》

四、遇到的一些坑

超额问题

支付宝:目前支付宝的额度限制为:对每个用户的单笔扣款不超过 100 元,当日扣款不超过 1000 元,当月扣款不超过 30000 元;扣款周期最短为 7 天,最长没有限制。

微信:每个用户单笔500、单日2500、单月75000;

这里每个用户单日最高扣款需要说明一下,如果一个用户通过支付宝或微信和多个商户签约,这些商户在一天内的扣款总额就是当日最高扣款。

如果一个商户单笔扣款大于支付宝微信的限制,就需要让微信和支付宝给该商户提高当日扣款额度,支付宝微信愿不愿意给商户提额就看商户的能力了。

周期问题

支付宝:扣款周期最短为 7 天,最长没有限制。

微信:自动续费周期一般是以月、季度为周期,具体扣款发起时间不受模版内容的周期影响。

支付宝签约时需要确定用户的首次扣款时间,以决定下一个周期扣款的时间。如果按月扣款,那么首次扣款日期不能大于28号,这种情况可以将首次扣款日期设置为1号,然后可以提前三天发起扣款。

对接模式

一个商户如果想使用支付宝微信的代扣功能,有两种模式对接,1.商户模式对接:商户自己调用支付宝或微信的接口进行开发,或者商户找人带开发,这里开发使用的key是商户自己的;2.服务商(ISV)模式对接:商户不需要直接和支付宝微信对接,可以将自己的公众号或小程序授权给服务商,由服务商代替商户对接微信支付宝,这里使用的是服务商的key。

目前支付宝周期扣款功能暂不对系统服务商(ISV)开放,只能商户自己开发,或找人代开发。微信扣款的先签约后扣款模式支持服务商模式。

我们作为服务商,肯定是首选服务商模式,因为服务商模式我们才有钱赚。但是支付宝不支持服务商模式,我们只能免费给商户代开发了。

作为我们服务商,不管是让商户模式对接还是给商户代开发,都会涉及到秘钥管理的问题。关于秘钥管理,我会在我的《安全系列》的文章中作为一期详细说明的。

五、参考文档

微信代扣-商户模式对接文档

微信代扣-服务商模式对接文档

支付宝周期扣款文档

好了,这期就到这里,下一期我们来说一下即将开发的支付宝月月付!!

完成,收工!!

传播知识,共享价值】,感谢小伙伴们的关注和支持,我是【诸葛小猿】,一个彷徨中奋斗的互联网民工。