API开发文档 共 57 个接口

第三方程序对接请使用 签名对接 API;会员网页使用登录会话接口。本文按当前代码整理,示例均为演示值,实际可用接口和权限以部署版本与账号配置为准。

开始接入

基础地址为当前网站的 HTTPS 域名。主站、分站的商品可见范围和价格可能不同,请始终使用同一站点完成查询与下单。

签名接口流程:连接与余额 → 商品目录 / 详情 → 选择类别与规格 → 库存 / 报价 → 余额下单 → 查单。商品数字 ID 与对接 CODE 不可混用。

普通接口使用表单编码 application/x-www-form-urlencoded;上传接口使用 multipart/form-data。嵌套规格例:sku[时长]=月付。不要把 JSON 请求体直接替代表单。

成功以 JSON 中 code=200 判断,HTTP 200 不代表业务成功。失败通常为 {"code":0,"msg":"错误说明"},失败时可能没有 data。下方响应示例只展示关键字段。

订单号请按字符串保存。订单 status:0 未支付、1 已支付、2 接口退款、3 网站退款、4 拼团退款;发货 delivery_status:0 未发货、1 已发货、2 预订待补货、3 待成团、4 已退款不发货。支付成功不等于已发货。

通用分页通常返回 data.list / data.total;前台商品列表返回 data[] 和顶层 total。金额可能为数字或小数字符串,请按十进制处理。

签名认证与 PHP 接入示例

公共参数:app_id 为会员 ID,sign 为小写 MD5 签名;使用会员自己的 API 密钥 app_key。密钥只在调用方服务端使用,示例从环境变量读取,不在文档中展示真实密钥。

签名步骤:移除 sign → 对顶层参数按键名 ksort 排序 → 仅移除值严格等于空字符串的项(保留 0)→ 使用 PHP 默认 http_build_query 序列化 → 拼接 &key=密钥 → 对整个字符串 urldecode → MD5。数组字段也参与签名,必须与实际提交数据一致。

app_key 无需作为公共表单字段发送;旧客户端若发送了 app_key,该字段同样参与签名。签名接口不使用登录 Cookie 或 CSRF。此处是现有协议,不是易支付的支付回调签名。

<?php
// Run on your server. Set credentials in environment variables.
$base = rtrim((string)getenv('MALL_API_BASE'), '/'); // HTTPS site URL
$appKey = (string)getenv('MALL_APP_KEY');
$data = ['app_id' => (string)getenv('MALL_APP_ID'), 'code' => 'PRODUCT_CODE', 'num' => 1];
unset($data['sign']);
ksort($data);
foreach ($data as $key => $value) {
    if ($value === '') unset($data[$key]); // Keep 0; do not use array_filter().
}
$data['sign'] = md5(urldecode(http_build_query($data) . '&key=' . $appKey));
$ch = curl_init($base . '/shared/commodity/valuation');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query($data),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded'],
]);
$response = curl_exec($ch);
if ($response === false) throw new RuntimeException(curl_error($ch));
curl_close($ch);
$result = json_decode($response, true, 512, JSON_THROW_ON_ERROR);
if ((int)($result['code'] ?? 0) !== 200) throw new RuntimeException($result['msg'] ?? 'API request failed');
echo json_encode($result['data'], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
会员会话认证、常见错误与重试

会员接口使用本站有效登录 Cookie;需要 CSRF 的接口还须发送当前页面 meta[name="csrf-token"] 中的值到 X-CSRF-Token 请求头。接口清单中已注明认证要求。商家或分站权限仍由服务端验证,传入会员 ID 不能绕过权限。

“登录会话过期”请重新登录;“安全令牌已更新”请刷新页面;“商户ID不存在 / 密钥错误”请核对 app_id、密钥与签名字段;“库存不足”请重新读取库存与规格;“余额不足”请检查余额账户,硬币不等于可支付余额。

上传失败请按返回 msg 检查格式、尺寸、GD 扩展及 OSS 配置。403、413、429 或非 JSON 响应还可能来自防火墙、请求大小限制或频率限制。

查询接口请缓存并适度轮询。创建订单超时不代表没有扣款,不要直接重复购买;先用已知 tradeNo 查单,无法确认时联系管理员核对。request_no 用于重复请求检测,不保证重复请求返回原结果。

仅测试下拉列表中的本站查询接口。签名接口、查单密码、图片上传、下单、退款、退团和修改设置等操作请按文档由业务程序调用。

选择接口,填写实际参数后点击在线测试查询。

连接与余额 POST /shared/authentication/connect
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:查询

所有 /shared 接口都需要公共签名参数;返回余额不包含硬币。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
POST /shared/authentication/connect
返回字段
data.shopName:平台店铺名称
data.balance:签名账号的余额
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "shopName": "示例商城",
        "balance": "100.00"
    }
}
可对接商品目录 POST /shared/commodity/items
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:查询

