前言 最近在對接51book的機票接口,遇到了挺多坑,所以整理一份作為記錄
機票有兩個不同的接口,一個是機票,另一個是保險
一、申請
要接51book的機票,首先是要申請賬號,這時候應該是有客戶經理跟進,然后具體事宜都會告訴你。
拿到賬號之后,客戶經理會把你的賬號拉入測試組,不然測試購買機票然后改簽、退票都是需要錢的,做測試支付機票的時候還要去后台開通2個東西:
- 機票支付寶授權,添加營業員
- 保險支付寶授權
這兩個是分別授權的,有兩個網址。
對了,后台還有密碼要設置,點擊“我的余額”然后就可以設置了。
二、邏輯
購買機票的邏輯
- 查詢航班
- 查看航班座位
- 選擇座位預訂
- 填寫相關信息,預訂訂單
- 支付
- 后續改簽、退票
三、開發
51book那邊會有接口文檔,現在已經更新http新接口
接口主頁:http://ws.51book.com/
機票新接口:http://ws.51book.com/ltips/web/CustomerDetailController.in?id=13&flag=getDetail&language=CH
保險接口文檔目前還沒有在線的,由51book那邊單獨發送
接口測試需要51book那邊把你的ip設為白名單
機票接口:
- 公共
- 航班查詢
- 機票預定
- 支付
- 通知
- 出票通知
- 取消--取消訂單退款通知
- 航變通知
- 退票通知
- 改期通知
- 查詢訂單詳情
- 支付前校驗
- 我們av查詢時試試運價 這個已經調去一次了時時數據了,那么客人查詢一直都不支付,會存在位子是否有效,那么二次驗價就會起到效果,他會再次調取一次,如果發生變化他會重新驗價,客戶支付不了,如果沒有就直接可以支付。二次驗價主要是給客戶更好的體驗
- 需要開通才能用
- 變更查詢
- 變更申請
- 變更需支付
- 退票查詢
- 退票退款申請
- 驗證艙位價格
- 獲取客規
- 改簽退票手續費在這里
注意事項
接口參數和返回都說的很清楚,這里就不在詳細描述了,我做對接的時候遇到幾個坑,需要注意一下:
- 要熟悉下航空公司的規則,例如:兒童是不讓單獨乘機的,所以買票的時候要做下判斷
- 兒童不讓單獨乘機,引發改簽和退票也不能單獨改和退,所以這里也要做判斷
- 帶兒童的訂單,接口返回有兩個訂單號,都要記錄
- 因為有2個訂單號,所以在接收改簽和退票的時候,51book那邊發的通知是2次,(但是出票通知就一次)
- 改簽的時候,原來訂單里的票號是不變的,所以后期查詢訂單接口就查不到變更后的信息,需要自己記錄
改簽相關
- 改簽沒有次數限制,因為要收手續費,只要航班沒起飛就可以改簽
- 改簽不能改出發地和目的地
- 變更中是不能改簽和退票
- 改簽只能修改價格比當前高的,同時艙位也要比之前高
- 改簽手續費是按照原來航班的票價
我設置的狀態:
1000:待支付 ,
2000:已支付,待出票 ,
3000:已出票 ,
4000:變更審核中 ,
4100:變更需支付 ,
4200: 處理中,
4300:變更完成,
4400:無法變更,
5000:退票審核中,
5100:審核通過,待退款
5200:退款成功,
5300:無法退/廢票,
5400:退款失敗,
6000:已取消,
保險接口
- 查詢保險產品接口
- 保險產品查詢
- 投保
- 保險支付
- 保單查詢
- 退保申請
保險接口沒有http協議的接口,用的是wsdl格式的,php用soap來對接
首先要說的是保險接口沒有異步通知,就是說你下單成功了,他們不是馬上可以出保單,需要一會時間,這時候沒法立刻獲取到保單號,需要調用“保單查詢”接口去查,而且不能立即查,需要過一會之后去查才有。查的時候把保單信息放入數據庫中。
注意事項
-
沒有異步通知
-
同個人買不同產品需要調用多次購買接口,同個產品的保單明細可以放多個人,就是說一個產品要下一個單
附上機票接口請求封裝代碼(thinkphp5寫的)