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和秘钥

因为磐河旅行的支付方式是预充值,一单一结的,支付接口就是余额支付代扣接口。所以上线前需要确保酒店账户有足够余额,否则会导致下单支付失败。

通过磐河旅行分销后台可以配置,余额不足预警值,当余额低于我们设置的预警值时,磐河旅行会发送短信通知提醒我们。

订单确认成功通知短信,如果需要磐河旅行发送的话,需要联系他们免费开通,默认他们是不发送的,因为我们平台自己发送短信给客户的,所以就没有开启。

【磐河旅行】之酒店API接口对接实录的更多相关文章

  1. 快递鸟顺丰物流api接口对接多种方法整理

    目前很多自营电商平台.ERP系统.仓储系统.快递柜企业,对物流模块数据需求还是比较旺盛的.之前有介绍过简单的接口对接方法,这次给大家整理介绍两种快递数据的获取方法. 接口秘钥可以向顺丰公司申请,或者一 ...

  2. 快递查询API接口对接方法

    各类接口 快递查询API有即时查询和订阅查询两种,即时是请求即返回数据,订阅则是订阅快递单号到接口,有物流轨迹更新则全量返回数据.目前常用的有快递鸟.快递100.快递网等. 快递鸟即时API可以查询3 ...

  3. c#后台代码请求访问api接口

    前言:最近公司项目与外部api接口对接较多 ,写下自己的代码总结.介绍两种访问方式(HttpClient.HttpWebRequest) 一.HttpWebRequest 访问Api private ...

  4. Web Api 与 Andriod 接口对接开发经验

    最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...

  5. Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!

    最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...

  6. Asp.Net Web Api 与 Andriod 接口对接开发

    Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!   最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用A ...

  7. php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能

    2016年12月29日13:45:27    关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充   说道接口设计第一反应就是r ...

  8. 【产品经理】产品经理不懂API接口是什么,怎么和程序员做朋友?

    接口不是技术经理来写吗?没接过它,一脸不清楚地节奏 开放即共享,是互联网的一个重要属性和精神.它是一种服务模式,一个特殊的产品,目前较大规模的互联网企业都有自己的开放平台. 如果把自己局限为一个功能产 ...

  9. 对飞猪H5端API接口sign签名逆向实验

    免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...

  10. 快递Api接口 & 微信公众号开发流程

    之前的文章,已经分析过快递Api接口可能被使用的需求及场景:今天呢,简单给大家介绍一下微信公众号中怎么来使用快递Api接口,来完成我们的需求和业务场景. 开发语言:Nodejs,其中用到了Neo4j图 ...

随机推荐

  1. selenium常用配置

    def init_chrome_options(self,): chrome_options = webdriver.ChromeOptions() # 设置浏览器初始 位置x,y & 宽高x ...

  2. Python函数/动态参数/关键字参数

    1.函数 #函数语法: #函数名规范:小谢字母开头,不同字母下划线隔开(字母数字下划线) #def 函数名(): #函数体:希望函数做的事情 1.1.无参函数 #无参函数 def music(): p ...

  3. c++随笔测试(Corner of cpp)

    在c++17下,程序的输出是什么?(有可能编译出错,有可能输出未知,有可能是未定义行为) 点击查看代码 #include<iostream> void foo(unsigned int) ...

  4. 【转载】EXCEL VBA UBound(arr,1),UBound(arr,2)解释

    Resize(UBound(arr, 1), UBound(arr, 2) 这句什么意思   resize()是一个扩展单元格地址区域的函数,有两个参数,第一个是行扩展数,第二个是列扩展数   UBo ...

  5. Maui Blazor 使用摄像头实现

    Maui Blazor 使用摄像头实现 由于Maui Blazor中界面是由WebView渲染,所以再使用Android的摄像头时无法去获取,因为原生的摄像头需要绑定界面组件 所以我找到了其他的实现方 ...

  6. 【Allwinner】---全志GPIO号 计算

    全志的GPIO号在 sunxi-gpio.h 中定义 sunxi-gpio.h1二.GPIO号定义#define SUNXI_PA_BASE 0#define SUNXI_PB_BASE 32#def ...

  7. 如何理解scanf(“%d %d”,a,b)==2和scanf(“%d”,a)=1【摘抄笔记ψ(._. )>】

    scanf 函数有一个返回值,0表示接受输入失败,1表示接受输入成功. while(scanf("%d",&x)==1) 的意思就是: 当接收输入变量x的值成功的时候,继续 ...

  8. ant design pro 配置路由 显示页面步骤详解

    第一步 在 src/views 下新建页面的vue文件,如果相关页面有多个,可以新建一个文件夹来放置相关文件. 给页面里写几个字,等会可以看到哦~~ 第二步 将文件加入菜单和路由 进入这个文件    ...

  9. 用GPU来运行Python代码

    简介 前几天捣鼓了一下Ubuntu,正是想用一下我旧电脑上的N卡,可以用GPU来跑代码,体验一下多核的快乐. 还好我这破电脑也是支持Cuda的: $ sudo lshw -C display *-di ...

  10. vue学习笔记(一)---- vue指令(在vue中使用样式的方式)

    认真学习,认真记录,每天都要有进步呀!!! 加油叭!!! 一.在vue中使用样式的方式: 1. 直接传递一个数组,注意: 这里的 class 需要使用 v-bind 做数据绑定 <style&g ...