---
title: "TurboLink Web 积分扣减/兑换回调"
method: POST
path: "/turbolink/webDeductBonus"
tags: ["Web TurboLink"]
---

# TurboLink Web 积分扣减/兑换回调

`POST /turbolink/webDeductBonus`

TurboLink 活动内积分扣减或兑换时回调本接口。无需登录、无需 FlexTV 接口签名。鉴权方式：Authorization 为 Token 或 Bearer + 签名，签名算法 md5(OPEN_SECRET + ' ' + md5(原始请求体))，OPEN_SECRET 来自环境变量 TURBOLINK.OPEN_SECRET。state=deduct 时扣减 Bonus；state=gain 时发放 Bonus。user_id 必须传 public_uid。

响应契约：TurbolinkWebDeductBonus。

鉴权失败返回 code=401；业务失败（余额不足、用户不存在等）返回 code=200 且 state=lack。幂等重复请求返回 state=success。

路由声明：服务端允许任意 HTTP 方法访问，文档以 POST 形式展示。

认证要求：无需登录。

签名要求：无需请求签名。

响应处理：返回明文响应。

## Headers

- `Authorization` string, required — 鉴权头，格式：Bearer {sign} 或 Token {sign}，sign=md5(OPEN_SECRET + ' ' + md5(body))。
- `Content-Type` string, required — 固定为 application/json。
- `lang` string — 语言代码，例如 en、zh、es。
- `device_number` string — 设备唯一标识。
- `app_version` string — 客户端版本号。

## Request body

- object
  - `user_id` string, required — 用户 public_uid。
  - `state` string, required — 操作类型：deduct=扣减积分，gain=发放积分。
  - `num` integer, required — 积分数量，必须大于 0。
  - `deduct_id` string — 扣减幂等 ID，state=deduct 时建议传入。
  - `gain_id` string — 发放幂等 ID，state=gain 时建议传入。
  - `user_platform` string — 用户平台，如 web、web-pc。

## Response `200`

请求成功

- object
  - `code` integer, required
  - `msg` string, required
  - `data` TurbolinkWebDeductBonus, required — TurboLink 积分扣减/兑换结果。
    - `state` 'success' | 'lack' — 处理结果：success=成功，lack=失败（如余额不足）。
    - `relate_id` string — 幂等关联 ID，对应请求中的 deduct_id 或 gain_id。
  - `info` object, required
  - `is_encrypt` 0 | 1, required
  - `request_id` string, required
  - `response_time` integer, required
  - `original_data` object

## Other responses

- `400` — 请求失败

---

[API](https://skmtc.dev/flextv/apis/flextv-api.md) · [All operations](https://skmtc.dev/flextv/apis/flextv-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/flextv/flextv-api/revisions/84f55eb57fd0/schema)
