ACGV3 Shared API

本站商品目录、库存、询价、预选卡与余额订单标准对接协议。

POSTapp_id + signx-www-form-urlencoded成功 code = 200

基础说明

请求方式POST
请求格式推荐 application/x-www-form-urlencoded
鉴权方式公共参数 app_id + sign
响应状态成功 code = 200,失败通常 code = 0

签名算法

PHPgenerateSignature
/** 获取数据签名 */
public static function generateSignature(array $data, $appKey): string
{
    unset($data['sign']);
    ksort($data);
    foreach ($data as $key => $val) {
        if ($val === '') {
            unset($data[$key]);
        }
    }
    return md5(urldecode(http_build_query($data) . "&key=" . (string)$appKey));
}

公共请求与响应

请求参数

参数必选类型说明
app_id是string/int商户 ID,可在用户中心商户资料中获取
sign是string本次请求全部 POST 参数的签名
app_key 仅用于本地签名,不建议上传到对方服务器。数组参数(如 sku)也必须参与签名,且须与实际提交内容一致。

响应字段

字段类型说明
codeint成功时为 200
msgstring可选提示信息
datamixed业务数据
JSON成功 / 失败
{ "code": 200, "data": {} }

{ "code": 0, "msg": "密钥错误" }

业务字段说明

字段说明
race商品种类,对应 [category] 节点键名
skuSKU 数组,如 sku[机身颜色]=黑色&sku[存储容量]=256GB
card_id预选卡 ID,仅 draft_status=1 时有效
widget自定义控件;下单时提交每个控件 name 对应的值
request_no幂等号,强烈建议每笔订单使用唯一值

POST/shared/commodity/items

无额外业务参数,只需 app_id、sign。data 为分类数组,children 为商品列表。

字段类型说明
id / nameint / string分类或商品 ID / 名称
childrenarray可对接商品列表
codestring商品编码
price / user_pricestring/float游客价 / 会员或代理价
stockint自动发货库存
delivery_way / draft_statusint发货方式 / 是否支持预选

POST/shared/commodity/item

Body 参数

参数必选类型说明
code是string商品编码

返回核心字段

字段类型说明
id / name / description / codemixed商品基础资料
price / user_pricestring/float游客价 / 会员或代理价
stockint/string当前库存
delivery_wayint发货方式
contact_typeint0不限、1手机、2邮箱、3QQ
password_statusint是否启用查单密码
draft_status / draft_premiummixed预选状态 / 附加价格
minimum / maximumint购买数量限制,0 表示不限
configobject解析后的 category、sku、wholesale 等配置
widgetarray/null自定义控件
seckill_status / 时间mixed秒杀状态与时间
owner / service / sharemixed供货商、客服及分享信息

POST/shared/commodity/inventoryState

参数必选类型说明
shared_code是string商品编码
num是int购买数量
card_id否int预选卡 ID
race否string商品种类
JSONResponse
{ "code": 200, "msg": "success", "data": [] }
库存不足、商品不存在、停售或预选卡被占用时直接返回失败。

POST/shared/commodity/inventory

参数必选类型说明
sharedCode是string商品编码
race否string商品种类

返回 count、delivery_way、draft_status、price、user_price、factory_price、is_category,以及 INI 文本格式的 config。

inventory 的 config 是 INI 文本;item 的 config 是已解析对象。

POST/shared/commodity/stock

参数必选类型说明
code是string商品编码
race否string商品种类
sku否arraySKU 组合
JSONResponse
{ "code": 200, "data": { "stock": "15" } }

POST/shared/commodity/valuation

参数必选类型说明
code是string商品编码
num是int购买数量
race / sku / card_id否mixed种类、SKU、预选卡 ID
JSONResponse
{ "code": 200, "data": { "price": "99.00" } }

POST/shared/commodity/draftCard

参数必选类型说明
code是string商品编码
page建议int从 1 开始
limit / race / sku否mixed分页、种类、SKU

返回 list、total,以及 list[].id、list[].draft、list[].draft_premium。仅 draft_status=1 时可用。

POST/shared/commodity/draft

参数必选类型说明
code是string商品编码
card_id是int预选卡 ID

核心返回字段 draft_premium 为预选卡附加价格。

POST/shared/commodity/trade

该接口强制使用余额支付。
参数必选类型说明
shared_code是string商品编码
num是int购买数量
request_no否string唯一幂等号,强烈建议提交
contact否string联系方式
race / sku / card_id否mixed种类、SKU、预选卡
password / coupon / device否mixed查单密码、优惠券、设备类型

存在 widget 时,还需提交各控件 name 对应的值。返回 tradeNo、amount、secret、stock。

JSONResponse
{
  "code": 200,
  "msg": "success",
  "data": {
    "url": null,
    "amount": "10.00",
    "tradeNo": "123260422101010888",
    "secret": "卡密内容",
    "stock": "14"
  }
}

POST/shared/commodity/query

参数必选类型说明
tradeNo是string系统订单号,字段名不是 trade_no

返回 secret、widget、status;status 0=未支付,1=已支付。

对接建议流程

  1. 调用 items 或 item 拉取商品。
  2. 确定 category/race 和 sku。
  3. 支持预选时调用 draftCard,需要时调用 draft。
  4. 调用 stock、valuation 或 inventoryState 确认库存与价格。
  5. 调用 trade 下单。
  6. 调用 query 轮询订单状态和发货内容。
测试鉴权可请求 /shared/authentication/connect。请严格使用文档字段名,不要将 tradeNo 改成 trade_no。