Skip to content

1. 创建订单

接口地址/home/order/create

请求参数

参数名类型必填说明
goods_idInteger商品 ID
quantityInteger购买数量

响应示例

json
{
  "code": 1,
  "msg": "订单创建成功!",
  "data": {
    "trade_no": "T1000123456",
    "goods_name": "商品名称",
    "quantity": 1,
    "goods_price_old": "10.000",
    "goods_price": "10.000",
    "total_price": "10.100",
    "create_time": 1700000000,
    "fee": "0.100",
    "order_auto_close_time": 1800,
    "purchase_agreement": "https://example.com/agreement"
  }
}

批发优惠响应示例(购买数量达到批发优惠条件):

json
{
  "code": 1,
  "msg": "订单创建成功!",
  "data": {
    "trade_no": "T1000123456",
    "goods_name": "商品名称",
    "quantity": 10,
    "goods_price_old": "10.000",
    "goods_price": "9.000",
    "total_price": "90.100",
    "create_time": 1700000000,
    "fee": "0.100",
    "order_auto_close_time": 1800,
    "purchase_agreement": "https://example.com/agreement"
  }
}

字段说明

  • trade_no:订单号
  • goods_name:商品名称
  • quantity:购买数量(包含赠送数量)
  • goods_price_old:原始单价
  • goods_price:最终成交单价(批发优惠后的价格)
  • total_price:最终成交总价(包含手续费)
  • create_time:创建时间(时间戳)
  • fee:交易手续费
  • order_auto_close_time:订单自动关闭时间(秒,默认 1800 秒=30 分钟)
  • purchase_agreement:购卡协议链接

说明

  • 创建订单后需要调用 /home/order/doPay 接口完成支付
  • 订单创建后会自动关闭,关闭时间由 order_auto_close_time 决定(默认 30 分钟)
  • 如果商品设置了批发优惠,购买数量达到条件时会自动应用优惠价格
  • 如果商品设置了购买赠送,实际获得的数量会大于购买数量
  • 手续费计算:手续费 = 商品总价 × 手续费率,最小手续费由系统配置决定
  • 最终成交总价 = 商品总价 + 手续费

错误响应示例

json
{
  "code": 0,
  "msg": "xxx"
}

4. 确认支付

接口地址/home/order/doPay

请求参数

参数名类型必填说明
trade_noString订单号

成功响应示例

json
{
  "code": 1,
  "msg": "订单已完成"
}

错误响应示例

1. 订单不存在

json
{
  "code": 0,
  "msg": "订单不存在"
}

2. 余额不足

json
{
  "code": 0,
  "msg": "余额不足"
}

3. 订单状态异常

json
{
  "code": 0,
  "msg": "订单已支付,请勿重复支付!"
}
json
{
  "code": 0,
  "msg": "订单已超时关闭,请重新下单!"
}
json
{
  "code": 0,
  "msg": "订单已退款!"
}

4. 商品状态异常

json
{
  "code": 0,
  "msg": "商品不存在,无法完成支付"
}
json
{
  "code": 0,
  "msg": "商品已下架,无法完成支付,请联系商家处理"
}

5. 商家状态异常

json
{
  "code": 0,
  "msg": "商家状态异常,无法完成支付"
}
json
{
  "code": 0,
  "msg": "商家已被冻结,无法完成支付"
}

6. 店铺状态异常

json
{
  "code": 0,
  "msg": "店铺状态异常,无法完成支付"
}
json
{
  "code": 0,
  "msg": "店铺已被冻结,无法完成支付"
}
json
{
  "code": 0,
  "msg": "店铺已歇业,无法完成支付"
}

支付流程说明

  1. 订单验证

    • 检查订单是否存在
    • 检查订单状态(0-待支付才能继续)
  2. 商品验证

    • 检查商品是否存在
    • 检查商品是否上架(status = 1)
  3. 商家验证

    • 检查商家账号状态(status = 1)
    • 检查商家是否被冻结(is_freeze = 0)
  4. 店铺验证

    • 检查店铺状态(shop_status = 1)
    • 检查店铺是否被冻结(is_freeze = 0)
    • 检查店铺是否歇业(shop_close = 0)
  5. 余额验证

    • 检查买家余额是否充足
  6. 完成支付

    • 扣除买家余额
    • 订单状态变为已支付(status = 1)
    • 自动发货(分配卡密)
    • 资金进入冻结期

说明

  • 使用用户余额支付订单
  • 支付前会进行多重验证,确保交易安全
  • 支付成功后订单状态变为已支付,可通过 /home/order/query 接口查看卡密
  • 支付成功后会自动发货,卡密会立即分配给订单
  • 商家收到的款项会进入冻结期,冻结期结束后自动解冻到商家余额
  • 如果订单在创建后商品被下架、商家被冻结等,支付时会被拦截

订单状态说明

状态值状态名称说明
0待支付订单已创建,等待支付
1已支付订单已支付成功
2已关闭订单超时或被取消
3已退款订单已退款

