订单 API
渠道方通过 S2S 提交采购订单并查询履约状态。创建成功后返回平台order_code,初始状态为 PENDING_REVIEW(待审核)。
概述
接口路径前缀:/open/v1/order
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /open/v1/order/create | 创建采购订单 |
| GET | /open/v1/order/detail | 按 order_code 查询订单详情(含商品明细) |
订单来源
order_source 固定为 API_INTERFACE, 合作形式 cooperation_type 固定为 PURCHASE(采购)。鉴权说明
继承开放平台 S2S 中间件(AppKey + 签名)。完整算法见鉴权说明。
| Header | 类型 | 必填 | 说明 |
|---|---|---|---|
X-App-Id | string | 是 | 控制台「凭证管理」中的 App ID |
X-Timestamp | integer | 是 | Unix 秒级时间戳,有效窗口 ±5 分钟 |
X-Signature | string | 是 | 请求签名,见鉴权说明 |
创建订单
渠道方提交收货信息及商品明细,系统校验 goods_code 有效性后创建订单。logistics_type 未传时默认 EXPRESS_DELIVERY,postage_policy 未传时默认 FREE_SHIPPING。
POST/open/v1/order/create
请求体(application/json):
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
third_order_id | string | 是 | 渠道方第三方订单号(幂等对账键),最长 100 字符 |
contact_person | string | 是 | 联系人姓名,最长 50 字符 |
contact_phone | string | 是 | 联系电话,中国大陆 11 位手机号 |
address | string | 是 | 详细收货地址,最长 200 字符 |
items | array | 是 | 订单商品列表,至少 1 项,见下表 |
user_id | integer | 否 | 晓葆侧 user_id,传入时须 ≥ 1 |
area_code | string | 否 | 所在区域编码,最长 20 字符 |
area_text | string | 否 | 所在区域文本,最长 100 字符 |
logistics_type | string | 否 | 默认 EXPRESS_DELIVERY:EXPRESS_DELIVERY(快递) /NO_LOGISTICS(无需物流) /SELF_PICKUP(自提) |
postage_policy | string | 否 | 默认 FREE_SHIPPING:FREE_SHIPPING(包邮) /PAID_SHIPPING(不包邮) /NO_SHIPPING(无邮费) |
items 单项:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
goods_code | string | 是 | 商品或套餐编码,最长 50 字符 |
quantity | integer | 是 | 购买数量,≥ 1 |
unit_price | integer | 是 | 商品单价(分),≥ 0 |
请求示例:
POST /open/v1/order/create
X-App-Id: 100023
X-Timestamp: 1743494400
X-Signature: ...
Content-Type: application/json
{
"third_order_id": "PARTNER-ORD-20260720-001",
"contact_person": "张三",
"contact_phone": "13800138000",
"area_text": "上海市浦东新区",
"address": "世纪大道 1 号",
"logistics_type": "EXPRESS_DELIVERY",
"postage_policy": "FREE_SHIPPING",
"items": [
{
"goods_code": "GOODS-BP-001",
"quantity": 2,
"unit_price": 19900
}
]
}成功响应(201 Created):
{
"success": true,
"code": 0,
"message": "订单创建成功",
"data": {
"id": 10001,
"order_code": "ORD-X20260720ABCDEF",
"order_time": "2026-07-20 15:30:00"
},
"timestamp": "2026-07-20T15:30:00+08:00"
}data 字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
id | integer | 订单主键 ID |
order_code | string | 平台订单编码(后续查询用) |
order_time | string | 下单时间,格式 Y-m-d H:i:s |
查询订单详情
通过平台订单编码 order_code 查询订单完整信息,含商品明细列表。
GET/open/v1/order/detail
查询参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
order_code | string | 是 | 平台订单编码,最长 100 字符(创建订单时返回) |
请求示例:
GET /open/v1/order/detail?order_code=ORD-X20260720ABCDEF
X-App-Id: 100023
X-Timestamp: 1743494400
X-Signature: ...成功响应(200 OK):
{
"success": true,
"code": 0,
"message": "查询成功",
"data": {
"order_code": "ORD-X20260720ABCDEF",
"order_time": "2026-07-20 15:30:00",
"order_status": "PENDING_REVIEW",
"order_source": "API_INTERFACE",
"cooperation_type": "PURCHASE",
"user_id": null,
"third_order_id": "PARTNER-ORD-20260720-001",
"contact_person": "张三",
"contact_phone": "13800138000",
"area_code": null,
"area_text": "上海市浦东新区",
"address": "世纪大道 1 号",
"logistics_type": "EXPRESS_DELIVERY",
"postage_policy": "FREE_SHIPPING",
"postage_amount": 0,
"items": [
{
"id": 1,
"goods_id": 100,
"goods_code": "GOODS-BP-001",
"goods_name": "示例血压计",
"quantity": 2,
"unit_price": 19900,
"total_price": 39800,
"shipping_status": "PENDING_SHIPMENT"
}
],
"created_at": "2026-07-20 15:30:00",
"updated_at": "2026-07-20 15:30:00"
},
"timestamp": "2026-07-20T15:31:00+08:00"
}data 主要字段:
| 字段 | 类型 | 说明 |
|---|---|---|
order_code | string | 平台订单编码 |
order_time | string | 下单时间(Y-m-d H:i:s) |
order_status | string | 订单状态,如 PENDING_REVIEW(待审核) /APPROVED(已审核) / SHIPPED(已发货)等 |
order_source | string | 订单来源,API 创建固定 API_INTERFACE |
cooperation_type | string | 合作形式,API 创建固定 PURCHASE |
user_id | integer | null | 晓葆侧用户 ID |
third_order_id | string | 渠道方第三方订单号 |
contact_person | string | 联系人 |
contact_phone | string | 联系电话 |
area_code | string | null | 区域编码 |
area_text | string | null | 区域文本 |
address | string | 详细收货地址 |
logistics_type | string | 物流类型 |
postage_policy | string | 运费政策 |
postage_amount | integer | 邮费金额(分) |
items | array | 商品明细,见下表 |
created_at | string | 创建时间(Y-m-d H:i:s) |
updated_at | string | 更新时间(Y-m-d H:i:s) |
items 单项:
| 字段 | 类型 | 说明 |
|---|---|---|
id | integer | 订单项 ID |
goods_id | integer | 商品 ID |
goods_code | string | 商品编码 |
goods_name | string | 商品名称 |
quantity | integer | 购买数量 |
unit_price | integer | 单价(分) |
total_price | integer | 总价(分)= unit_price × quantity |
shipping_status | string | 发货状态,如 PENDING_SHIPMENT(待发货) /SHIPPED(已发货)等 |
发货回调说明
平台发货确认后,会将物流及设备 SN 等信息异步推送到合作方已配置的 Webhook 端点。 生产环境由内部服务触发(非渠道方主动调用)。
路由中存在
POST /open/v1/order/shipped-callback-test, 仅用于联调 / 文档演示;正式发货回调走内部鉴权通道POST /open/internal/order/shipped-callback,请勿在生产对接中依赖 test 端点。错误码
| code | HTTP 状态 | 说明 | 处理建议 |
|---|---|---|---|
GOODS_NOT_FOUND | 404 | 商品编码不存在 | 核对 items[].goods_code 是否已在平台配置 |
ORDER_NOT_FOUND | 404 | 订单不存在或不属于当前应用 | 确认 order_code 与 App 归属 |
VALIDATION_ERROR | 422 | 参数校验失败 | 查看 errors 中的字段与描述 |
HTTP_400 | 400 | 业务异常(如写入失败) | 按 message 排查后重试 |
HTTP_401 | 401 | 签名校验失败或应用不存在 | 检查签名算法与时间戳 |
HTTP_429 | 429 | 请求频率超限 | 降速并指数退避重试 |