仅包含上架、启用 API 且当前账号可见的商品。多维规格实际价格请调用 valuation。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
POST /shared/commodity/items
返回字段
data[]:分类数组;children[] 为分类下可对接商品
children[].id / code / name:商品 ID、对接 CODE、名称
price / user_price / factory_price:当前签名账号在当前网站的拿货价格
config:INI 字符串;price_selection:默认类别与规格
成功响应示例(节选)
{
    "code": 200,
    "data": [
        {
            "id": 1,
            "name": "示例分类",
            "children": []
        }
    ]
}
商品详情 POST /shared/commodity/item
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:查询

类别、规格及动态下单控件应读取本接口,不能用示例规格硬编码。

参数类型必填说明示例值
codestring是商品对接 CODE,不是商品数字 IDPRODUCT_CODE
请求示例(业务参数;认证按上方说明补充)
POST /shared/commodity/item
code=PRODUCT_CODE
返回字段
data:商品详情对象;含 id、code、name、价格、config、stock 等
config:解析后的配置对象,与 items / inventory 的 INI 字符串不同
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "id": 1,
        "code": "PRODUCT_CODE",
        "name": "示例商品",
        "config": [],
        "price_selection": {
            "race": "",
            "sku": []
        }
    }
}
库存与价格 POST /shared/commodity/inventory
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:查询

库存会变化,下单前建议重新校验。兼容参数 shared_code 与 sharedCode 二选一。

参数类型必填说明示例值
sharedCodestring是对接 CODE;兼容 shared_codePRODUCT_CODE
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
请求示例(业务参数;认证按上方说明补充)
POST /shared/commodity/inventory
sharedCode=PRODUCT_CODE
返回字段
data.count:当前规格库存
delivery_way:0 自动发货,1 人工发货;draft_status:是否支持预选
price / user_price / factory_price:签名账号价格;config:INI 字符串;price_selection:报价选择
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "count": 10,
        "delivery_way": 0,
        "draft_status": 0,
        "price": "3.00",
        "user_price": "3.00",
        "factory_price": "3.00",
        "config": "",
        "price_selection": {
            "race": "",
            "sku": []
        }
    }
}
库存数量 POST /shared/commodity/stock
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:查询

适合仅需库存的场景。

参数类型必填说明示例值
codestring是商品对接 CODE,不是商品数字 IDPRODUCT_CODE
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
请求示例(业务参数;认证按上方说明补充)
POST /shared/commodity/stock
code=PRODUCT_CODE
返回字段
data.stock:库存数量;可能以字符串返回
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "stock": "10"
    }
}
库存可用性校验 POST /shared/commodity/inventoryState
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:查询

仅校验,不锁库存。远程供货分支的规格校验能力取决于上游实现。

参数类型必填说明示例值
shared_codestring是商品对接 CODEPRODUCT_CODE
numinteger是购买数量,正整数1
card_idinteger是预选卡 ID;非预选填 00
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
请求示例(业务参数;认证按上方说明补充)
POST /shared/commodity/inventoryState
shared_code=PRODUCT_CODE&num=1&card_id=0
返回字段
code=200 表示校验通过;失败读取 msg
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
精确报价 POST /shared/commodity/valuation
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:查询

使用当前签名账号、当前网站的实际价格。非单价接口;需要单价请 num=1。

参数类型必填说明示例值
codestring是商品对接 CODE,不是商品数字 IDPRODUCT_CODE
numinteger是购买数量,正整数1
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
card_idinteger否预选卡 ID;不预选传 00
couponstring否优惠券码
请求示例(业务参数;认证按上方说明补充)
POST /shared/commodity/valuation
code=PRODUCT_CODE&num=1&card_id=0
返回字段
data.price:所选数量和规格的商品报价
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "price": "3.00"
    }
}
预选卡列表 POST /shared/commodity/draftCard
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:查询

仅支持已启用预选的商品;不会返回未售卡密正文。

