逆向解构:摩拜单车月卡系统

1 评论 13305 浏览 54 收藏 11 分钟

在共享单车市场已成红海、小型创业公司不断倒下的今天,月卡成为摩拜、OFO等玩家拉新、留存的不二选择。在本文探究了摩拜单车的月卡系统运行方式,以下就是作者探究的过程和结论,其中必有疏漏,欢迎指正、讨论。

PS. 本文详细描述了作者探究的全部过程,如果不想了解详细过程,可以直接拉到最后看结果 ^_^

前提

  1. 178开头手机号、185开头手机号,均未注册摩拜单车
  2. 测试日期为2017年10月3日

探究过程、现象和结论

(1)初次注册

描述

过程

  1. 注册新用户
  2. 跳过实名认证
  3. 跳过交纳押金

数据

结论

(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页面源码,发现资源文件中存储了所有页面的文字


数据

结论

  1. 摩拜联名月卡领取页自动续期了
  2. 摩拜官方月卡与其他联名月卡使用了统一模板
  3. 所有联名卡均指向某一模板,相同模板下属的不同联名卡不得重复领取
  4. 领取月卡时并不会检测是否已缴纳押金
  5. 月卡计算时间只到30天后的24点,而非精确到秒的标准30天时长

(3)缴纳押金

描述

按照规则,缴纳押金以后应该会赠送一张月卡,事实上却没有发现增加;只有剩余天数小于30天(事实上30天也可)才被允许退款

过程

  1. 向185账户缴纳押金,发现剩余时间并没有增加
  2. 向178账户缴纳押金,发现剩余时间并没有增加

数据

结论

  1. 赠送的月卡会立即生效,几张有效期重叠的免费月卡允许同时存在,月卡剩余时间以最晚为准
  2. 首充赠送的月卡与H5页面赠送的联名月卡应属同种

(4)续费

描述

按照规则,与领取的月卡不同,续费之后时间应该在原有基础上增加,事实上也确实如此

过程

  1. 向178手机号续费一张一个月月卡,续费之后月卡剩余天数变为60天,在原有基础上增加了30天,与规则符合。
  2. 使用185手机号续费,提示失败,与规则符合

数据

结论

(5)退押金

描述

按照规则,退款之后,免费月卡将消失,只剩下收费月卡

过程

  1. 使用178手机号退款,剩余天数归零,与规则符合
  2. 使用185手机号退款,剩余天数为31天,比想象中多1天
  3. 此时点击退款退款时,在摩拜的iOS端可以看到这段文字:

数据

结论

  1. 摩拜的月卡分为免费月卡和购买的月卡
  2. 在有付费卡的情况下,退款仍然会改变到期日

(6)再次续费

描述

过程

  1. 使用178手机号充值3个月,剩余天数变为91天,比想象中多1天
  2. 使用185手机号充值,提示失败,与规则符合

数据

结论

(7)再次领取H5页面月卡

描述

按照规则,每张月卡只能领取一次,但是规则又写,如果已领用且仍在有效期内,则不能再次领取,目前的情况是账号因为退款失去了全部免费额度,那么是否可以再次领取呢?

过程

  1. 使用185手机号领取H5页面月卡,提示您已领取过月卡 不能重复领取

结论

  1. 免费月卡在失效之后,并未删除,而是设置为失效状态

八、联系官方客服

描述

打电话询问摩拜官方,客服的态度有些不耐烦,但还是拿到了想要的信息

结论

  1. 月卡只按照月卡创建的先后顺序使用,不考虑免费/收费

疑惑和推测解决方案

到这里,还有两个问题没有解决

  1. 为什么3个月月卡购买后为91天(31+30+30),而1个月月卡购买只有30天
  2. 一个月免费月卡+一个月购买月卡的账户,退款前为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天这个数据,必须有两个前提:
  1. 摩拜购买的月卡未被使用前,并不直接写死到期天数,而是以未使用状态的卡片存在
  2. 退押金当日的消费仍然算在上一张卡上,天数计算无需减扣当天使用

总结

总结一下现在所有的推测:

  1. 摩拜联名月卡领取页自动续期了
  2. 摩拜官方月卡与其他联名月卡使用了统一模板
  3. 所有联名卡均指向某一模板,相同模板下属的不同联名卡不得重复领取
  4. 领取月卡时并不会检测是否已缴纳押金
  5. 月卡计算时间只到30天后的24点,而非精确到秒的标准30天时长
  6. 赠送的月卡会立即生效,几张有效期重叠的免费月卡允许同时存在,月卡剩余时间以最晚为准
  7. 首充赠送的月卡与H5页面赠送的联名月卡应属同种
  8. 月卡分为免费月卡和购买的月卡
  9. 在有付费卡的情况下,退款仍然会改变到期日
  10. 免费月卡在失效之后,并未删除,而是设置为失效状态
  11. 月卡只按照月卡创建的先后顺序使用,不考虑免费/收费
  12. 摩拜在计算日期时,仅仅是简单地改变年份和月份而不是真实计算90天以后的日期
  13. 购买的月卡未被使用前,并不直接写死到期天数,而是以未使用状态的卡片存在
  14. 退押金当日的消费仍然算在上一张卡上,天数计算无需减扣当天使用

根据以上结论,可以设计一个最简版本月卡,满足当前需求:

以上就是作者探究摩拜月卡系统的全过程,欢迎大家留言、指正。

 

本文由 @PTHFLY  原创发布于人人都是产品经理。未经许可,禁止转载。

题图来自PEXELS,基于CC0协议

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 感谢分享

    来自广东 回复