調用開放平臺的api的回調分析

最近在作一個使用美團api的項目,當用到美團門店解綁功能的回調時,開始思考它的功能linux

 

這是美團官方提供的api文檔,連接在這:http://developer.meituan.com/openapi#4.4json

 

美團官方文檔部分:windows

  

 開發者若是想要支持自主解綁功能須要進行一下對接步驟:api

  • 開發者在開發者中心的回調接口設置頁面設置"門店映射解綁回調地址"
  • 開發者接入解綁UISDK或者WEB解綁方式供商家使用
  • 商家本身操做解綁後,開放平臺會經過開發者設置的"門店映射解綁回調地址",將解綁信息回傳給開發者

 

注意
  • 回傳的參數不是json,http方式是POST,contentType是application/x-www-form-urlencoded
  • 因爲歷史緣由,存在兩個相贊成義的參數ePoiId,epoiId。對於像linux等區分大小寫的系統,沒什麼問題,可是像windows系統的程序,須要單獨處理一下兩個epoiId
  • 開發者接收到回調參數以後,必須返回json字符串{"data":"success"},開放平臺若是沒有推送成功,或者沒有收到{"data":"success"},或發起重試,最多重試10次,每次重試的間隔隨時間增長而增長。開發者須要本身處理重試推送的消息。
  • 一店一token,團購和外賣同時解綁,再次綁定token會更新;只解綁其中一個業務再次綁定,token和以前的一致。

 

 流程大體是這樣:app

1.程序先調開放平臺的解綁地址函數

2.開放平臺回調程序的回調方法ui

3.回調方法返回success,開放平臺執行解綁操做,返回其餘,則不執行解綁操做url

 

思考,若是開放平臺沒有回調,直接執行解綁方法,那麼若是此時,程序解綁操做失敗後,會形成信息不一致的狀況:個人程序上顯示還在綁定狀態,美團上卻已經解除綁定了code

因此,用到了回調函數,當程序請求開放平臺的解綁方法時,開放平臺回調,等待客戶端執行成功操做返回sucess,而後再執行解綁操做,保證了數據的一致性。orm

 

那麼,問題來了:

若是說,當客戶端成功執行了操做,而開放平臺美團卻執行操做失敗了,又形成了信息的不一致。

這個情形,相似於TCP的通訊,採用了三次握手來解決這個問題:

程序調開放平臺的解綁函數
程序執行操做成功後返回success,可是不知到開放平臺是否執行操做成功,因此再去調開放平臺的回調
當開放平臺返回的是sucess時,那麼就執行操做,返回的時fail時,那麼就不執行解綁操做。
當開放平臺返回的是sucess時,若是程序端執行解綁操做又失敗了,那就提示用戶操做失敗,請重試。

 

 

應該是出現這種狀況的可能微乎其微,再加上美團的開發者不可能不瞭解三次握手確認來說
對這些業務作這樣的確認操做是沒有必要的。

可是對於錢財交易這樣的方式就必須採起三次握手這樣的操做方式了。

 

本人系新手上路,文章可能顯得臃腫,寫下來記錄本身的成長曆程。

水平有限,歡迎並感謝糾錯指正

相關文章
相關標籤/搜索