参数类型必填说明示例值
codestring是商品对接 CODE,不是商品数字 IDPRODUCT_CODE
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
请求示例(业务参数;认证按上方说明补充)
POST /shared/commodity/draftCard
code=PRODUCT_CODE&page=1&limit=10
返回字段
data.list[]:id、draft(预选描述)、draft_premium(预选加价)
data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [
            {
                "id": 1,
                "draft": "示例描述",
                "draft_premium": "0.00"
            }
        ],
        "total": 1
    }
}
预选卡详情 POST /shared/commodity/draft
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:查询

该接口不是最终报价,最终应以 valuation / trade 为准。

参数类型必填说明示例值
codestring是商品对接 CODE,不是商品数字 IDPRODUCT_CODE
card_idinteger是预选卡 ID1
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
请求示例(业务参数;认证按上方说明补充)
POST /shared/commodity/draft
code=PRODUCT_CODE&card_id=1
返回字段
data.draft_premium:预选加价;data.cost:该卡记录的 cost 字段
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "draft_premium": "0.00",
        "cost": "0.00"
    }
}
余额下单(实际扣款) POST /shared/commodity/trade
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:创建订单、扣余额、可能发货

强制使用签名账号余额付款,不接受 pay_id 切换。商品须允许余额支付。动态控件按商品 widget 中的 name 直接提交;数量、联系方式和查单密码受商品配置限制。request_no 重复会报错,不会返回旧订单;超时后先核对既有订单,勿盲目更换请求号重复购买。

参数类型必填说明示例值
shared_codestring是商品对接 CODEPRODUCT_CODE
numinteger是购买数量,正整数1
deviceinteger是设备:0 电脑、1 安卓、2 iOS、3 iPad0
contactstring否按商品要求填写联系方式
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
card_idinteger否预选卡 ID;不预选传 00
couponstring否优惠券码
passwordstring否查单密码;按商品配置要求填写
request_nostring否调用方请求号,最长 19 字符;建议使用唯一数字请求号
reservation_confirminteger否库存不足且确需预订时传 1
请求示例(业务参数;认证按上方说明补充)
POST /shared/commodity/trade
shared_code=PRODUCT_CODE&num=1&device=0&card_id=0
返回字段
data.tradeNo:生成的订单号;amount:订单应付金额
secret:即时交付内容;url:支付跳转地址(余额单通常为空)
stock:下单后的库存;leave_message:已支付订单的商家留言
group_buy_team_id / group_buy_free_open / group_buy_share_url:拼团信息
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "tradeNo": "123261103120000456",
        "amount": "3.00",
        "url": "",
        "secret": "示例交付内容",
        "leave_message": "",
        "stock": "9"
    }
}
查询本人订单 POST /shared/commodity/query
分组:签名对接 API 认证:签名 app_id + sign
请求编码:application/x-www-form-urlencoded 操作:查询

只能查询 owner 为当前签名账号的订单。未支付或未交付时 secret 可能为空。

参数类型必填说明示例值
tradeNostring是平台返回的订单号,不是 request_no123261103120000456
请求示例(业务参数;认证按上方说明补充)
POST /shared/commodity/query
tradeNo=123261103120000456
返回字段
data.status:订单状态
data.secret:交付内容;widget:下单控件内容或 null
data.leave_message:仅已支付订单返回商家留言
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "status": 1,
        "secret": "示例交付内容",
        "widget": null,
        "leave_message": ""
    }
}
商品分类 GET /user/api/index/data
分组:前台商品与查单 认证:无需登录;登录后按当前会员身份返回
请求编码:application/x-www-form-urlencoded 操作:查询

分类可见性由当前网站及会员身份决定。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
GET /user/api/index/data
返回字段
data[]:分类树,包含 id、name 等分类字段
成功响应示例(节选)
{
    "code": 200,
    "data": [
        {
            "id": 1,
            "name": "示例分类"
        }
    ]
}
商品列表 GET /user/api/index/commodity
分组:前台商品与查单 认证:无需登录;登录后按当前会员身份返回
请求编码:application/x-www-form-urlencoded 操作:查询

limit=0 表示不分页;建议分页调用。列表展示价不能当作成交价,最终以 valuation / 下单为准。

参数类型必填说明示例值
categoryIdstring否0=全部;分类 ID;recommend=推荐0
keywordsstring否名称或标签关键词
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
请求示例(业务参数;认证按上方说明补充)
GET /user/api/index/commodity
categoryId=0&page=1&limit=10
返回字段
data[]:商品数组;total:顶层总数(不是 data.list / data.total)
id / name / cover:商品信息;price / user_price:价格;display_price:列表展示价
stock / stock_state / inventory_hidden:库存显示;reservation_enabled:是否支持预订
成功响应示例(节选)
{
    "code": 200,
    "data": [],
    "total": 0
}
商品详情 GET /user/api/index/commodityDetail
分组:前台商品与查单 认证:无需登录;登录后按当前会员身份返回
请求编码:application/x-www-form-urlencoded 操作:查询

