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

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

前提

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

探究过程、现象和结论

一、初次注册

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

C1E913E1-3DF2-467D-8477-D9E6A0CACAE5.png


二、H5页面领取月卡

  • 描述

此时我们先不缴纳押金,寻找是否有免费的月卡可以领取。

  • 过程

1. 下图为国信证券推文,从中我们可以看到,小编很明确地告诉我们领取时间为9月1日——9月30日,但是扫描二维码进入页面,使用说明却显示本活动领取月卡的最后期限是10月30日。

CA5045D5B7786D4FEB74130D662712FC.jpg

2. 我们可以看到下图是两个不同的活动H5页面,左边为官方活动,右边为飞马旅的联名月卡,这两张月卡推文页所写的时间均为10.1-10.30,且页面模板也与国信证券的有所不同。观察到,两个页面除了颜色和卡名以外完全一致,但是左边月卡作为官方的发放的卡片,卡名却依然为联名月卡。

0D1711E1-5025-4CCE-9269-0AF6C2FE3406.png

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

5961507290473_.pic_hd.jpg

  • 数据

4A577A72-7528-4121-8995-A9586CF9D1C4.png

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


三、缴纳押金

  • 描述

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

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

64DC6E00-49A5-419F-8BFF-B0F45EE77C7F.png

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


四、续费

  • 描述

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

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

178

50C10166-DC15-4A23-B5FC-DC5C3D6A5DA4.png


五、退押金

  • 描述

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

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

退款文字

  • 数据

D3605992-A8C7-41FB-ADBB-CA690107878C.png

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


六、再次续费

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

12B14862-4F35-49D4-B571-0D4F96A34F37.png


七、再次领取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. 退押金当日的消费仍然算在上一张卡上,天数计算无需减扣当天使用

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

25AC0297-A4CC-43D3-8127-FE8ACD8DB95B.png

0条评论 添加新讨论

登录后参与讨论
Ctrl+Enter 发表