逆向解構(gòu):摩拜單車(chē)月卡系統(tǒng)

1 評(píng)論 13336 瀏覽 54 收藏 11 分鐘

在共享單車(chē)市場(chǎng)已成紅海、小型創(chuàng)業(yè)公司不斷倒下的今天,月卡成為摩拜、OFO等玩家拉新、留存的不二選擇。在本文探究了摩拜單車(chē)的月卡系統(tǒng)運(yùn)行方式,以下就是作者探究的過(guò)程和結(jié)論,其中必有疏漏,歡迎指正、討論。

PS. 本文詳細(xì)描述了作者探究的全部過(guò)程,如果不想了解詳細(xì)過(guò)程,可以直接拉到最后看結(jié)果 ^_^

前提

  1. 178開(kāi)頭手機(jī)號(hào)、185開(kāi)頭手機(jī)號(hào),均未注冊(cè)摩拜單車(chē)
  2. 測(cè)試日期為2017年10月3日

探究過(guò)程、現(xiàn)象和結(jié)論

(1)初次注冊(cè)

描述

無(wú)

過(guò)程

  1. 注冊(cè)新用戶(hù)
  2. 跳過(guò)實(shí)名認(rèn)證
  3. 跳過(guò)交納押金

數(shù)據(jù)

結(jié)論

無(wú)

(2)H5頁(yè)面領(lǐng)取月卡

描述

此時(shí)我們先不繳納押金,尋找是否有免費(fèi)的月卡可以領(lǐng)取。

過(guò)程

1. 下圖為國(guó)信證券推文,從中我們可以看到,小編很明確地告訴我們領(lǐng)取時(shí)間為9月1日——9月30日,但是掃描二維碼進(jìn)入頁(yè)面,使用說(shuō)明卻顯示本活動(dòng)領(lǐng)取月卡的最后期限是10月30日。

2. 我們可以看到下圖是兩個(gè)不同的活動(dòng)H5頁(yè)面,左邊為官方活動(dòng),右邊為飛馬旅的聯(lián)名月卡,這兩張?jiān)驴ㄍ莆捻?yè)所寫(xiě)的時(shí)間均為10.1-10.30,且頁(yè)面模板也與國(guó)信證券的有所不同。觀察到,兩個(gè)頁(yè)面除了顏色和卡名以外完全一致,但是左邊月卡作為官方的發(fā)放的卡片,卡名卻依然為聯(lián)名月卡。

3. 作者輸入185手機(jī)號(hào),成功領(lǐng)取了第一張官方贈(zèng)送的月卡。但是在嘗試領(lǐng)取第二張同模板聯(lián)名月卡的時(shí)候,頁(yè)面卻顯示您已領(lǐng)取過(guò)月卡 不能重復(fù)領(lǐng)取的提示。于是作者又嘗試領(lǐng)取國(guó)信證券的聯(lián)名月卡,提示成功。

4. 使用178手機(jī)號(hào)領(lǐng)取一張免費(fèi)月卡

5. 分析頁(yè)面URL,發(fā)現(xiàn)https://m.mobike.com/h5/partner_coupon/zh/index.html?citycode=021&src=weishuba&from=timeline&isappinstalled=0中頁(yè)面內(nèi)容隨著src的改變而改變

6. 分析H5頁(yè)面源碼,發(fā)現(xiàn)資源文件中存儲(chǔ)了所有頁(yè)面的文字


數(shù)據(jù)

結(jié)論

  1. 摩拜聯(lián)名月卡領(lǐng)取頁(yè)自動(dòng)續(xù)期了
  2. 摩拜官方月卡與其他聯(lián)名月卡使用了統(tǒng)一模板
  3. 所有聯(lián)名卡均指向某一模板,相同模板下屬的不同聯(lián)名卡不得重復(fù)領(lǐng)取
  4. 領(lǐng)取月卡時(shí)并不會(huì)檢測(cè)是否已繳納押金
  5. 月卡計(jì)算時(shí)間只到30天后的24點(diǎn),而非精確到秒的標(biāo)準(zhǔn)30天時(shí)長(zhǎng)