读取商品配置后再报价、下单。

参数类型必填说明示例值
commodityIdinteger是商品数字 ID,不是 CODE1
请求示例(业务参数;认证按上方说明补充)
GET /user/api/index/commodityDetail
commodityId=1
返回字段
data:商品详情,包括 config、stock、规格和下单控件
reservation_enabled / group_buy_enabled / group_buy_rules:预订及拼团配置
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "id": 1,
        "name": "示例商品",
        "config": [],
        "stock": 10
    }
}
商品报价 POST /user/api/index/valuation
分组:前台商品与查单 认证:无需登录;登录后按当前会员身份返回
请求编码:application/x-www-form-urlencoded 操作:查询

不会创建订单或扣余额。支付手续费以最终订单金额为准。

参数类型必填说明示例值
item_idinteger是商品数字 ID1
numinteger是购买数量,正整数1
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
card_idinteger否预选卡 ID;不预选传 00
couponstring否优惠券码
请求示例(业务参数;认证按上方说明补充)
POST /user/api/index/valuation
item_id=1&num=1&card_id=0
返回字段
data.price:所选规格及数量的商品报价
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "price": "3.00"
    }
}
商品库存 POST /user/api/index/stock
分组:前台商品与查单 认证:无需登录;登录后按当前会员身份返回
请求编码:application/x-www-form-urlencoded 操作:查询

人工发货可能使用虚拟库存显示值,库存不代表立即交付承诺。

参数类型必填说明示例值
item_idinteger是商品数字 ID1
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
请求示例(业务参数;认证按上方说明补充)
POST /user/api/index/stock
item_id=1
返回字段
data.stock / stock_raw:库存显示值与接口提供的原始值
stock_state:库存状态;reservation_enabled:是否支持预订;manual_delivery:是否人工发货
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "stock": 10,
        "stock_raw": 10,
        "stock_state": 1,
        "reservation_enabled": true,
        "manual_delivery": 0
    }
}
支付方式 GET /user/api/index/pay
分组:前台商品与查单 认证:无需登录;登录后按当前会员身份返回
请求编码:application/x-www-form-urlencoded 操作:查询

按设备、登录状态和商品支付限制过滤;游客不返回余额支付。

参数类型必填说明示例值
itemIdinteger否按商品过滤支付方式1
请求示例(业务参数;认证按上方说明补充)
GET /user/api/index/pay
itemId=1
返回字段
data[]:id、name、icon、handle
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
预选卡列表 POST /user/api/index/card
分组:前台商品与查单 认证:无需登录;登录后按当前会员身份返回
请求编码:application/x-www-form-urlencoded 操作:查询

需商品支持预选。

参数类型必填说明示例值
item_idinteger是商品数字 ID1
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
请求示例(业务参数;认证按上方说明补充)
POST /user/api/index/card
item_id=1&page=1&limit=10
返回字段
data.list[]:预选卡信息;data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
前台创建订单 POST /user/api/order/trade
分组:前台商品与查单 认证:游客或会员;登录会员需 CSRF
请求编码:application/x-www-form-urlencoded 操作:创建订单、支付或预订

动态下单控件按商品配置额外提交。余额支付会实际扣款;其余方式可能生成支付跳转地址。不要在文档页面测试创建订单。

参数类型必填说明示例值
item_idinteger是商品数字 ID1
numinteger是购买数量,正整数1
pay_idinteger是从支付方式接口取得1
contactstring否按商品配置填写
racestring否商品类别名称,原样使用商品配置返回值
skuobject否规格名到选项值的映射。表单示例:sku[规格名]=选项值
card_idinteger否预选卡 ID;不预选传 00
couponstring否优惠券码
passwordstring否按商品配置填写查单密码
order_notice_confirmedinteger否启用下单提示时,用户阅读确认后传 1
captcha_proofstring否启用下单验证时,使用本站验证流程取得
reservation_confirminteger否库存不足且用户确认预订时传 1
group_buy_rule_idinteger否开团规则 ID
group_buy_team_idinteger否参团团队 ID
group_buy_share_user_idinteger否邀请人会员 ID
group_buy_share_tokenstring否有效拼团邀请 token
请求示例(业务参数;认证按上方说明补充)
POST /user/api/order/trade
item_id=1&num=1&pay_id=1&card_id=0
返回字段
data.tradeNo:生成的订单号;amount:订单应付金额
secret:即时交付内容;url:支付跳转地址(余额单通常为空)
stock:下单后的库存;leave_message:已支付订单的商家留言
group_buy_team_id / group_buy_free_open / group_buy_share_url:拼团信息
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "tradeNo": "123261103120000456",
        "amount": "3.00",
        "url": "",
        "secret": ""
    }
}
订单支付状态(可能补单) POST /user/api/order/state
分组:前台商品与查单 认证:无需登录;需有效订单号
请求编码:application/x-www-form-urlencoded 操作:查询网关,可能补单发货

