指南
什么是 API 集成,为旅游企业讲清楚
API 集成是一种连接,让两个软件系统无需人工重复录入即可交换数据并触发操作。本指南以一笔酒店预订为例,讲解它如何在旅客、预订平台、供应商 API 和支付网关之间流转。
- 一个请求,一个响应
- REST、XML、SOAP 与 webhook
- 一笔预订贯穿四个系统
- 集成如何测试
定义
什么是 API 集成,用通俗的话说
API 即应用程序编程接口:系统对外公布的一套规则,让其他软件可以与之对话。API 集成就是把你的平台接入其中一个接口,使数据自动流动、操作自动发生。
在旅游行业,这个平台通常是像 旅游预订软件 这样的预订系统,而接口属于供应商、支付网关或业务工具。我们的 旅游API集成 页面介绍 PHPTRAVELS 如何交付这些连接,全部集成 列出了已接入的供应商。
交换数据
价格、库存、客户信息和状态更新以结构化格式在系统之间流动。
自动执行操作
搜索、预订、支付、取消和对账以请求的形式完成,而不是由人反复手工操作。
追踪结果
每次调用都带有引用号,失败的预订可以追溯到引发它的那个请求。
请求
POST /v1/hotels/availability HTTP/1.1Host: api.supplier.exampleAuthorization: Bearer sk_test_••••••••Content-Type: application/json{ "city": "DXB", "check_in": "2026-11-12", "check_out": "2026-11-14", "guests": 2, "currency": "USD"}响应
HTTP/1.1 200 OKContent-Type: application/jsonX-Request-Id: req_7f3a91{ "hotel": "Palm Marina Hotel", "room": "Deluxe, 2 adults", "rate": { "amount": 438.00, "currency": "USD" }, "refundable": true, "rate_key": "rk_19d2c7"}一次 API 调用的构成
- 1
端点与方法
操作的地址以及作用于它的动词:对 availability 发出 POST 即表示搜索客房。
- 2
身份验证
密钥、令牌或签名证明调用者身份。供应商会为沙箱和生产环境分别签发凭据。
- 3
载荷
结构化输入:城市、日期、人数和货币。每个字段都由供应商文档定义。
- 4
状态码
表示调用结果的数字:200 为成功,4xx 为请求有问题,5xx 为供应商一侧出错。
- 5
请求 ID
双方共同保存的标识符。当客服询问某笔预订发生了什么,查的就是它。
- 6
响应正文
以供应商格式返回的答复,由你的平台映射为自己的客房、价格和政策。
一笔预订,四个系统
API 集成在一次酒店预订中做了什么
跟随一次两晚住宿,从搜索到出具凭证。每个箭头都是一次 API 调用;旅客只看到第一个和最后一个。
- 01搜索迪拜酒店,两晚,两位客人从: 旅客, 到: 预订平台
- 02携带日期、人数和货币的库存请求从: 预订平台, 到: 供应商 API
- 03客房、价格、政策和价格键从: 供应商 API, 到: 预订平台
- 04套用你的加价和货币后展示结果从: 预订平台, 到: 旅客
- 05付款前对所选价格键重新核价从: 预订平台, 到: 供应商 API
- 06对总额发起支付授权从: 预订平台, 到: 支付网关
- 07已授权,收到签名 webhook从: 支付网关, 到: 预订平台
- 08携带客人信息的预订请求从: 预订平台, 到: 供应商 API
- 09确认号和取消条款从: 供应商 API, 到: 预订平台
- 10凭证、发票和预订参考号从: 预订平台, 到: 旅客
- 01旅客预订平台搜索迪拜酒店,两晚,两位客人
- 02预订平台供应商 API携带日期、人数和货币的库存请求
- 03供应商 API预订平台客房、价格、政策和价格键
- 04预订平台旅客套用你的加价和货币后展示结果
- 05预订平台供应商 API付款前对所选价格键重新核价
- 06预订平台支付网关对总额发起支付授权
- 07支付网关预订平台已授权,收到签名 webhook
- 08预订平台供应商 API携带客人信息的预订请求
- 09供应商 API预订平台确认号和取消条款
- 10预订平台旅客凭证、发票和预订参考号
中间的平台就是 API 集成所在的位置:它在旅客的屏幕和每家供应商的格式之间转换,并保存每一个引用号。
同样的流程适用于接入 GDS 的 机票预订软件、接入活动供应商的 旅游运营商软件,以及接入任意网关的 支付网关集成;变化的只是字段名。
集成方式
REST、XML、SOAP、webhook 与 GraphQL
供应商以不同方式发布接口。采用哪种方式由供应商文档决定,而非个人偏好,所以旅游平台需要全部掌握。
REST 与 JSON
JSON- 数据格式
- JSON 文档
- 传输方式
- HTTP 方法:GET、POST、PUT、DELETE
- 旅游行业常见于
- 较新的机票、酒店、活动和支付 API
- 优势
- 载荷紧凑,开发工具丰富
- 注意事项
- 规范松散;各供应商对 REST 的理解不同
XML 与 SOAP
XML- 数据格式
- XML 文档,常带严格的模式
- 传输方式
- 带 SOAP 信封或纯 XML 的 HTTP POST
- 旅游行业常见于
- GDS、床位批发商以及成熟的酒店和旅游系统
- 优势
- 正式契约、签名和服务定义
- 注意事项
- 报文冗长,解析更重
Webhook
EVENT- 数据格式
- 由对方推送的 JSON 或 XML
- 传输方式
- 向你注册的 URL 发出 HTTP POST
- 旅游行业常见于
- 支付结果、预订状态变更、出票更新
- 优势
- 无需轮询;有事件发生时平台会被通知
- 注意事项
- 必须验证签名并处理重复推送
GraphQL
QUERY- 数据格式
- JSON,形状由你发送的查询决定
- 传输方式
- 单一 HTTP 端点
- 旅游行业常见于
- 部分较新的分销平台和内部 API
- 优势
- 只请求你需要的字段
- 注意事项
- 旅游供应商的支持仍不普遍
API 集成与 API 开发的区别
把你的产品接入一个已经存在的接口。API 归供应商所有;你负责构建客户端、映射以及围绕它的规则。
创建一个供其他系统接入你产品的接口,例如代理商工具可以调用的 B2B API。契约及其版本由你掌控。
许多旅游项目两者都需要:平台一侧集成供应商,另一侧向代理商和合作伙伴发布自己的 API。
集成前后
系统集成后会有什么变化
同样的五个预订步骤,一种是在供应商门户里手工完成,一种是通过 API 集成完成。
搜索
代理人逐个打开供应商门户,把价格抄进报价单。
一次搜索同时发往所有已接入的供应商,返回一份列表。
定价
加价在电子表格里添加;报价发出时价格可能已经变了。
加价、税费和货币规则在响应时套用;付款前重新核价。
预订
客人信息被重新录入供应商门户;错字变成预订错误。
信息只发送一次,经过校验,并与供应商确认一起保存。
支付
款项另行收取,稍后再与预订匹配。
授权、扣款和退款都绑定到预订参考号。
售后
取消和变更意味着再登录一次、再发一封邮件。
变更和取消走同一条连接,并更新记录。
术语
API 文档中会遇到的术语
几乎每个供应商开发者门户都会出现的十二个词,按旅游行业的用法解释。
API
应用程序编程接口:与某个系统对话的公开规则。
身份验证
证明调用者是谁,通过 API 密钥、bearer 令牌、签名或经批准的 IP 地址。
认证
供应商在签发生产凭据之前对你的集成进行的审核。
端点
一个操作对应一个地址,例如搜索、预订或取消。
幂等性
同一请求发送两次只产生一个结果,从而避免重复预订和重复扣款。
映射
把供应商的字段、代码和名称转换为你平台自己的数据模型。
载荷
请求或响应中携带的数据,通常是 JSON 或 XML。
速率限制
供应商每秒或每天允许的调用次数,超过后开始拒绝。
请求与响应
一次调用:你的平台提问,供应商回答,双方都记录日志。
沙箱
带有虚拟库存和测试卡的测试环境,不会真正预订或扣款。
状态码
概括结果的 HTTP 数字:200 成功、401 未授权、429 超出速率限制、500 供应商错误。
Webhook
反方向的调用:事件发生时,供应商或网关通知你的平台。
测试与范围
旅游 API 集成上线前如何测试
只有异常路径也表现正常,集成才算完成。在供应商沙箱中运行一轮测试,覆盖下列用例,然后再进行认证并切换到生产凭据。
run integration tests
供应商沙箱,九个用例
- OK: 使用有效和过期凭据进行身份验证
- OK: 无效请求被拒绝并返回可读的错误
- OK: 供应商超时得到处理,不会留下悬而未决的预订
- OK: 遵守速率限制,等待后重试
- OK: 重新核价时发现价格变动并在付款前展示
- OK: 重复提交返回第一笔预订,而不是新建第二笔
- OK: 取消已执行并计算费用
- OK: 退款对原支付发起
- OK: 预订、支付和供应商参考号相互对账
全部用例通过,可以提交认证
API 集成是一种连接,让两个软件系统自动交换数据并触发操作。一方发送结构化请求,另一方返回结构化响应,双方都遵守约定的安全和数据规则。
在旅游行业,它把预订平台与机票、酒店、旅游或租车供应商、支付网关和业务工具连接起来,支持搜索、核价、预订、取消、退款和对账,无需重复录入。
REST 是一种架构风格,通常通过 HTTP 交换 JSON。XML 是一种数据格式,在 GDS 和床位批发商中仍很常见,常包裹在 SOAP 里。用哪一种由供应商的合同和文档决定。
取决于供应商的开通、范围内的端点、认证、映射规则和预订的边界情况。只有在审阅文档、凭据和所需流程之后,才能给出可靠的估算。
测试身份验证、有效和无效请求、超时、速率限制、价格变动、重复提交、取消、退款和对账。在生产环境中,每个请求都应能追溯到一个预订参考号。
不是。集成是把你的产品接入现有 API;开发是创建一个供他人接入的接口。旅游平台往往两者都需要:一侧集成供应商,另一侧向合作伙伴发布 B2B API。
