订单模块

订单是发起支付的载体,支持充值订单和会员套餐购买订单两种类型。


订单状态流转

pending(待支付)
  ├── → paid(已支付)→ refunding(退款中)→ refunded(已退款)
  └── → cancelled(已取消)/ expired(已过期)

5.1 订单列表

GET /api/v1/orders

查询参数 类型 说明
type string recharge / membership
status string pending / paid / cancelled / refunding / refunded / expired
start_date string 开始日期
end_date string 结束日期
page int 页码
page_size int 每页条数

响应:

{
  "code": 0,
  "data": {
    "items": [
      {
        "order_id": "ord_20240101001",
        "type": "recharge",
        "status": "paid",
        "amount": "100.00",
        "currency": "CNY",
        "channel": "alipay",
        "description": "钱包充值 100 元",
        "paid_at": "2024-01-01T12:05:00Z",
        "created_at": "2024-01-01T12:00:00Z"
      }
    ],
    "total": 12,
    "page": 1,
    "page_size": 20
  }
}

5.2 创建订单

POST /api/v1/orders

{
  "type": "membership",
  "plan_id": "plan_basic",
  "period": "yearly",
  "voucher_id": "v_01HX..."
}
字段 类型 必填 说明
type string recharge / membership
amount string recharge 必填 充值金额
plan_id string membership 必填 会员套餐 ID
period string membership 必填 monthly / yearly
voucher_id string 使用代金券

响应:

{
  "code": 0,
  "data": {
    "order_id": "ord_20240101002",
    "type": "membership",
    "status": "pending",
    "amount": "490.00",
    "discount_amount": "20.00",
    "final_amount": "470.00",
    "currency": "CNY",
    "expire_at": "2024-01-01T12:30:00Z"
  }
}

5.3 订单详情

GET /api/v1/orders/{order_id}

{
  "code": 0,
  "data": {
    "order_id": "ord_20240101001",
    "type": "recharge",
    "status": "paid",
    "amount": "100.00",
    "discount_amount": "0.00",
    "final_amount": "100.00",
    "currency": "CNY",
    "channel": "alipay",
    "channel_trade_no": "2024010122001XXXX",
    "description": "钱包充值 100 元",
    "voucher_id": null,
    "paid_at": "2024-01-01T12:05:00Z",
    "created_at": "2024-01-01T12:00:00Z",
    "expire_at": "2024-01-01T12:30:00Z"
  }
}

5.4 发起支付

POST /api/v1/orders/{order_id}/pay

{
  "channel": "wechat",
  "client_type": "web",
  "return_url": "https://console.example.com/membership"
}

响应(微信扫码):

{
  "code": 0,
  "data": {
    "order_id": "ord_20240101002",
    "channel": "wechat",
    "pay_params": {
      "type": "qrcode",
      "code_url": "weixin://wxpay/bizpayurl?pr=xxx"
    },
    "expire_at": "2024-01-01T12:30:00Z"
  }
}

5.5 查询支付状态

GET /api/v1/orders/{order_id}/payment-status

前端可轮询此接口(建议间隔 2 秒),直到 statuspaid 或超时。

{
  "code": 0,
  "data": {
    "order_id": "ord_20240101002",
    "status": "paid",
    "paid_at": "2024-01-01T12:08:00Z"
  }
}

5.6 取消订单

POST /api/v1/orders/{order_id}/cancel

pending 状态的订单可取消。

{ "reason": "不想买了" }

5.7 申请退款

POST /api/v1/orders/{order_id}/refund

paid 状态且满足退款条件的订单可申请。

{
  "reason": "误操作重复购买",
  "amount": "100.00"
}

响应:

{
  "code": 0,
  "data": {
    "refund_id": "ref_01HX...",
    "order_id": "ord_20240101001",
    "refund_amount": "100.00",
    "status": "processing",
    "estimated_days": 3,
    "created_at": "2024-01-01T15:00:00Z"
  }
}

5.8 导出订单

GET /api/v1/orders/export

查询参数 说明
format csv / xlsx
start_date 开始日期
end_date 结束日期
type 订单类型筛选
status 订单状态筛选

响应: 返回文件下载链接(有效期 10 分钟)