对于支持的易支付渠道,未支付订单会触发网关查单并可能完成本地补单、发货和结算。因此不提供在线测试;避免频繁轮询。

参数类型必填说明示例值
tradeNostring是18 位订单号123261103120000456
请求示例(业务参数;认证按上方说明补充)
POST /user/api/order/state
tradeNo=123261103120000456
返回字段
data.id / trade_no / amount / status:本地订单状态
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "id": 1,
        "trade_no": "123261103120000456",
        "amount": 3,
        "status": 1
    }
}
按订单号或联系方式查单 POST /user/api/index/query
分组:前台商品与查单 认证:无需登录;有频率限制
请求编码:application/x-www-form-urlencoded 操作:查询

含订单及联系方式信息,不提供文档在线测试。

参数类型必填说明示例值
keywordsstring是18 位订单号或下单联系方式123261103120000456
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
请求示例(业务参数;认证按上方说明补充)
POST /user/api/index/query
keywords=123261103120000456&page=1&limit=10
返回字段
data.list[]:订单记录;data.total:总数
未支付或设置查单密码时不会直接返回 secret
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
读取交付内容 POST /user/api/index/secret
分组:前台商品与查单 认证:需有效订单号;设置密码时需匹配
请求编码:application/x-www-form-urlencoded 操作:查询

必须已支付;预订待补货状态会返回错误。请勿将查单密码放进 URL。

参数类型必填说明示例值
tradeNostring是18 位订单号123261103120000456
passwordstring否订单设置的查单密码
请求示例(业务参数;认证按上方说明补充)
POST /user/api/index/secret
tradeNo=123261103120000456
返回字段
data.secret:交付内容;widget:控件数据或 null;leave_message:商家留言
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "secret": "示例交付内容",
        "widget": null,
        "leave_message": ""
    }
}
公开首页通知 GET /user/api/publicMessage/popup
分组:前台商品与查单 认证:无需登录
请求编码:application/x-www-form-urlencoded 操作:查询

通知展示仍受站点配置影响。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
GET /user/api/publicMessage/popup
返回字段
data:当前可展示的公开首页通知
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
站点信息 GET /user/api/site/info
分组:前台商品与查单 认证:无需登录
请求编码:application/x-www-form-urlencoded 操作:查询

返回配置字段。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
GET /user/api/site/info
返回字段
data.shop_name / title / description / keywords:站点信息
user_theme / registered_state / notice:主题、注册状态、公告
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "shop_name": "示例商城",
        "title": "示例标题"
    }
}
我的购买记录 POST /user/api/purchaseRecord/data
分组:会员账户与订单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

不能通过传 owner 或 user_id 查询其他会员订单。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
equal-trade_nostring否精确订单号
equal-statusinteger否订单状态
请求示例(业务参数;认证按上方说明补充)
POST /user/api/purchaseRecord/data
page=1&limit=10
返回字段
data.list[]:当前会员自己的订单,含 commodity、pay 关联信息
data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
我的账单 POST /user/api/bill/data
分组:会员账户与订单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

硬币 balance 可能因退款追佣为负数;余额与硬币是独立账户。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
equal-currencyinteger否0=余额;1=硬币
equal-typeinteger否0=支出;1=收入
equal-source_typestring否例如 substation_commission、commission_refund
请求示例(业务参数;认证按上方说明补充)
POST /user/api/bill/data
page=1&limit=10
返回字段
data.list[]:amount、balance、type、currency、log、create_time
source_type / source_label / order_id:来源与关联订单
data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
我的操作日志 POST /user/api/operationLog/data
分组:会员账户与订单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

