作為產(chǎn)品經(jīng)理,不懂一點(diǎn)接口怎么行?
本文針對(duì)沒有接觸過接口的PM來說是劃知識(shí)點(diǎn),對(duì)接觸過的PM來說是討論和分享。
接口有什么用?
作為一個(gè)互聯(lián)網(wǎng)公司,很多資源和信息需要內(nèi)部共享或外部流通,那相關(guān)的數(shù)據(jù)就需要通過接口來傳輸。無論是2C還是2B的產(chǎn)品,都會(huì)用到接口,其中2B的產(chǎn)品們——數(shù)據(jù)、后臺(tái)、開放平臺(tái)/供應(yīng)鏈,幾乎和接口都是正面接觸。
接口怎么用?
目的千差萬別,用法殊途同歸。本文主要以美團(tuán)門票舉例,介紹接口的基本屬性、產(chǎn)品邏輯和異常情況等,供大家參考和討論。
怎么理解接口?
API接口是Application Programming Interface的簡(jiǎn)稱,是一些預(yù)先定義的函數(shù),包括接口地址、傳入?yún)?shù)和返回參數(shù)。
可以簡(jiǎn)單理解為,當(dāng)需要訪問某些數(shù)據(jù),正常狀態(tài)下傳入合格參數(shù),會(huì)收到該數(shù)據(jù)范圍內(nèi)的返回參數(shù)。
場(chǎng)景:在美團(tuán)旅游頻道,用戶選定時(shí)間、地點(diǎn)后搜索航班,后臺(tái)會(huì)調(diào)用搜索接口傳入時(shí)間、地點(diǎn)等參數(shù),接收航班類別、價(jià)格等參數(shù),在前臺(tái)頁(yè)面上進(jìn)行排列展示。同理,下單時(shí)會(huì)調(diào)用生單接口確認(rèn)是否成單,支付時(shí)會(huì)調(diào)用支付接口完成交易,自動(dòng)修改訂單狀態(tài)。
產(chǎn)品邏輯
很多公司都有開放平臺(tái)(也叫供應(yīng)鏈),比如美團(tuán)作為一個(gè)平臺(tái),很多的供應(yīng)商需要把自身資源導(dǎo)入平臺(tái),在平臺(tái)頁(yè)面上集中展示,供用戶選擇。一般情況下,美團(tuán)會(huì)有自身的一套接口,供應(yīng)商可以開發(fā)對(duì)應(yīng)的接口進(jìn)行對(duì)接,這種叫(運(yùn)價(jià))直連。
以下以美團(tuán)門票為例,此鏈接http://open.trip.meituan.com/是商家對(duì)接的開放平臺(tái),不涉密,商家技術(shù)、業(yè)務(wù)人員可以通過該地址上的接口說明進(jìn)行商家對(duì)接。
1.系統(tǒng)結(jié)構(gòu)
門票直連系統(tǒng)是通過接口,把商家的門票數(shù)據(jù)導(dǎo)入到美團(tuán)上收單,按用戶行為軌跡來說,實(shí)現(xiàn)“搜索-預(yù)定-下單-支付-售后”的自動(dòng)化。異常情況通過郵件等形式預(yù)警,手工介入處理。
(詳細(xì)流程見此鏈接https://www.processon.com/view/link/5943ec7ae4b0bdefc0582e3e)
①正常情況下,涉及前臺(tái)和用戶行為的業(yè)務(wù)流程:
②涉及后臺(tái)的產(chǎn)品數(shù)據(jù)&訂單狀態(tài)更新(部分簡(jiǎn)略):
2.接口總覽
按接口類型和屬性可分為三類:數(shù)據(jù)類、交易類和通知類。有一部分為美團(tuán)接口,另一部分接口需要商家進(jìn)行開發(fā)。
- 數(shù)據(jù)類:商家數(shù)據(jù)對(duì)接到美團(tuán)(涉及到商家的4個(gè)接口,拉取產(chǎn)品信息、產(chǎn)品變化通知、拉取景點(diǎn)信息、拉取價(jià)格日歷)
- 交易類:“用戶——美團(tuán)——商家”的交易行為(涉及到商家的5個(gè)接口)
- 通知類:包括商家開發(fā)的已出票、票已使用、已退款3個(gè)接口,美團(tuán)自有的已退款、查余額、編審狀態(tài)通知的3個(gè)接口。
異常問題
我做過的接口產(chǎn)品不多,但問題類似,主要包括兩類:接口問題、產(chǎn)品問題。接口問題就是無響應(yīng)、響應(yīng)過慢、重復(fù)響應(yīng)等,產(chǎn)品問題就是存量少、變價(jià)快、時(shí)間差導(dǎo)致下架更新不及時(shí)等。
在做接口相關(guān)的產(chǎn)品時(shí),異常與正常流程同等重要,這與核心用戶和邊緣用戶不是一個(gè)概念。所以在考慮每一步的流程時(shí),必須兼顧異常問題的發(fā)生與解決方法,盡量避免損害用戶體驗(yàn)和商家損失。
一般的解決方法是數(shù)據(jù)監(jiān)控,通過對(duì)每個(gè)業(yè)務(wù)節(jié)點(diǎn)的多項(xiàng)指標(biāo)進(jìn)行監(jiān)控,一旦超出閾值,就可以用郵件、短信等形式通知相關(guān)人員,及時(shí)解決問題。
接下來我們從兩個(gè)方面具體探討如何應(yīng)對(duì)這些問題。
1.用戶體驗(yàn)——具體場(chǎng)景&數(shù)據(jù)監(jiān)控
對(duì)用戶來說,流程的任一節(jié)點(diǎn)不順暢,都會(huì)導(dǎo)致體驗(yàn)不好,故根據(jù)用戶行為軌跡來進(jìn)行數(shù)據(jù)監(jiān)控。
①頁(yè)面展示慢——接口響應(yīng)時(shí)長(zhǎng)、用戶頁(yè)面停留時(shí)長(zhǎng)、跳失率
- Reason:實(shí)時(shí)調(diào)接口查詢景點(diǎn)&產(chǎn)品信息,因數(shù)據(jù)量大或頻率快導(dǎo)致。
- Solution:緩存數(shù)據(jù),每N分鐘更新一次。
②數(shù)據(jù)展示異常——后臺(tái)返回接口異常的次數(shù)和概率
- Reason:接口超時(shí)或異常。
- Solution:可以設(shè)定重復(fù)調(diào)用,多次重試失敗后,通過郵件等形式通知到運(yùn)營(yíng)、技術(shù)或商家。
針對(duì)數(shù)據(jù)型接口,對(duì)產(chǎn)品進(jìn)行下架或隱藏處理。
針對(duì)交易型接口,下單、支付的問題可以提醒用戶、為用戶推薦同類產(chǎn)品、對(duì)產(chǎn)品進(jìn)行下架或隱藏處理;退票類問題可以建議用戶之后重試,如果比較緊急可以聯(lián)系客服加急處理。
針對(duì)通知型接口,不涉及用戶,郵件處理即可,可人工介入更新信息。
③產(chǎn)品變動(dòng),特別是變價(jià)——下單失敗率、變價(jià)率、出票失敗率
- Reason:數(shù)據(jù)更新有時(shí)間差。
- Solution:
- 當(dāng)某一產(chǎn)品的失敗率或變價(jià)率超出規(guī)定,可隱藏或下架;
- 針對(duì)某些產(chǎn)品庫(kù)存少的情況進(jìn)行提示,預(yù)告風(fēng)險(xiǎn);
- 設(shè)定合理的定時(shí)更新任務(wù)。
④下單/支付/退票失敗——失敗率、失敗原因
- Reason:用戶可能多次提交,或者訂單已使用、已關(guān)閉等客觀原因,無法成功。
- Solution:
- 需要加入檢驗(yàn)機(jī)制,比如在短時(shí)間內(nèi)重復(fù)提交不調(diào)用接口,直接返回原結(jié)果;
- 善意提醒用戶不要重復(fù)提交,如“您的手太快了,請(qǐng)休息30s后再試”;
- 可以提供IM人工或電話咨詢、留言等選項(xiàng)。
⑤服務(wù)響應(yīng)時(shí)間長(zhǎng)——手工操作訂單量和占比
- Reason:比如用戶提交退票后長(zhǎng)時(shí)間不退款;支付后長(zhǎng)時(shí)間不出票
- Solution:
- 定時(shí)調(diào)用訂單查詢接口,更新訂單狀態(tài)并短信/推送消息告知用戶;
- 超過服務(wù)規(guī)范時(shí)間前發(fā)送預(yù)警郵件,人工介入處理。
2.商家體驗(yàn)——數(shù)據(jù)監(jiān)控&具體場(chǎng)景
對(duì)商家來說,用戶體驗(yàn)不重要,轉(zhuǎn)化率和利潤(rùn)才是重點(diǎn),故數(shù)據(jù)監(jiān)控以業(yè)務(wù)指標(biāo)為主。
①重復(fù)生單、生單不支付占庫(kù)存——訂單量、訂單支付轉(zhuǎn)化率、支付失敗率、庫(kù)存占用量和支付量
- Reason:用戶手速太快;惡意占庫(kù)存
- Solution:制定規(guī)則,同一人只能占一個(gè)庫(kù)存;同一訂單最多只能訂N個(gè)人。
②惡意重復(fù)調(diào)用接口——涉及到的每個(gè)接口調(diào)用頻率
- Reason:比如短時(shí)間重復(fù)調(diào)用某一接口
- Solution:
- 規(guī)定同一IP地址不能在短時(shí)間內(nèi)多次調(diào)用;
- 直接返回第一次調(diào)用接口的結(jié)果,不再重復(fù)調(diào)用;
- 每個(gè)接口在同一時(shí)間最多N次調(diào)用,否則返回失敗等。
③因數(shù)據(jù)更新不及時(shí)等導(dǎo)致的虧損——(傭金、廣告)投入產(chǎn)出比、人為損失
- Reason:用戶使用后退款完成、用戶支付后變價(jià)等
- Solution:根據(jù)時(shí)間差、處理規(guī)則來明確劃定責(zé)任方。
④結(jié)算問題——財(cái)務(wù)對(duì)賬自身支出(退款)和收入(美團(tuán)給商家的結(jié)算金額)
- Reason:平臺(tái)和商家以“T+N”的方式結(jié)算
- Solution:
- B端訂單系統(tǒng)里的財(cái)務(wù)對(duì)賬功能,可以用郵件形式每日發(fā)送;
- 監(jiān)測(cè)異常數(shù)據(jù),如當(dāng)日無結(jié)算、結(jié)算金額與訂單金額不一致。
以上即為接口主要的應(yīng)用對(duì)象和邏輯,邏輯不難但復(fù)雜度高,需要細(xì)心周到地考慮各種情況,希望能與大家一起討論。
本文由 @小喬 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
我想問透?jìng)髟撛趺蠢斫?。?!?/p>
透明無感知地傳輸數(shù)據(jù)的含義。舉個(gè)例子:
發(fā)短信功能(利用第三方服務(wù)騰訊云的發(fā)短信接口):當(dāng)用戶輸入手機(jī)號(hào)碼點(diǎn)擊發(fā)送驗(yàn)證碼時(shí),先調(diào)用我們自己后臺(tái)的發(fā)短信接口,然后我們后臺(tái)調(diào)用騰訊云的發(fā)短信接口,把用戶從前端傳過來的手機(jī)號(hào)碼再繼續(xù)傳給騰訊云接口。數(shù)據(jù)傳遞的鏈路是:前端->我們后臺(tái)->騰訊云。后臺(tái)沒有對(duì)數(shù)據(jù)做任何修改就直接傳給騰訊云的這個(gè)過程就是透?jìng)鳌?/p>
作者姐姐,我想問一下,系統(tǒng)與外部系統(tǒng)對(duì)接,是兩邊都需要出說明文檔嗎?各自對(duì)各自的,有的直接接口,沒的再做?我是小白,老板讓我負(fù)責(zé)這個(gè)
首先你們是平臺(tái)方還是接入方?文檔是平臺(tái)方出的,接入方按照文檔做就可以了。
是否異步出票為“是”時(shí),為什么支付狀態(tài)是“支付中”呢,前面不是已經(jīng)支付過了嗎?
前面的是否支付成功我認(rèn)為應(yīng)該是客戶支付驗(yàn)證是否成功,提交后,還未劃款,需要先做驗(yàn)證—是否可以出票,如果出票不成功,則支付無效,結(jié)果是支付不成功。故在出票過程中可定義為支付中。如果理解錯(cuò)了,歡迎指正
前面還有一步“是否可支付”,不是在驗(yàn)證訂單是否可支付么
作者大大可以問兩個(gè)問題么?
1.為什么拉取商戶的產(chǎn)品信息要透?jìng)?,加密傳輸一般寫一套?yīng)該就行,加密傳輸不會(huì)影響效率也不會(huì)增加工作量,所以這里使用透?jìng)骱头峭競(jìng)魇遣皇菦]有什么區(qū)別?
2.什么叫變價(jià)率呢?
期盼回復(fù)~~ ??
1.沒有特殊要求,都行沒區(qū)別。
2.變價(jià)率是指某一條數(shù)據(jù)產(chǎn)生的價(jià)格變動(dòng)的情況較多,超出自設(shè)的警戒值。
接口其實(shí)就是實(shí)現(xiàn)兩個(gè)系統(tǒng)(平臺(tái))之間數(shù)據(jù)相互調(diào)用,以保證數(shù)據(jù)閉環(huán)。對(duì)于2C產(chǎn)品來說,數(shù)據(jù)的共享是很敏感的事情,必須有商務(wù)運(yùn)作。
能加個(gè)聯(lián)系方式嗎 微信或者QQ什么的
公眾號(hào):qiaomaihexiaoqiao(亂入花間化綠葉)
有問題可以私聊
接口文檔也是產(chǎn)品寫嗎?
是技術(shù)寫,但是需要了解一下會(huì)出現(xiàn)的問題 知己知彼
已退款消息,應(yīng)該是合作方→美團(tuán)吧。
透?jìng)魇巧兑馑?/p>
不加工的傳輸
你是數(shù)據(jù)產(chǎn)品嗎?
不是,算是參與過
突然想拜你為師了,可以嗎
來啊來啊,關(guān)注我的公眾號(hào)吧~~ ??
公眾號(hào)是啥
qiaomaihexiaoqiao(亂入花間化綠葉)
搜不到這個(gè)公眾號(hào)呀
可以轉(zhuǎn)發(fā)到朋友圈嗎
可以啊,你說的是轉(zhuǎn)載還是轉(zhuǎn)發(fā)?
感謝分享
文章寫的很好,再接再厲!
get知識(shí)點(diǎn)了~~
感同身受。遇到接口調(diào)用無響應(yīng)、響應(yīng)過慢、重復(fù)響應(yīng),接口調(diào)用無重發(fā)機(jī)制,回調(diào)超時(shí)……
很厲害
mark
作為程序員給作者點(diǎn)個(gè)贊,頭像也好看
收藏了,不錯(cuò) ??
接口總覽那里的通知類接口是不是說反了?已出票、票已使用、已退款3個(gè)接口是美團(tuán)開發(fā)的,已退款、查余額、編審狀態(tài)通知的3個(gè)接口是商家開發(fā)的才對(duì)吧?
不是的。有些接口其實(shí)意思一致,但因?yàn)樾袨榘l(fā)起方和接收方不同,所以開發(fā)者不同。
已出票是商家在接到付款成功訂單后為用戶出票,然后通知美團(tuán)票已出,之后美團(tuán)再去通知用戶,票已使用、已退款這兩個(gè)接口同理。
訂單退款通知接口和已退款接口其實(shí)是一樣的,只不過行為分別由商家和美團(tuán)發(fā)起(因?yàn)橛脩籼峤簧暾?qǐng)的理由和時(shí)間等情況不同),所以分別開發(fā)接口。查余額是美團(tuán)通知商家,需要連接商家的接口才能通知到;編審狀態(tài)通知也是美團(tuán)去通知商家。
我突然間混亂了。。。。
正確的應(yīng)該為:“通知類接口:包括美團(tuán)開發(fā)的已出票、票已使用、已退款3個(gè)接口,商家的訂單退款、查余額、編審狀態(tài)通知的3個(gè)接口?!?/p>
恩恩,感謝作者的認(rèn)真解答~對(duì)接口的理解更進(jìn)了一步 ??
謝謝你的細(xì)心和反饋~~ ??
作者對(duì)接口了解這么多 是程序出身嗎
不是,正經(jīng)文科生 ??
難得
向你學(xué)習(xí)了。
好文 好文 收藏了!我喜歡主頁(yè)那個(gè)圖片哦!
小喬你好,我是大喬。來吧,一起王者榮耀。
沒玩過~
好尷尬
我是周瑜
圍觀丑拒。
撩妹失敗 換個(gè)套路吧
圍觀丑拒。
圍觀丑拒。
會(huì)員強(qiáng)撩翻車現(xiàn)場(chǎng)
你好我是孫權(quán),快跟我回家。