API 接口文档

MeiHe聚合商城系统开放 API,支持第三方系统调用下单、查询订单、获取商品。所有接口均通过统一入口访问,返回 JSON 数据。

接口版本 v1.0 JSON 返回 POST 请求 统一入口

接口简介

本系统提供统一 API 入口,所有接口均通过 /api/index.php 访问,使用 act 参数区分操作类型。

POST/api/index.php

支持的操作

act 参数功能说明
get_products获取商品列表查看下方文档
create_order提交订单查看下方文档
query_order查询订单查看下方文档
所有请求均为 POST,参数使用 application/x-www-form-urlencoded 提交,返回统一 JSON。

鉴权方式

每个请求都必须携带以下 4 个公共参数,缺一不可。

1
uid
用户 ID
2
api_key
API 密钥
3
timestamp
Unix 时间戳
4
sign
签名
参数类型必填说明
uidint用户 ID,在后台「用户管理」中查看
api_keystringAPI 密钥,在后台「用户管理」中生成
timestampint当前 Unix 时间戳(秒级),与服务器时间相差不超过 300 秒
signstring签名,见下方算法

签名算法

签名 = md5(api_key + timestamp),两个字符串直接拼接后取 MD5。

// 示例:api_key = "abc123", timestamp = 1726123456
$sign = md5("abc123" . "1726123456");
// 得到 32 位小写 MD5 值,作为 sign 参数提交
如果后台开启了「IP 白名单」,服务器出口 IP 必须提前加入白名单,否则会返回 IP 不在白名单中

返回格式

{
  "code": 0,           // 0 = 成功,-1 = 失败
  "msg": "success",    // 提示信息
  "data": { ... }      // 业务数据(部分接口)
}
字段类型说明
codeint0 表示成功,-1 表示失败
msgstring成功或失败的文字提示
datamixed业务数据,仅部分接口返回

获取商品 POST

拉取本商城上架中的商品列表,支持分类、关键词筛选与分页。

POST/api/index.php?act=get_products

请求参数

参数类型必填说明
actstring固定值 get_products
uidint用户 ID
api_keystringAPI 密钥
timestampintUnix 时间戳
signstring签名
categorystring分类标识,留空为全部
keywordstring关键词,匹配商品名称或描述
pageint页码,默认 1
per_pageint每页数量,默认 50,最大 100

返回示例

{
  "code": 0,
  "msg": "success",
  "data": [
    {
      "id": 1,
      "name": "腾讯视频会员月卡",
      "description": "官方直充,秒到账",
      "price": 15.00,
      "original_price": 20.00,
      "vip_price": 12.00,
      "image": "/assets/uploads/products/xxx.jpg",
      "category": "video",
      "input_title": "下单QQ",
      "product_type": "video",
      "require_input": "1",
      "stock": 100,
      "sort_order": 0,
      "allow_quantity": 1,
      "input_multi": 0,
      "repeat": 1
    }
  ],
  "total": 28,
  "page": 1,
  "per_page": 50
}

返回字段说明

字段类型说明
idint商品 ID,下单时使用
namestring商品名称
descriptionstring商品描述
pricefloat现价(普通用户)
original_pricefloat原价
vip_pricefloat会员价,0 表示无会员价
imagestring商品主图路径
categorystring分类标识
input_titlestring主输入框标题
product_typestring商品展示类型
require_inputstring是否必填,1 必填,0 非必填
stockint库存,-1 表示无限
sort_orderint排序值,越大越靠前
allow_quantityint是否允许改数量,1 允许,0 不允许
input_multiint是否显示数量选择,1 显示,0 不显示
repeatint是否允许重复购买,1 允许,0 不允许

分页字段说明

字段类型说明
totalint商品总数
pageint当前页码
per_pageint每页数量

提交订单 POST

使用指定用户(uid)的余额下单,成功后扣除余额、减库存、写订单记录。

POST/api/index.php?act=create_order

请求参数

参数类型必填说明
actstring固定值 create_order
uidint用户 ID
api_keystringAPI 密钥
timestampintUnix 时间戳
signstring签名
product_idint商品 ID
quantityint购买数量,默认 1,最大 99
input1string主输入内容(如 QQ、邮箱、充值账号)
input2string附加输入 2
input3string附加输入 3
input4string附加输入 4
notestring订单备注
notify_urlstring异步通知地址,下单完成后系统会 POST 结果到此地址

返回示例(成功)

{
  "code": 0,
  "msg": "下单成功",
  "order_no": "202609121200001234",
  "total_price": 15.00,
  "card_content": "卡密内容\n第二行卡密"
}

返回示例(失败)

{
  "code": -1,
  "msg": "余额不足,还需 10.00 元"
}

返回字段说明

字段类型说明
codeint0 = 成功,-1 = 失败
msgstring提示信息
order_nostring订单号,后续查询订单用此号
total_pricefloat订单总金额
card_contentstring卡密内容,多张卡密用换行符 \n 分隔(仅自动发卡密商品返回)

异步通知参数