limit 最大 100。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
search-contentstring否操作内容关键词
equal-create_ipstring否精确 IP
betweenStart-create_timestring否起始时间 YYYY-MM-DD HH:mm:ss
betweenEnd-create_timestring否结束时间 YYYY-MM-DD HH:mm:ss
请求示例(业务参数;认证按上方说明补充)
POST /user/api/operationLog/data
page=1&limit=10
返回字段
data.list[]:当前会员操作记录;data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
我的预订 POST /user/api/reservation/data
分组:会员账户与订单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

仅当前会员;limit 最大 100。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
equal-trade_nostring否精确订单号
请求示例(业务参数;认证按上方说明补充)
POST /user/api/reservation/data
page=1&limit=10
返回字段
data.list[]:已支付且待补货的订单
delivered_num / pending_num / spec_label:已交付数量、待交付数量、规格
data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
取消预订 POST /user/api/reservation/cancel
分组:会员账户与订单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:取消预订、退款

仅允许取消本人仍可取消的待交付部分,资金按预订退款规则退回余额。

参数类型必填说明示例值
idinteger是预订订单数字 ID1
请求示例(业务参数;认证按上方说明补充)
POST /user/api/reservation/cancel
id=1
返回字段
msg:取消结果与退回余额金额
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
充值支付方式 GET /user/api/recharge/pay
分组:会员账户与订单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

仅返回当前设备可用且已开启充值的方式。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
GET /user/api/recharge/pay
返回字段
data[]:id、name、icon、handle
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
创建充值订单 POST /user/api/recharge/trade
分组:会员账户与订单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:创建充值订单

创建后需完成付款;到账由支付回调或查单补单决定。

参数类型必填说明示例值
pay_idinteger是充值支付方式 ID10
amountnumber是充值本金,受站点最低/最高金额限制10.00
请求示例(业务参数;认证按上方说明补充)
POST /user/api/recharge/trade
pay_id=10&amount=10.00
返回字段
data.url:支付地址;amount:应付金额;tradeNo:充值订单号
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "url": "https://payment.example/",
        "amount": "10.00",
        "tradeNo": "123261103120000456"
    }
}
会员图片上传 POST /user/api/upload/send?mime=image
分组:会员账户与订单 认证:登录 Cookie + X-CSRF-Token
请求编码:multipart/form-data 操作:上传图片并新增记录

必须 multipart/form-data;限制单边不超过 4096 像素且不超过 800 万像素。需服务器 GD 及可用 OSS 配置;不能用 URL 编码模拟文件。

参数类型必填说明示例值
filefile是JPG / PNG / GIF / WebP 图片,最大 5MB
请求示例(业务参数;认证按上方说明补充)
POST /user/api/upload/send?mime=image
返回字段
data.url / path:OSS 图片地址;append:附加信息数组
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "url": "https://images.example/avatar.png",
        "path": "https://images.example/avatar.png",
        "append": []
    }
}
已上传图片列表 POST /user/api/upload/get
分组:会员账户与订单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

仅查询当前会员。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
请求示例(业务参数;认证按上方说明补充)
POST /user/api/upload/get
page=1&limit=10
返回字段
data.list[]:当前会员上传记录及 thumb_url;data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
公开拼团规则 GET /user/api/groupBuy/rules
分组:拼团 认证:无需登录;登录后按当前会员身份返回
请求编码:application/x-www-form-urlencoded 操作:查询

规则与可售商品配置有关。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
GET /user/api/groupBuy/rules
返回字段
data[]:可参与的拼团规则
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
我的拼团 GET /user/api/groupBuy/mine
分组:拼团 认证:无需登录;登录后按当前会员身份返回
请求编码:application/x-www-form-urlencoded 操作:查询

未登录返回空数组;不会返回陌生人的团。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
GET /user/api/groupBuy/mine
返回字段
data[]:当前登录会员参与的团队
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
拼团列表(兼容入口) GET /user/api/groupBuy/hall
分组:拼团 认证:无需登录;登录后按当前会员身份返回
请求编码:application/x-www-form-urlencoded 操作:查询

未登录返回空数组;不会返回陌生人的团。

参数类型必填说明示例值
limitinteger否hall 支持 1–100;mine 不接收此参数10
请求示例(业务参数;认证按上方说明补充)
GET /user/api/groupBuy/hall
limit=10
返回字段
data[]:当前登录会员参与的团队
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
受邀拼团详情 GET /user/api/groupBuy/detail
分组:拼团 认证:团成员登录,或有效成员邀请参数
请求编码:application/x-www-form-urlencoded 操作:查询

非团成员必须携带有效邀请;不支持公开遍历团队。

