| # | 方法 | 路径 | 用途 |
|---|---|---|---|
| 1 | GET | /open/v1/flight/airport/search | 机场联想搜索(IATA/中文名/拼音) |
| 2 | POST | /open/v1/flight/search | 航班列表查询(搜索阶段) |
| 3 | POST | /open/v1/flight/pricing | 验价(换可下单 offer_id) |
| 4 | POST | /open/v1/flight/order/create | 创建订单(幂等) |
| 5 | POST | /open/v1/flight/order/pay | 发起支付(user_pay / enterprise_credit / monthly_settle) |
| 6 | POST | /open/v1/flight/order/detail | 订单详情(含 PNR / 票号 / 退票费等) |
| 7 | POST | /open/v1/flight/order/list | 订单列表(分页 + 状态/日期过滤) |
| 8 | POST | /open/v1/flight/order/cancel-fee | 查询取消/退票手续费 |
| 9 | POST | /open/v1/flight/order/cancel | 取消订单或发起退票 |
开发者 开放平台
│ │
├─ search ───────────────────────► │
│ ◄── flights + search_offer_id(可选 offer_id)─┤
│ │
│ (cabin 可直下则拿到 offer_id;否则继续验价)
│ │
├─ pricing(携带 search_offer_id)─► │
│ ◄── offer_id + total_fare ──────┤
│ │
├─ order/create ─────────────────► │
│ (offer_id、乘机人、联系人、 │
│ out_trade_no、pay_mode) │
│ ◄── system_no + 待支付信息 ───────┤
│ (user_pay 时附 checkout_url) │
│ │
├─ order/pay ────────────────────► │
│ │
│ · user_pay:返回 pay_params,用户去支付
│ · enterprise_credit / monthly_settle:
│ 直接扣款/记账,订单转为已支付待出票
│ ◄── pay_params / 支付成功响应 ────┤
│ │
│ (user_pay 支付完成后,平台异步推进订单)
│ ◄═══ Webhook 推送订单状态 ════════┤
│ paid → ticketed │
│ │
│(可选)order/detail / order/list 查询订单
│(可选)order/cancel-fee + order/cancel 取消/退票<app_id, out_trade_no> 做幂等,成功后返回 system_no 及待支付信息。GET /open/v1/flight/airport/searchkeyword(必填,如 深圳 / SZX / bao'an)POST /open/v1/flight/searchsearch_offer_id。offer_id 且 pricing_required = false,可直接下单,跳过验价。search_offer_id 换取 offer_id。cabins[].search_offer_id:始终返回,用于后续验价或直下。cabins[].offer_id:可直下时返回,10 分钟有效。cabins[].pricing_required:false 表示可直下,true 表示需先验价。cabins[].lowest_price:该舱位最低价(元),含票价 + 机建 + 燃油,不含服务费。cabins[].baggage_rule / change_rule / refund_rule:行李/改签/退票规则,文本描述。trip_type = roundtrip 时必须传 return_date;tag 控制返程匹配规则(lowest_price / same_supplier)。from_airport_code / to_airport_code(精确到机场);不传时用 from_code / to_code(城市三字码)。cabins[].stop_count = 0 判断是否直飞,API 不提供直飞筛选参数。POST /open/v1/flight/pricingoffer_id(10 分钟有效)。cabins[].pricing_required = true 时;offer_id:去程可下单令牌,10 分钟有效。return_offer_id:返程可下单令牌(往返时返回)。expired_at:offer_id 过期时间(北京时间),超时需重新验价。total_fare:去程乘客合计总价(元)。combined_total_fare:往返合计总价(元,仅往返时返回)。price_changed:与搜索结果相比价格是否变化,true 建议向用户二次确认。passenger_fares[]:分乘客的票面价 / 机建 / 燃油 / 服务费明细。offer_id 过期后需重新验价,不可直接下单。price_changed = true 时应向终端用户展示最新价格并确认。POST /open/v1/flight/order/createoffer_id + 乘客信息 + 联系人创建订单。<app_id, out_trade_no>。同一 out_trade_no 重复请求只会创建一笔订单,重复调用直接返回已存在订单的 system_no(user_pay 模式同时返回原 checkout_url)。out_trade_no:商户订单号(必填),幂等键,建议格式 {merchant_prefix}_{timestamp}_{seq}。offer_id:去程 offer_id(必填),来自搜索或验价。return_offer_id:返程 offer_id(往返时必填)。passengers:乘客信息列表,字段与验价一致。contact:联系人信息(姓名、手机、邮箱)。pay_mode:支付模式,默认 user_pay(终端用户支付)。可选 enterprise_credit(企业授信扣款)/ monthly_settle(月结记账)。external_user_id / external_user_name / cost_center / approval_id:企业差旅场景的用户 / 成本中心 / 审批单透传字段,原样落库便于对账。callback_url:订单状态回调地址(HTTPS),平台会在订单状态变化时推送 Webhook(格式见 Webhook 文档)。need_invoice / invoice_address:是否开票及邮寄地址。system_no:平台订单号,全局唯一。status:订单状态,初始为 pending_pay。pay_expire_time:支付截止时间(北京时间),默认下单后 15 分钟,超时自动关单。total_amount:订单总金额(元)。pnr:编码,下单时可能为空,出票后补回。checkout_url:托管收银台地址,仅 pay_mode=user_pay 时返回。可直接将该链接交给终端用户完成微信 / 支付宝 H5 支付。| status | 含义 |
|---|---|
pending_pay | 待支付 |
paid | 已支付,待出票 |
ticketed | 已出票 |
canceled | 已取消 |
refunded | 已退款 |
failed | 出票失败 |
status = canceled)。out_trade_no 重试,利用幂等性避免重复下单。callback_url 需在接入方实现签名校验,防止伪造回调(具体签名算法见 Webhook 文档)。POST /open/v1/flight/order/paypay_mode 分支处理订单支付:user_pay 走微信 / 支付宝 SDK,授信 / 月结直接扣款记账。system_no:必填,订单号(来自 order/create)。pay_type:必填,支付方式。可选值:wechat_h5 / wechat_jsapi / wechat_native / wechat_app / wechat_mini / alipay_app / alipay_h5。openid:微信 JSAPI / 小程序必填。client_ip:微信 H5 必填,鉴权时已自动注入应用上下文 IP,按需覆盖即可。return_url:支付宝 H5 同步跳转地址。pay_type=wechat_jsapi → pay_params: { prepay_id, app_id, time_stamp, nonce_str, package, sign_type, pay_sign }pay_type=wechat_h5 → pay_params: { mweb_url }pay_type=wechat_app → pay_params: { app_id, partner_id, prepay_id, package_value, nonce_str, time_stamp, sign }pay_type=wechat_mini → pay_params: { app_id, time_stamp, nonce_str, package, sign_type, pay_sign }pay_type=wechat_native→ pay_params: { code_url }pay_type=alipay_app → pay_params: { order_str }pay_type=alipay_h5 → pay_params: { pay_url }pay_mode=user_pay 时,更推荐直接把 order/create 返回的 checkout_url 交给终端用户,托管收银台已处理收银选择 + 微信 H5 / 支付宝 H5 跳转。pay_mode=enterprise_credit 时,调用本接口会立即扣减企业余额并把订单推进到 paid,无需用户支付。pay_mode=monthly_settle 时,记账成功后订单同样进入 paid,月底统一对账结算。POST /open/v1/flight/order/detailsystem_no / out_trade_no:二选一传入。out_trade_no 仅可查询当前 app 自己创建的订单。status / status_text、pay_status / pay_status_text、flight_status / flight_status_text 三组状态码 + 文本,便于前端展示。flight_info:航班信息(航班号、航司、起降机场、起降时间、舱位)。passengers / contact:乘机人和联系人。total_amount / refund_fee / refund_amount:订单总金额、已退票费、已退金额。can_cancel:当前是否仍可取消。can_refund:当前是否仍可退票(已出票订单)。estimated_refund_fee:预估退票费(已出票时由查询接口返回)。refund_rule:结构化退改规则,含 current(当前时间节点的费率/手续费/可退金额/概要)和 stages[](分阶段时间节点列表,标注 is_current / is_past / no_refund),便于前端按阶梯展示退改政策。POST /open/v1/flight/order/listexternal_user_id:可选,按接入方用户/员工ID过滤(推荐作为按用户查询的过滤条件,查询性能最优)。contact_phone:可选,按联系人手机号过滤。out_trade_no:可选,按商户订单号过滤。status:可选,按订单状态过滤。start_date / end_date:可选,按下单日期过滤。page / page_size:分页参数,page_size 默认 10,最大 100。多个过滤条件之间为 AND 关系。按接入方用户查询时, external_user_id需在下单时通过order/create一并传入,否则未携带该字段的历史订单查不到,可改用contact_phone兜底。
total:总数。page_info:分页信息。orders[]:订单列表项,包含:system_no / out_trade_noflight_no / airline / cabin_classdep_city / dep_airport_name / dep_time、arr_city / arr_airport_name / arr_time(depart_time 为兼容旧字段,等同 dep_time)total_amountstatus / status_text、pay_status、flight_status / flight_status_textpnr / created_atPOST /open/v1/flight/order/cancel-feeorder/cancel。order_id:必填,平台订单号。refundable:是否可退。refund_amount:可退金额(元)。cancel_fee:手续费(元)。refund_rule:退票规则文本(如「起飞前 2 小时退票收取票面 50%」)。refundable=true / cancel_fee=0,可直接取消。POST /open/v1/flight/order/cancelsystem_no:必填,订单号。reason:可选,取消原因(透传给供应商)。action:cancel(直接取消)/ refund(已出票走退票流程)。status:处理后状态(canceled / refunding 等)。refund_fee / refund_amount:退票手续费 / 退款金额(元)。message:用户可读的提示文案。refunding 或 refunded。1. 调用 search,拿到 flights[].cabins[]
2. 判断 cabins[].pricing_required:
- false → 直接用 cabins[].offer_id 下单
- true → 调用 pricing 换取 offer_id
3. 调用 order/create,携带 offer_id + 乘客 + 联系人 + out_trade_no
4. 成功后拿到 system_no(user_pay 模式还会返回 checkout_url)
5. 引导用户在 pay_expire_time 前完成支付:
- user_pay:跳转 checkout_url,或调用 order/pay 自行集成 SDK
- enterprise_credit / monthly_settle:调用 order/pay 直接扣款 / 记账
6. 平台收到支付回调后推送 Webhook 到 callback_url,订单推进到 paid → ticketed
7. 出票后通过 order/detail 拿到 PNR / 票号;如需退订,按 order/cancel-fee → order/cancel 流程处理