当前位置: > 财经>正文
连续支付(周期扣款)功能开发及注意事项 微信理财通买基金怎样取消自动扣款功能呢
最近有一个版本需求,需要接入周期扣款做连续会员的功能,没想到这一做就是小半个月,趟了很多坑,所以觉得有必要记录一下
1.周期扣款总体设计在支付宝和微信中(非苹果支付),周期扣款的流程主要有以下两种,并且各有利弊
先签约,签约成功后再由商户发起主动扣款 #推荐# 利端:由于一般来讲连续会员会有额外的折扣优惠,先签约再扣款避免了用户薅羊毛。 弊端:签约和发起扣款时分开的,要额外做很多工作保障一致性。并且据微信官方文档,主动扣款是要延迟一段时间才能发起的。支付并完成签约 利端:签约和支付是合在一起的,用户完成了签约即完成了第一次支付 弊端:在支付过程中,用户可以取消签约,只完成普通支付(好反人类,还可以取消),导致用户一直可以享受连续会员的优惠,但是并不进行签约。由于签约和扣款的一致性问题开发努努力还能保证一下,所以我目前选用的是先签约-再扣款流程,也推荐选用。
苹果连续订阅服务 总结一句话–对服务端来说都是满满的恶意。 首先用户付款连续订阅成功了,服务端收不到苹果的任何通知,只有IOS客户端才能知道用户订阅成功了。 其次,用户订阅期间内每次扣款,服务端也无法进行感知,必须要不断的轮询用户的订单列表才能进行判断(IOS客户端都有办法能知道用户续订了)。
下面是一图流,我目前的系统设计方案
2.支付宝周期扣款首先贴上官方文档地址-周期扣款 和支付宝对接还是相对轻松点的,毕竟技术支持还是比较尽心尽力的。 在先签约再扣款流程中,主要有用到以下几个接口
2.1 签约接口-文档签约接口有几个坑,在这里给大家排一下雷
签约最小的周期是七天。签约接口无法像下单接口一样,透传业务参数,需要开发者生成签约号并保留签约相关的业务信息。在签约回调接口中,目前只能收到用户成功签约的通知,收不到用户解约通知,用户解约的通知是回调到应用网关地址(超级坑)详见回调文档说明以下是签约接口调用的sdk示例
/** * @Description: 生成客户端唤起签约页面的参数 * @param notifyUrl 签约成功回调通知地址 * @param isH5 是否为h5 * @return: xxx.Result * @Author: lvqiushi * @Date: 2023-04-21 */public static Result userAgreement(AlipayUserAgreementPageSignModel model, String notifyUrl, boolean isH5) {AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", AlipayAppId, AlipayPriveteKey, "json",H5AlipayConfig.CHARSET, AlipayPublicKey, "RSA2");AlipayUserAgreementPageSignRequest request = new AlipayUserAgreementPageSignRequest();request.setBizModel(model);request.setNotifyUrl(notifyUrl);// 周期扣款场景使用小程序/h5 接口跳转至签约页面时请使用 alipayClient.sdkExecute 方法; 若想获取跳转版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。