参数类型必填说明示例值
tidinteger是团队 ID;兼容 team_id1
uidinteger否邀请人会员 ID
tokenstring否邀请校验 token
请求示例(业务参数;认证按上方说明补充)
GET /user/api/groupBuy/detail
tid=1
返回字段
data:团队详情;share_user_id / share_valid / login:邀请及登录信息
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
退出拼团 POST /user/api/groupBuy/leave
分组:拼团 认证:需要登录;建议携带 CSRF
请求编码:application/x-www-form-urlencoded 操作:退出或解散团队、退款

团长退出会解散整团,团员只退出自己;款项按规则退回账号余额。

参数类型必填说明示例值
team_idinteger是本人参加的未成团团队 ID1
请求示例(业务参数;认证按上方说明补充)
POST /user/api/groupBuy/leave
team_id=1
返回字段
msg:退出结果
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
最近通知 POST /user/api/message/recent
分组:会员通知 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

返回最近通知及相关摘要。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
POST /user/api/message/recent
返回字段
data:当前会员通知数据
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
待确认通知 POST /user/api/message/forced
分组:会员通知 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

返回当前需要确认阅读的通知。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
POST /user/api/message/forced
返回字段
data:当前会员通知数据
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
首页通知 POST /user/api/message/popup
分组:会员通知 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

按当前登录会员返回首页弹窗通知。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
POST /user/api/message/popup
返回字段
data:当前会员通知数据
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
通知列表 POST /user/api/message/data
分组:会员通知 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

展示范围由通知服务控制。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
请求示例(业务参数;认证按上方说明补充)
POST /user/api/message/data
page=1&limit=10
返回字段
data:当前会员可见的通知列表及分页数据
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
通知详情 POST /user/api/message/detail
分组:会员通知 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查看通知,可能更新已读

查看可能更新阅读状态。

参数类型必填说明示例值
idinteger是通知 ID1
请求示例(业务参数;认证按上方说明补充)
POST /user/api/message/detail
id=1
返回字段
data:通知详情
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
确认已读 POST /user/api/message/confirm
分组:会员通知 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:更新阅读状态

只允许确认当前会员可见通知。

参数类型必填说明示例值
idinteger是通知 ID1
请求示例(业务参数;认证按上方说明补充)
POST /user/api/message/confirm
id=1
返回字段
msg:已确认阅读;data:确认结果
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
工单列表 POST /user/api/ticket/data
分组:会员工单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

不接受用户 ID 来切换所有者。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
请求示例(业务参数;认证按上方说明补充)
POST /user/api/ticket/data
page=1&limit=10
返回字段
data.list[]:本人可见工单;data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
工单详情 POST /user/api/ticket/detail
分组:会员工单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查看工单,可能更新未读

仅本人可见工单;查看可能更新未读状态。

参数类型必填说明示例值
idinteger是工单 ID1
limitinteger否初始消息条数,默认 3030
请求示例(业务参数;认证按上方说明补充)
POST /user/api/ticket/detail
id=1&limit=30
返回字段
data.ticket:工单详情;messages:消息;has_more:是否还有历史消息
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "ticket": [],
        "messages": [],
        "has_more": false
    }
}
工单消息 POST /user/api/ticket/messages
分组:会员工单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

仅本人有权查看的工单。

参数类型必填说明示例值
idinteger是工单 ID1
after_idinteger否获取该消息 ID 之后的消息0
before_idinteger否获取该消息 ID 之前的历史消息0
limitinteger否默认 5050
请求示例(业务参数;认证按上方说明补充)
POST /user/api/ticket/messages
id=1&after_id=0&before_id=0&limit=50
返回字段
data:消息分页数据
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
工单未读数 POST /user/api/ticket/badge
分组:会员工单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:查询

无工单功能时返回 0。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
POST /user/api/ticket/badge
返回字段
data.count:当前会员工单未读消息总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "count": 0
    }
}
创建工单 POST /user/api/ticket/create
分组:会员工单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:创建工单

售后凭证、订单归属、标题及内容长度受服务端校验。十分钟最多创建五次。

参数类型必填说明示例值
typeinteger是0 售前;1 售后0
titlestring是工单标题商品咨询
contentstring是工单内容请问该商品如何使用?
priorityinteger否0 低、1 中、2 高;默认 11
commodity_idinteger否售前可关联商品 ID
order_idinteger否售后需关联本人订单 ID,或提供 order_trade_no
order_trade_nostring否售后订单号
proof_upload_idinteger否售后凭证上传记录 ID,是否必填取决于订单校验
请求示例(业务参数;认证按上方说明补充)
POST /user/api/ticket/create
type=0&title=%E5%95%86%E5%93%81%E5%92%A8%E8%AF%A2&content=%E8%AF%B7%E9%97%AE%E8%AF%A5%E5%95%86%E5%93%81%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%EF%BC%9F&priority=1
返回字段
data:新工单与首条消息等结果
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
回复工单 POST /user/api/ticket/reply
分组:会员工单 认证:登录 Cookie + X-CSRF-Token
请求编码:application/x-www-form-urlencoded 操作:新增回复

