逆向解构:摩拜单车月卡系统
在共享单车市场已成红海、小型创业公司不断倒下的今天,月卡成为摩拜、OFO等玩家拉新、留存的不二选择。在本文探究了摩拜单车的月卡系统运行方式,以下就是作者探究的过程和结论,其中必有疏漏,欢迎指正、讨论。
PS. 本文详细描述了作者探究的全部过程,如果不想了解详细过程,可以直接拉到最后看结果 ^_^
前提
- 178开头手机号、185开头手机号,均未注册摩拜单车
- 测试日期为2017年10月3日
探究过程、现象和结论
(1)初次注册
描述
无
过程
- 注册新用户
- 跳过实名认证
- 跳过交纳押金
数据
结论
无
(2)H5页面领取月卡
描述
此时我们先不缴纳押金,寻找是否有免费的月卡可以领取。
过程
1. 下图为国信证券推文,从中我们可以看到,小编很明确地告诉我们领取时间为9月1日——9月30日,但是扫描二维码进入页面,使用说明却显示本活动领取月卡的最后期限是10月30日。
2. 我们可以看到下图是两个不同的活动H5页面,左边为官方活动,右边为飞马旅的联名月卡,这两张月卡推文页所写的时间均为10.1-10.30,且页面模板也与国信证券的有所不同。观察到,两个页面除了颜色和卡名以外完全一致,但是左边月卡作为官方的发放的卡片,卡名却依然为联名月卡。
3. 作者输入185手机号,成功领取了第一张官方赠送的月卡。但是在尝试领取第二张同模板联名月卡的时候,页面却显示您已领取过月卡 不能重复领取的提示。于是作者又尝试领取国信证券的联名月卡,提示成功。
4. 使用178手机号领取一张免费月卡
5. 分析页面URL,发现https://m.mobike.com/h5/partner_coupon/zh/index.html?citycode=021&src=weishuba&from=timeline&isappinstalled=0中页面内容随着src的改变而改变
6. 分析H5页面源码,发现资源文件中存储了所有页面的文字
数据
结论
- 摩拜联名月卡领取页自动续期了
- 摩拜官方月卡与其他联名月卡使用了统一模板
- 所有联名卡均指向某一模板,相同模板下属的不同联名卡不得重复领取
- 领取月卡时并不会检测是否已缴纳押金
- 月卡计算时间只到30天后的24点,而非精确到秒的标准30天时长
(3)缴纳押金
描述
按照规则,缴纳押金以后应该会赠送一张月卡,事实上却没有发现增加;只有剩余天数小于30天(事实上30天也可)才被允许退款
过程
- 向185账户缴纳押金,发现剩余时间并没有增加
- 向178账户缴纳押金,发现剩余时间并没有增加
数据
结论
- 赠送的月卡会立即生效,几张有效期重叠的免费月卡允许同时存在,月卡剩余时间以最晚为准
- 首充赠送的月卡与H5页面赠送的联名月卡应属同种
(4)续费
描述
按照规则,与领取的月卡不同,续费之后时间应该在原有基础上增加,事实上也确实如此
过程
- 向178手机号续费一张一个月月卡,续费之后月卡剩余天数变为60天,在原有基础上增加了30天,与规则符合。
- 使用185手机号续费,提示失败,与规则符合
数据
结论
无
(5)退押金
描述
按照规则,退款之后,免费月卡将消失,只剩下收费月卡
过程
- 使用178手机号退款,剩余天数归零,与规则符合
- 使用185手机号退款,剩余天数为31天,比想象中多1天
- 此时点击退款退款时,在摩拜的iOS端可以看到这段文字:
数据
结论
- 摩拜的月卡分为免费月卡和购买的月卡
- 在有付费卡的情况下,退款仍然会改变到期日
(6)再次续费
描述
过程
- 使用178手机号充值3个月,剩余天数变为91天,比想象中多1天
- 使用185手机号充值,提示失败,与规则符合
数据
结论
无
(7)再次领取H5页面月卡
描述
按照规则,每张月卡只能领取一次,但是规则又写,如果已领用且仍在有效期内,则不能再次领取,目前的情况是账号因为退款失去了全部免费额度,那么是否可以再次领取呢?
过程
- 使用185手机号领取H5页面月卡,提示您已领取过月卡 不能重复领取
结论
- 免费月卡在失效之后,并未删除,而是设置为失效状态
八、联系官方客服
描述
打电话询问摩拜官方,客服的态度有些不耐烦,但还是拿到了想要的信息
结论
- 月卡只按照月卡创建的先后顺序使用,不考虑免费/收费
疑惑和推测解决方案
到这里,还有两个问题没有解决
- 为什么3个月月卡购买后为91天(31+30+30),而1个月月卡购买只有30天
- 一个月免费月卡+一个月购买月卡的账户,退款前为60天,退款后余额为31天而不是30天
- 针对第一个疑惑,如果摩拜计算日期,仅仅是简单地改变年份和月份而不是真实计算90天以后的日期(这样做只需处理2月29日这一种特殊情况),那么2017年10月3日到2018年1月3日相差92天,2017年10月3日到2017年11月3日相差31天,两个天数均减去1天(即购买瞬间已默认消耗一天),就可以解释91天和30天的现象了
- 针对第二个疑惑,按前一算法,2017年10月3日到2017年12月3日相差61天,减去当天为60天,60天可以解释;按照客服说法,依据月卡获得顺序使用,那么消耗的首先是免费月卡,购买的月卡未被使用,要得出31天这个数据,必须有两个前提:
- 摩拜购买的月卡未被使用前,并不直接写死到期天数,而是以未使用状态的卡片存在
- 退押金当日的消费仍然算在上一张卡上,天数计算无需减扣当天使用
总结
总结一下现在所有的推测:
- 摩拜联名月卡领取页自动续期了
- 摩拜官方月卡与其他联名月卡使用了统一模板
- 所有联名卡均指向某一模板,相同模板下属的不同联名卡不得重复领取
- 领取月卡时并不会检测是否已缴纳押金
- 月卡计算时间只到30天后的24点,而非精确到秒的标准30天时长
- 赠送的月卡会立即生效,几张有效期重叠的免费月卡允许同时存在,月卡剩余时间以最晚为准
- 首充赠送的月卡与H5页面赠送的联名月卡应属同种
- 月卡分为免费月卡和购买的月卡
- 在有付费卡的情况下,退款仍然会改变到期日
- 免费月卡在失效之后,并未删除,而是设置为失效状态
- 月卡只按照月卡创建的先后顺序使用,不考虑免费/收费
- 摩拜在计算日期时,仅仅是简单地改变年份和月份而不是真实计算90天以后的日期
- 购买的月卡未被使用前,并不直接写死到期天数,而是以未使用状态的卡片存在
- 退押金当日的消费仍然算在上一张卡上,天数计算无需减扣当天使用
根据以上结论,可以设计一个最简版本月卡,满足当前需求:
以上就是作者探究摩拜月卡系统的全过程,欢迎大家留言、指正。
本文由 @PTHFLY 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自PEXELS,基于CC0协议
感谢分享