抖音来客 · 纯协议 API 文档

登录 / 验券 / 核销 / 撤销 — 全程纯 HTTP 协议,无浏览器依赖
BASE: https://hx.gxv.red

⭐ 多商户快速上手

每个商户对应一个手机号账号 + 一个商户名。流程:

  1. 注册账号POST /api/account/register,传商户名(groupid/poi_id 留空)
  2. 登录POST /api/protocol/login,传手机号 + 验证码 + account=商户名
    会话自动写入 sessions/商户名.json,登录成功自动抓取 groupid/poi_id 回写配置
  3. 验券/核销account 传商户名,自动用该商户的会话 + 门店

每个商户独立会话、独立门店上下文,互不影响。多商户并发无冲突。

一、登录

POST/api/protocol/login 发送验证码 / 登录

字段类型必填说明
phonestring手机号
codestring4 位验证码;不传=只发验证码
accountstring商户名(多商户必传):独立会话 + 自动匹配 groupid/poi_id
resendbool强制重发验证码(覆盖旧码)

① 发送验证码

curl -X POST https://hx.gxv.red/api/protocol/login \
  -H "Content-Type: application/json" \
  -d '{"phone":"17696265267"}'

响应:{"ok":false,"need_code":true,"message":"验证码已发送"}

② 登录(成功后自动抓 groupid/poi_id)

curl -X POST https://hx.gxv.red/api/protocol/login \
  -H "Content-Type: application/json" \
  -d '{"phone":"17696265267","code":"1234","account":"像素创意手作DIY"}'

响应:{"ok":true,"context":{"groupid":"...","poi_id":"...","ok":true,"match_warning":"",...},...}

⚠ 若 match_warning 非空(如"未找到商户 [xx], 可选商户: A/B/C"或"当前登录账号未绑定任何商户"),说明登录手机号下没有该商户,需用绑定该商户的手机号登录。

POST/api/protocol/refresh-context 复用会话刷新上下文

请求:{"account":"像素创意手作DIY"}(account 可空)

响应:{"ok":true,"context":{"groupid":"...","poi_id":"...","poi_name":"..."}}

二、验券 / 核销(纯协议)

前提:已登录且有已认领门店(poi_id)。secsdk CSRF token 缓存 23h,单请求毫秒级。

POST/api/protocol/voucher/check 验券(只读,不销券)

请求参数:

字段类型必填说明
accountstring商户名(必须是已登录且有门店的商户)
codestring券码(纯数字,自动去空格)
verify_typeint1=券码(默认);0=扫码(scan_context)

请求示例:

curl -X POST https://hx.gxv.red/api/protocol/voucher/check \
  -H "Content-Type: application/json" \
  -d '{"account":"像素创意手作DIY","code":"123206286558914"}'

成功响应:

{
  "ok": true, "code": "123206286558914", "message": "验券成功",
  "product": "DIY拼豆 手工钥匙扣制作 钥匙链拼豆团购",
  "price": "9.0", "discount": "4.5折后价",
  "expire_time": 1817135999, "poi_name": "像素创意手作DIY",
  "verify_token": "63c8d445-...", "verify_scene_type": 8,
  "encrypted_codes": ["CgYIASAHKAESLgos..."],
  "raw": { ...完整响应... }
}

verify_token + encrypted_codes 可缓存,供核销接口直用(避免二次验券)。

POST/api/protocol/voucher/confirm 核销(真实销券,不可逆)

请求参数:

字段类型必填说明
accountstring商户名
codestring券码
verify_tokenstring验券返回的 token(传了则直销,不传自动先验后销)
encrypted_codesarray验券返回的加密券码列表
verify_scene_typeint验券返回的场景类型(默认 8)

方式 1:只传券码(自动先验后销)

curl -X POST https://hx.gxv.red/api/protocol/voucher/confirm \
  -H "Content-Type: application/json" \
  -d '{"account":"像素创意手作DIY","code":"123206286558914"}'

方式 2:传验券缓存的 token(直销,最快)

curl -X POST https://hx.gxv.red/api/protocol/voucher/confirm \
  -H "Content-Type: application/json" \
  -d '{"account":"像素创意手作DIY","code":"...",
       "verify_token":"63c8d445-...",
       "encrypted_codes":["CgYIASAHKAESLgos..."],
       "verify_scene_type":8}'

成功响应:

{
  "ok": true, "code": "123206286558914", "message": "核销成功",
  "certificate_id": "7670698934625452073",
  "order_id": "1110623717282294871",
  "item_order_id": "800000253488677610113364871",
  "product": "DIY拼豆 手工钥匙扣制作 钥匙链拼豆团购",
  "poi_name": "像素创意手作DIY", "can_cancel": true,
  "raw": {...}
}

POST/api/protocol/voucher/cancel 撤销核销(核销后 1 小时内可撤)

请求:{"account":"像素创意手作DIY","verify_id":"7670698934625452073","certificate_id":"..."}

响应:{"ok":true,"message":"","status_code":0,"raw":{...}}

三、账号管理(多店铺)

接口方法说明
/api/account/listGET账号列表 + groupid/poi_id + 会话状态
/api/account/registerPOST注册账号,groupid/poi_id 可留空(登录后自动抓)
{"name":"店铺B","groupid":"","poi_id":""}
/api/account/loginPOST验证码登录(独立会话文件)
{"name":"店铺B","phone":"...","code":"1234"}
/api/account/refresh-contextPOST刷新某账号 groupid/poi_id
{"name":"店铺B"}

三·五、常见错误码 / 处理

错误含义处理
4000200 账户鉴权失败商家上下文缺失/会话失效重新登录该商户(account 传商户名)
"未找到商户 [xx], 可选商户: ..."account 名与登录账号下商户不匹配用候选列表里的名字,或用绑定该商户的手机号登录
"当前登录账号未绑定任何商户"登录手机号名下 groupAccountList 为空该手机号没有绑定商户,换账号
"未找到已认领门店"商户未认领 poi先在抖音来客后台认领门店
1208 券码已核销该券已被核销换券;或 1 小时内可撤销恢复
1202 验证码错误 / 1203 过期验证码错/超时重新发送验证码
1206 发送太频繁短信限流等 1-5 分钟
1105 滑块验证触发风控纯协议下更换设备指纹(重新登录即可)

四、技术原理(对接要点)

要点说明
登录链路ttwid → send_activation_code → quick_login → SSO callback
403 解锁HEAD /life/gate/v1/user/detail + x-secsdk-csrf-request:1 → x-ware-csrf-token
商家上下文URL query: root_life_account_id + life_biz_view_id=22 + life_account_biz_ids
验券POST /life/fulfilment/v1/check_verify_permission_v2/
核销POST /life/fulfilment/v1/verify/
撤销POST /life/fulfilment/v1/cancel_verify/