(3)繳納押金

描述

按照規(guī)則,繳納押金以后應(yīng)該會(huì)贈(zèng)送一張?jiān)驴?,事?shí)上卻沒(méi)有發(fā)現(xiàn)增加;只有剩余天數(shù)小于30天(事實(shí)上30天也可)才被允許退款

過(guò)程

  1. 向185賬戶(hù)繳納押金,發(fā)現(xiàn)剩余時(shí)間并沒(méi)有增加
  2. 向178賬戶(hù)繳納押金,發(fā)現(xiàn)剩余時(shí)間并沒(méi)有增加

數(shù)據(jù)

結(jié)論

  1. 贈(zèng)送的月卡會(huì)立即生效,幾張有效期重疊的免費(fèi)月卡允許同時(shí)存在,月卡剩余時(shí)間以最晚為準(zhǔn)
  2. 首充贈(zèng)送的月卡與H5頁(yè)面贈(zèng)送的聯(lián)名月卡應(yīng)屬同種

(4)續(xù)費(fèi)

描述

按照規(guī)則,與領(lǐng)取的月卡不同,續(xù)費(fèi)之后時(shí)間應(yīng)該在原有基礎(chǔ)上增加,事實(shí)上也確實(shí)如此

過(guò)程

  1. 向178手機(jī)號(hào)續(xù)費(fèi)一張一個(gè)月月卡,續(xù)費(fèi)之后月卡剩余天數(shù)變?yōu)?0天,在原有基礎(chǔ)上增加了30天,與規(guī)則符合。
  2. 使用185手機(jī)號(hào)續(xù)費(fèi),提示失敗,與規(guī)則符合

數(shù)據(jù)

結(jié)論

無(wú)

(5)退押金

描述

按照規(guī)則,退款之后,免費(fèi)月卡將消失,只剩下收費(fèi)月卡

過(guò)程

  1. 使用178手機(jī)號(hào)退款,剩余天數(shù)歸零,與規(guī)則符合
  2. 使用185手機(jī)號(hào)退款,剩余天數(shù)為31天,比想象中多1天
  3. 此時(shí)點(diǎn)擊退款退款時(shí),在摩拜的iOS端可以看到這段文字:

數(shù)據(jù)

結(jié)論

  1. 摩拜的月卡分為免費(fèi)月卡和購(gòu)買(mǎi)的月卡
  2. 在有付費(fèi)卡的情況下,退款仍然會(huì)改變到期日

(6)再次續(xù)費(fèi)

描述

過(guò)程

  1. 使用178手機(jī)號(hào)充值3個(gè)月,剩余天數(shù)變?yōu)?1天,比想象中多1天
  2. 使用185手機(jī)號(hào)充值,提示失敗,與規(guī)則符合

數(shù)據(jù)

結(jié)論

無(wú)

(7)再次領(lǐng)取H5頁(yè)面月卡

描述

按照規(guī)則,每張?jiān)驴ㄖ荒茴I(lǐng)取一次,但是規(guī)則又寫(xiě),如果已領(lǐng)用且仍在有效期內(nèi),則不能再次領(lǐng)取,目前的情況是賬號(hào)因?yàn)橥丝钍チ巳棵赓M(fèi)額度,那么是否可以再次領(lǐng)取呢?

過(guò)程

  1. 使用185手機(jī)號(hào)領(lǐng)取H5頁(yè)面月卡,提示您已領(lǐng)取過(guò)月卡 不能重復(fù)領(lǐng)取

結(jié)論

  1. 免費(fèi)月卡在失效之后,并未刪除,而是設(shè)置為失效狀態(tài)

八、聯(lián)系官方客服

描述

打電話(huà)詢(xún)問(wèn)摩拜官方,客服的態(tài)度有些不耐煩,但還是拿到了想要的信息

結(jié)論

  1. 月卡只按照月卡創(chuàng)建的先后順序使用,不考慮免費(fèi)/收費(fèi)

疑惑和推測(cè)解決方案