仅本人可回复的工单。

参数类型必填说明示例值
idinteger是工单 ID1
contentstring是回复内容补充说明
请求示例(业务参数;认证按上方说明补充)
POST /user/api/ticket/reply
id=1&content=%E8%A1%A5%E5%85%85%E8%AF%B4%E6%98%8E
返回字段
data:回复结果
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
上传工单凭证 POST /user/api/ticket/upload
分组:会员工单 认证:登录 Cookie + X-CSRF-Token
请求编码:multipart/form-data 操作:上传附件

使用 multipart/form-data;后续提交凭证需使用实际返回值。

参数类型必填说明示例值
filefile是工单图片附件
请求示例(业务参数;认证按上方说明补充)
POST /user/api/ticket/upload
返回字段
data:上传结果,包括服务端返回的凭证引用
成功响应示例(节选)
{
    "code": 200,
    "data": []
}
自营商品分类 POST /user/api/category/data
分组:分站与商家 认证:登录 Cookie + X-CSRF-Token;对应商户或分站权限
请求编码:application/x-www-form-urlencoded 操作:查询

仅本人管理的分类。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
请求示例(业务参数;认证按上方说明补充)
POST /user/api/category/data
page=1&limit=10
返回字段
data.list[]:分类记录及 share_url;data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
自营商品管理 POST /user/api/commodity/data
分组:分站与商家 认证:登录 Cookie + X-CSRF-Token;对应商户或分站权限
请求编码:application/x-www-form-urlencoded 操作:查询

商户权限以账号等级为准;不是前台公开商品列表。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
请求示例(业务参数;认证按上方说明补充)
POST /user/api/commodity/data
page=1&limit=10
返回字段
data.list[]:本人商品及统计;data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
自营商品销售订单 POST /user/api/commodityOrder/data
分组:分站与商家 认证:登录 Cookie + X-CSRF-Token;对应商户或分站权限
请求编码:application/x-www-form-urlencoded 操作:查询

与购买记录、分站销售订单分开。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
请求示例(业务参数;认证按上方说明补充)
POST /user/api/commodityOrder/data
page=1&limit=10
返回字段
data.list[]:当前会员作为商品卖家的订单;data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
分站销售订单 POST /user/api/substationOrder/data
分组:分站与商家 认证:登录 Cookie + X-CSRF-Token;对应商户或分站权限
请求编码:application/x-www-form-urlencoded 操作:查询

按 substation_user_id 确定归属,不返回卡密、联系方式和订单密码。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
请求示例(业务参数;认证按上方说明补充)
POST /user/api/substationOrder/data
page=1&limit=10
返回字段
data.list[]:本站及权限范围内下级分站订单;data.total:总数
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
分站会员列表 POST /user/api/businessMemberLevel/members
分组:分站与商家 认证:登录 Cookie + X-CSRF-Token;对应商户或分站权限
请求编码:application/x-www-form-urlencoded 操作:查询

需要已开通分站;keyword 为完整会员账号精确匹配,仅限本站有联系记录的会员,limit 最大 50。

参数类型必填说明示例值
pageinteger否页码,从 1 开始1
limitinteger否每页数量,建议 10;上限以接口说明为准10
keywordstring否完整会员账号,精确匹配
请求示例(业务参数;认证按上方说明补充)
POST /user/api/businessMemberLevel/members
page=1&limit=10
返回字段
data:本站会员分页数据
成功响应示例(节选)
{
    "code": 200,
    "data": {
        "list": [],
        "total": 0
    }
}
分站会员等级 POST /user/api/businessMemberLevel/data
分组:分站与商家 认证:登录 Cookie + X-CSRF-Token;分站权限
请求编码:application/x-www-form-urlencoded 操作:查询

只读等级配置,不调整会员等级。

业务参数:无。签名接口仍须携带 app_id 与 sign。

请求示例(业务参数;认证按上方说明补充)
POST /user/api/businessMemberLevel/data
返回字段
data:本站等级设置和配置信息
成功响应示例(节选)
{
    "code": 200,
    "data": []
}