开发者 开放平台
│ │
├─ 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 │<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 建议向用户二次确认。supplier_changed:供应商是否切换,true 可能影响退改签规则。offer_id 过期后需重新验价,不可直接下单。price_changed = true 时应向终端用户展示最新价格并确认。POST /open/v1/flight/order/createoffer_id + 乘客信息 + 联系人创建订单。<app_id, out_trade_no>。同一 out_trade_no 重复请求只会创建一笔订单,重复调用直接返回已存在订单的 system_no。out_trade_no:商户订单号(必填),幂等键,建议格式 {merchant_prefix}_{timestamp}_{seq}。offer_id:去程 offer_id(必填),来自搜索或验价。return_offer_id:返程 offer_id(往返时必填)。passengers:乘客信息列表,字段与验价一致。contact:联系人信息(姓名、手机、邮箱)。pay_mode:支付模式,默认 user_pay(终端用户支付)。callback_url:订单状态回调地址(HTTPS),平台会在订单状态变化时推送 Webhook(格式见 Webhook 文档)。system_no:平台订单号,全局唯一。status:订单状态,初始为 pending_pay。pay_expire_time:支付截止时间(北京时间),默认下单后 15 分钟,超时自动关单。total_amount:订单总金额(元)。pnr:编码,下单时可能为空,出票后补回。| status | 含义 |
|---|---|
pending_pay | 待支付 |
paid | 已支付,待出票 |
ticketed | 已出票 |
canceled | 已取消 |
refunded | 已退款 |
failed | 出票失败 |
status = canceled)。out_trade_no 重试,利用幂等性避免重复下单。callback_url 需在接入方实现签名校验,防止伪造回调(具体签名算 法见 Webhook 文档)。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,引导用户在 pay_expire_time 前完成支付
5. 平台收到支付回调后推送 Webhook 到 callback_url,订单推进到 paid → ticketed