到這里,還有兩個(gè)問(wèn)題沒(méi)有解決

  1. 為什么3個(gè)月月卡購(gòu)買(mǎi)后為91天(31+30+30),而1個(gè)月月卡購(gòu)買(mǎi)只有30天
  2. 一個(gè)月免費(fèi)月卡+一個(gè)月購(gòu)買(mǎi)月卡的賬戶(hù),退款前為60天,退款后余額為31天而不是30天
  • 針對(duì)第一個(gè)疑惑,如果摩拜計(jì)算日期,僅僅是簡(jiǎn)單地改變年份和月份而不是真實(shí)計(jì)算90天以后的日期(這樣做只需處理2月29日這一種特殊情況),那么2017年10月3日到2018年1月3日相差92天,2017年10月3日到2017年11月3日相差31天,兩個(gè)天數(shù)均減去1天(即購(gòu)買(mǎi)瞬間已默認(rèn)消耗一天),就可以解釋91天和30天的現(xiàn)象了
  • 針對(duì)第二個(gè)疑惑,按前一算法,2017年10月3日到2017年12月3日相差61天,減去當(dāng)天為60天,60天可以解釋?zhuān)话凑湛头f(shuō)法,依據(jù)月卡獲得順序使用,那么消耗的首先是免費(fèi)月卡,購(gòu)買(mǎi)的月卡未被使用,要得出31天這個(gè)數(shù)據(jù),必須有兩個(gè)前提:
  1. 摩拜購(gòu)買(mǎi)的月卡未被使用前,并不直接寫(xiě)死到期天數(shù),而是以未使用狀態(tài)的卡片存在
  2. 退押金當(dāng)日的消費(fèi)仍然算在上一張卡上,天數(shù)計(jì)算無(wú)需減扣當(dāng)天使用

總結(jié)

總結(jié)一下現(xiàn)在所有的推測(cè):

  1. 摩拜聯(lián)名月卡領(lǐng)取頁(yè)自動(dòng)續(xù)期了
  2. 摩拜官方月卡與其他聯(lián)名月卡使用了統(tǒng)一模板
  3. 所有聯(lián)名卡均指向某一模板,相同模板下屬的不同聯(lián)名卡不得重復(fù)領(lǐng)取
  4. 領(lǐng)取月卡時(shí)并不會(huì)檢測(cè)是否已繳納押金
  5. 月卡計(jì)算時(shí)間只到30天后的24點(diǎn),而非精確到秒的標(biāo)準(zhǔn)30天時(shí)長(zhǎng)
  6. 贈(zèng)送的月卡會(huì)立即生效,幾張有效期重疊的免費(fèi)月卡允許同時(shí)存在,月卡剩余時(shí)間以最晚為準(zhǔn)
  7. 首充贈(zèng)送的月卡與H5頁(yè)面贈(zèng)送的聯(lián)名月卡應(yīng)屬同種
  8. 月卡分為免費(fèi)月卡和購(gòu)買(mǎi)的月卡
  9. 在有付費(fèi)卡的情況下,退款仍然會(huì)改變到期日
  10. 免費(fèi)月卡在失效之后,并未刪除,而是設(shè)置為失效狀態(tài)
  11. 月卡只按照月卡創(chuàng)建的先后順序使用,不考慮免費(fèi)/收費(fèi)
  12. 摩拜在計(jì)算日期時(shí),僅僅是簡(jiǎn)單地改變年份和月份而不是真實(shí)計(jì)算90天以后的日期
  13. 購(gòu)買(mǎi)的月卡未被使用前,并不直接寫(xiě)死到期天數(shù),而是以未使用狀態(tài)的卡片存在
  14. 退押金當(dāng)日的消費(fèi)仍然算在上一張卡上,天數(shù)計(jì)算無(wú)需減扣當(dāng)天使用

根據(jù)以上結(jié)論,可以設(shè)計(jì)一個(gè)最簡(jiǎn)版本月卡,滿(mǎn)足當(dāng)前需求:

以上就是作者探究摩拜月卡系統(tǒng)的全過(guò)程,歡迎大家留言、指正。

 

本文由 @PTHFLY? 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自PEXELS,基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 感謝分享

    來(lái)自廣東 回復(fù)