【磐河旅行】之酒店API介面對接實錄

谷樵發表於2023-03-02

1、專案需求概述:

透過對接第三方磐河旅行的酒店API介面實現在我們的APP 、微信小程式、H5上可提供使用者酒店查詢、酒店預訂、退訂等功能。效果如下圖:

 

 

2、酒店介面功能拆分

除了酒店靜態資料字典(如酒店城市資料、酒店品牌資料等)介面主要分資料查詢類和訂單操作類共有7個介面方法。

酒店資料查詢類介面有:酒店搜尋介面、酒店詳情介面、酒店房型及產品查詢介面

酒店訂單操作類介面有:下單介面、支付介面、訂單取消介面、訂單退訂介面、訂單詳情介面。 (PS:磐河旅行開放平臺的 訂單取消介面和訂單退訂介面是同一個介面,統稱訂單取消介面,他們是根據當前訂單狀態判斷 使用者發起的是訂單未支付時申請取消操作 還是 訂單已確認時申請退訂操作)。所以酒店API介面涉及的整體業務還是相對簡單易懂的。

下圖是磐河旅行的酒店線上文件 介面列表

 

 


這裡需要補充的是除了以上查詢類和訂單類介面,磐河旅行還有一個訂單狀態變更推送介面,也就是說當訂單狀態發生變化時,他們會透過下單時我方傳入的回撥地址,把變更的訂單號及狀態回撥推送通知給我們,此時我們拿到訂單號後需要呼叫他們的酒店訂單詳情介面來同步我們的本地訂單狀態。

3、【磐河旅行】介面技術棧和閉坑方法總結

磐河旅行酒店API介面採用REST風格,對外暴露HTTP服務。如果沒有特殊說明,磐河旅行分銷開放平臺API提供基於http協議,post方式,基於json格式的資料訪問,資料編碼為UTF-8。有兩種呼叫方式:

1. 分銷商主動發起,呼叫磐河旅行分銷開放平臺API的請求。

2. 磐河旅行分銷開放平臺發起,回撥分銷商系統的請求。(就是我剛上面說的訂單狀態變更推送介面)

閉坑方法之一:先用Postman除錯,請求頭部一律記得設定Content-Type:application/json

所以這裡強烈推薦一個HTTP API介面免費除錯工具:Postman。對接時強烈建議先透過Postman把介面除錯通了,然後再coding到自己的程式碼中,這樣可以排除因為自己寫的http請求方法和請求方式等問題導致的介面除錯失敗。

 

 


(為了測試呼叫方便部分介面get/post都支援)但這裡請求方式強烈建議一律用POST,(請求頭部一律記得設定)Content-Type:application/json。磐河開放平臺所有介面方法都支援這種請求方式,強烈建議,少走彎路。

閉坑方法之二:當沒訂單狀態發生變更時沒有收到回撥時,請用postman自行模擬推送下。

首選確保下單時傳入了正確的回撥地址,其次確保我們預留的回撥地址 外網是可以正常訪問的,所以在遇到接受不到回撥通知時,先排查下這兩個問題,第二個問題用postman自己模擬推送下 看是否返回 HTTPStatus 200即可知曉。

閉坑方法之三:不是所有已確認狀態的酒店訂單都可以申請退訂,至少需要滿足兩點條件,可以取消且在取消時限內。

訂單詳情介面中有返回取消政策型別和最晚免費取消時限。根據這兩個欄位判斷

 

 


所以前端需要根據這兩個欄位 判斷是否顯示 退訂 按鈕。只有取消政策型別是 限時取消且當前時間小於 免費取消最晚時間內才可以申請退訂。

4、上線前準備:

上線前可透過 磐河旅行分銷後臺 開啟白名單,配置自己伺服器IP。同時支付介面也有簽名驗證。所以需要儲存和自己的appkey和秘鑰

 

 


因為磐河旅行的支付方式是預充值,一單一結的,支付介面就是餘額支付代扣介面。所以上線前需要確保酒店賬戶有足夠餘額,否則會導致下單支付失敗。

透過磐河旅行分銷後臺可以配置,餘額不足預警值,當餘額低於我們設定的預警值時,磐河旅行會傳送簡訊通知提醒我們。

 

 


訂單確認成功通知簡訊,如果需要磐河旅行傳送的話,需要聯絡他們免費開通,預設他們是不傳送的,因為我們平臺自己傳送簡訊給客戶的,所以就沒有開啟。
 

相關文章