注意事项

  1. 所有订单相关接口都需要用户登录认证
  2. 订单列表受用户设置的数据时效性限制
  3. 创建订单时会检查:
    • 商品是否存在且上架
    • 商品库存是否充足
    • 购买数量是否符合限制
    • 商家和店铺状态是否正常
  4. 支付订单时会再次检查所有状态,确保交易安全

3. 获取订单列表

接口地址/home/order/list

请求参数

参数名类型必填说明
pageInteger页码,默认 1
limitInteger每页数量,默认 10

响应示例

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "list": [
      {
        "id": 12,
        "user_id": 1004,
        "buyer_user_id": 1004,
        "goods_id": 5,
        "trade_no": "Q251123517bde",
        "goods_name": "测试222", // 商品名称
        "quantity": 11, // 总数量
        "goods_price": "0.900", // 商品单价
        "total_price": "9.450", // 买家总付款
        "fee": "0.450", // 交易手续费
        "sendout": 11, // 已发货数量
        "status": 3, // 订单状态 0-待支付 1-已支付 2-已关闭 3-已退款
        "create_at": "2025-11-23 18:01:53", // 创建时间
        "success_at": "2025-11-23 18:02:04", // 支付成功时间
        "create_ip": "203.160.68.146" // 下单 IP 地址
      }
    ],
    "total": 25
  }
}

4. 订单查询

接口地址/home/order/query

请求参数

参数名类型必填说明
trade_noString订单号

响应示例

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "order": {
      "trade_no": "Q25111620c36f",
      "create_at": "2025-11-16 08:01:31",
      "total_price": "21.000",
      "quantity": 1,
      "status": 1
    },
    "goods": {
      "name": "商品2",
      "content": "<p>22</p>",
      "remark": "<p>2222</p>",
      "snapshot": 0
    },
    "shop": {
      "shop_contact": {
        "qq": "",
        "wechat": "",
        "mobile": "",
        "site_link": ""
      },
      "shop_name": "1000测试店铺"
    },
    "canComplaint": true,
    "outCards": "011    90zB0U2Oe7X8T4Q",
    "originalCards": "011    90zB0U2Oe7X8T4Q"
  }
}

多卡密响应示例

json
{
  "code": 1,
  "msg": "获取成功",
  "data": {
    "order": {
      "trade_no": "Q25111620c36f",
      "create_at": "2025-11-16 08:01:31",
      "total_price": "42.000",
      "quantity": 2,
      "status": 1
    },
    "goods": {
      "name": "商品名称",
      "content": "<p>商品详情</p>",
      "remark": "<p>购买须知</p>",
      "snapshot": 0
    },
    "shop": {
      "shop_contact": {
        "qq": "123456",
        "wechat": "wxid",
        "mobile": "13800138000",
        "site_link": "https://example.com"
      },
      "shop_name": "测试店铺"
    },
    "canComplaint": true,
    "outCards": "卡号:123456    卡密:abcdef\n卡号:789012    卡密:ghijkl",
    "originalCards": "123456    abcdef\n789012    ghijkl"
  }
}

字段说明

order(订单信息)

  • trade_no:订单号
  • create_at:创建时间
  • total_price:订单总价
  • quantity:购买数量
  • status:订单状态(0-待支付,1-已支付,2-已关闭,3-已退款)

goods(商品信息)

  • name:商品名称
  • content:商品详情(HTML 格式)
  • remark:购买须知(HTML 格式)
  • snapshot:快照标识(0-商品正常,1-商品已删除)

shop(店铺信息)

  • shop_name:店铺名称
  • shop_contact:店铺联系方式
    • qq:QQ 号
    • wechat:微信号
    • mobile:手机号
    • site_link:网站链接

其他字段

  • canComplaint:是否可以投诉(布尔值,只有已支付且在解冻期内的订单可投诉)
  • outCards:格式化后的卡密(带前缀,换行符 \n 分隔多个卡密)
  • originalCards:原始卡密(不带前缀,换行符 \n 分隔多个卡密)

卡密格式说明

  • outCards:根据商品设置显示自定义前缀,如 "卡号:123456 卡密:abcdef"
  • originalCards:纯卡号卡密,如 "123456 abcdef"
  • 多个卡密使用换行符 \n 分隔
  • 卡号和卡密之间使用 4 个空格分隔

说明

  • 只能查询当前登录用户的订单
  • 查询范围受系统配置的 order_query_limitday 限制(默认 30 天)
  • 只有已支付(status=1)的订单才会返回卡密信息
  • 订单被冻结时无法查询,会返回错误提示:"订单已被冻结,请联系客服处理!"
  • 商品被删除时 snapshot 为 1,但仍可查看订单信息和卡密
  • 查询订单时会自动触发卡密打印功能

错误响应示例

json
{
  "code": 0,
  "msg": "没有查询到订单信息"
}
json
{
  "code": 0,
  "msg": "订单已被冻结,请联系客服处理!"
}