【磐河旅行】之酒店API接口对接实录
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接口对接实录的更多相关文章
- 快递鸟顺丰物流api接口对接多种方法整理
目前很多自营电商平台.ERP系统.仓储系统.快递柜企业,对物流模块数据需求还是比较旺盛的.之前有介绍过简单的接口对接方法,这次给大家整理介绍两种快递数据的获取方法. 接口秘钥可以向顺丰公司申请,或者一 ...
- 快递查询API接口对接方法
各类接口 快递查询API有即时查询和订阅查询两种,即时是请求即返回数据,订阅则是订阅快递单号到接口,有物流轨迹更新则全量返回数据.目前常用的有快递鸟.快递100.快递网等. 快递鸟即时API可以查询3 ...
- c#后台代码请求访问api接口
前言:最近公司项目与外部api接口对接较多 ,写下自己的代码总结.介绍两种访问方式(HttpClient.HttpWebRequest) 一.HttpWebRequest 访问Api private ...
- Web Api 与 Andriod 接口对接开发经验
最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...
- Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下!
最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用Asp.Net Web Api去跟 Andriod 那端做接口对接工作,自己也是第一次接触Web ...
- Asp.Net Web Api 与 Andriod 接口对接开发
Asp.Net Web Api 与 Andriod 接口对接开发经验,给小伙伴分享一下! 最近一直急着在负责弄Asp.Net Web Api 与 Andriod 接口开发的对接工作! 刚听说要用A ...
- php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能
2016年12月29日13:45:27 关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充 说道接口设计第一反应就是r ...
- 【产品经理】产品经理不懂API接口是什么,怎么和程序员做朋友?
接口不是技术经理来写吗?没接过它,一脸不清楚地节奏 开放即共享,是互联网的一个重要属性和精神.它是一种服务模式,一个特殊的产品,目前较大规模的互联网企业都有自己的开放平台. 如果把自己局限为一个功能产 ...
- 对飞猪H5端API接口sign签名逆向实验
免责声明 本文章所提到的技术仅用于学习用途,禁止使用本文章的任何技术进行发起网络攻击.非法利用等网络犯罪行为,一切信息禁止用于任何非法用途.若读者利用文章所提到的技术实施违法犯罪行为,其责任一概由读者 ...
- 快递Api接口 & 微信公众号开发流程
之前的文章,已经分析过快递Api接口可能被使用的需求及场景:今天呢,简单给大家介绍一下微信公众号中怎么来使用快递Api接口,来完成我们的需求和业务场景. 开发语言:Nodejs,其中用到了Neo4j图 ...
随机推荐
- python中文件操作相关基础知识
python中文件操作相关基础知识 文件的概念 1,文件的概念? 文件就是操作系统暴露给用户操作硬盘的快捷方式 , 当我们双击一个文件进行打开时,其实就是把硬盘中的数据加载到了内存中,然后展示给我们 ...
- Python开发Brup插件检测SSRF漏洞和URL跳转
作者:馒头,博客地址:https://www.cnblogs.com/mantou0/ 出身: 作为一名安全人员,工具的使用是必不可少的,有时候开发一些自己用的小工具在渗透时能事半功倍.在平常的渗透测 ...
- 微服务11:熔断、降级的Hystrix实现(附源码)
微服务1:微服务及其演进史 微服务2:微服务全景架构 微服务3:微服务拆分策略 微服务4:服务注册与发现 微服务5:服务注册与发现(实践篇) 微服务6:通信之网关 微服务7:通信之RPC 微服务8:通 ...
- Qt大型工程开发技术选型Part3:Qt调用C#编写的COM组件实例
Qt大型工程开发技术选型Part3:Qt调用C#编写的COM组件实例以及错误总结 ok,前面铺垫了那么多,现在来写一个开发实例,我会把其中隐藏的坑和陷阱简单谈谈,并在文章最后总结. 不愿意看长篇大论的 ...
- ssm——spring整理
目录 1.概述 2.Spring工厂与IOC 2.1.为什么要有Spring框架 2.2.什么是IOC 2.Spring工厂对实例注入 2.1.使用标签进行注入 2.2.使用注解进行注入 2.2.3. ...
- 经典 backbone 总结
目录 目录 VGG ResNet Inceptionv3 Resnetv2 ResNeXt Darknet53 DenseNet CSPNet VoVNet 一些结论 参考资料 VGG VGG网络结构 ...
- Hadoop详解(04-1) - 基于hadoop3.1.3配置Windows10本地开发运行环境
Hadoop详解(04-1) - 基于hadoop3.1.3配置Windows10本地开发运行环境 环境准备 安装jdk环境 安装idea 配置maven 搭建好的hadoop集群 配置hadoop ...
- 时钟同步服务器ntp安装文档
应用场景 同步时钟很有必要,如果服务器的时间差过大会出现不必要的问题 大数据产生与处理系统是各种计算设备集群的,计算设备将统一.同步的标准时间用于记录各种事件发生时序, 如E-MAIL信息.文件创建和 ...
- Java用户交互方法——Scanner
Scanner用户交互 使用Next方法接收 Scanner scanner = new Scanner(System.in); if(scanner.hasNext()){//判断用户有无输入 St ...
- iOS 使用xcode11新建项目
1. 首先打开Xcode11,然后使用command + shift + n 快捷键创建一个新的工程 选择 Single View App 完成之后点击next 2. 会弹出 Choose opt ...