如果传了 notify_url,系统会在下单完成后向该地址 POST 以下参数:

参数类型说明
order_nostring订单号
product_idint商品 ID
product_namestring商品名称
total_pricefloat订单总金额
quantityint购买数量
statusstringsuccess 表示成功

查询订单 POST

根据订单号查询订单的当前状态。

POST/api/index.php?act=query_order

请求参数

参数类型必填说明
actstring固定值 query_order
uidint用户 ID
api_keystringAPI 密钥
timestampintUnix 时间戳
signstring签名
order_nostring要查询的订单号

返回示例

{
  "code": 0,
  "msg": "success",
  "data": {
    "order_no": "202609121200001234",
    "product_id": 1,
    "product_name": "腾讯视频会员月卡",
    "quantity": 1,
    "unit_price": 15.00,
    "total_price": 15.00,
    "status": 3,
    "status_text": "已完成",
    "create_time": "2026-09-12 12:00:00",
    "card_content": ["卡密1", "卡密2"]
  }
}

返回字段说明

字段类型说明
codeint0 = 成功,-1 = 失败
msgstring提示信息
data.order_nostring订单号
data.product_idint商品 ID
data.product_namestring商品名称
data.quantityint购买数量
data.unit_pricefloat单价
data.total_pricefloat订单总金额
data.statusint订单状态码,见下方说明
data.status_textstring状态文字(已完成 / 处理中 等)
data.create_timestring下单时间
data.card_contentarray卡密内容数组,无卡密时为空数组 []

订单状态说明

statusstatus_text含义
0待处理订单已创建,等待处理
1已支付已收到款项
2处理中正在向上游下单或等待结果
3已完成订单处理完成,已发货
4已取消 / 失败订单被取消或处理失败

工具接口参数

本系统支持「自定义 API 工具」型商品。第三方系统(同系统对接或 API 调用)下单此类商品时,
本系统会调用商品绑定的上游 API,把上游返回的已解析结果原样返回给调用方。

简单说:上游返回什么,接口就返回什么
调用方无需二次解析,直接按 api_result 展示即可。

与普通卡密商品的区别

类型返回内容展示方式
卡密商品card_content:卡密文本文本列表
工具 / 对接商品api_result:上游解析后的成品(链接 / 文本)按内容自动识别为文本 / 图片 / 音频 / 视频

调用示例

// 与普通下单接口一致,act=create_order,只是商品类型不同
POST /api/index.php?act=create_order
product_id=12
quantity=1
input1=https://v.douyin.com/xxxxx

返回参数说明

字段类型说明
codeint0 = 成功,-1 = 失败
msgstring提示信息
order_nostring订单号
total_pricefloat订单金额
api_resultstring上游接口返回的已解析结果,原样返回
display_typestring建议展示类型:text / image / audio / video
card_contentstring如果是卡密型商品,返回卡密内容(工具型商品无此字段)

api_result 三种典型返回

1. 文本结果

{
  "code": 0,
  "msg": "下单成功",
  "order_no": "202609121200001234",
  "total_price": 1.00,
  "display_type": "text",
  "api_result": "兑换码:ABC-1234-DEF-5678"
}

2. 视频结果(短视频去水印等)

{
  "code": 0,
  "msg": "下单成功",
  "order_no": "202609121200001234",
  "total_price": 1.00,
  "display_type": "video",
  "api_result": "https://xxx.com/video/20260912.mp4"
}

3. 多结果(批量解析)

{
  "code": 0,
  "msg": "下单成功",
  "order_no": "202609121200001234",
  "total_price": 1.00,
  "display_type": "image",
  "api_result": "https://xxx.com/img/1.jpg\nhttps://xxx.com/img/2.jpg"
}

调用方处理建议

display_type建议处理
text直接文本展示,多行用换行分隔
image按链接展示图片,多张可网格布局
audio用播放器加载链接,播放音频
video用播放器加载链接,播放视频
api_result上游已经解析好的成品,调用方直接展示即可,不需要再次请求上游

注意事项

项目说明
按量计费工具型商品每次调用都会消耗调用方余额
异步返回如果上游响应较慢,接口会在超时时间内等待,建议客户端超时设 ≥ 30 秒
结果时效视频/图片链接可能有时效性,建议调用后立即使用
失败处理code=-1 时读取 msg 提示,订单状态为失败,可联系客服

状态码 / 错误码

接口返回码

code说明
0请求成功
-1请求失败,具体原因见 msg

常见错误提示

msg 内容原因
API密钥不能为空未提交 api_key 参数
用户ID不能为空未提交 uid 参数
签名不能为空未提交 sign 参数
时间戳不能为空未提交 timestamp 参数
时间戳已过期timestamp 与服务器时间相差超过 300 秒
用户不存在或API密钥无效uid 与 api_key 不匹配,或账号被禁用
签名验证失败sign 计算错误
IP 不在白名单中请求来源 IP 未加入白名单
商品不存在或已下架product_id 无效或商品已下架
余额不足用户余额不足以下单
订单不存在订单号不存在或不属于该用户