01目标
在APP内实现会员自动续费的功能
02流程
2.1、会员自动续费授权
会员自动续费本质是委托扣款模式。只有用户完成签约,商户才可以对用户账户进行自动扣款,从而完成会员订单的支付操作。
用户在应用内通过微信或支付宝的SDK完成代扣签约,微信或支付宝在用户签约成功后将签约信息通过异步通知的方式通知给商户后台。商户后台需要维护用户的签约信息,签约ID为核心信息,在订单的代扣请求中用于验证授权。
2.2、会员到期后自动发起续费流程
系统在检测用户会员即将到期后,发起该用户自动续费流程。需要完成订单创建及订单支付环节(代扣),最后在支付通知回调时为用户延迟会员时间。续费订单和普通订单主要区别在于是否调用委托代扣接口。
03委托扣款授权
用户委托扣款授权是会员自动续费的前提,主要有支付中签约和纯签约两种模式。
3.1、支付中签约
支付的同时完成代扣协议的签约。只需要在原先的下单参数增加签约信息就可以支持签约功能,看上去非常适合我们会员自动续费的场景。在用户下单购买会员连续包月之后一并完成签约功能。
然而在实践的过程中发现有个问题忽略了,支付中签约默认是不开启签约的,需要用户手动开启委托代扣。我们是希望可以提高用户签约比例的,需要用户手动勾选这一步的操作成本真的太大了,不符合我们的预期。
3.2、仅签约
纯签约模式是商户先通过前端页面调用纯签约接口与用户完成代扣协议签约,当需要扣款时可调用申请扣款接口进行自动扣款。用户在签约后商户后台会接收到回调通知。
04方案设计
调整后会员自动续费基本流程如下所示:
4.1、自动续费流程优化使用仅签约接口,不使用支付中签约接口
仅签约接口可以限定用户必须签约后才可以购买连续包月商品。为了模拟用户签约并支付的体验,在用户签约成功后由系统发起自动续费流程。
4.2、如何避免会员签约后的重复续费
优化流程后,用户签约成功之后需要发起自动续费流程。这里需要确保不会对用户重复续费,这里可以考虑使用签约ID作为订单幂等元素。相同的签约ID只会发起一次自动续费。
4.3、如何避免会员到期后的重复续费
当会员到期后会发起自动续费流程,这里可以考虑使用会员到期时间戳作为订单幂等元素。若会员续费成功,会员到期时间戳会相应延长,不会再触发会员即将到期的逻辑。若会员续费失败,会员到期时间戳还是不变,也不会发起多个续费订单。
05小结
在功能实现时换个思路可能会有不一样的发现。在这个功能上,使用仅签约接口可以模拟用户支付并签约的效果,符合我们的预期