# GET /api/v1/ad/pangle-callback — 穿山甲激励视频发奖回调(S2S) > 所属:Ad 组(前缀 `/api/v1/ad`) | 鉴权:**无 JWT,靠验签**(穿山甲服务器调用) | 限流:同 IP ≤300 次/分 | [← 返回 API 索引](./README.md) ## 入参(query,由穿山甲拼装) 穿山甲在激励视频播完后回调,带一组 query 参数,关键: | 字段 | 类型 | 说明 | |---|---|---| | `user_id` | string | 客户端起播时传入的用户标识(须为数字 = 本系统 user.id) | | `trans_id` | string | 穿山甲交易号(**幂等键**) | | `sign` | string | 穿山甲签名(用 `PANGLE_REWARD_SECRET` 验) | | `reward_name` | string | 奖励名(可选,入库备注) | | … | | 其余参与签名的参数 | ## 出参 响应 `200`:`PangleCallbackOut` | 字段 | 类型 | 说明 | |---|---|---| | `is_valid` | bool | `true`=已受理(发奖成功 或 当日达上限 或 user 非法,均不让穿山甲重试) | ## 错误码 - `403` 验签失败(`bad sign`,留给真请求重试) - `503` 回调未配置(`pangle_callback_configured=false`) ## 说明 **发奖唯一可信入口**:验签 → 取 `user_id`/`trans_id` → 幂等发金币(按 `trans_id` 去重 + 每日上限)。客户端不参与发奖,被破解也刷不到钱。验签过但参数缺/坏或 user 不存在 → 受理但不发(`is_valid` 仍据情况返回,避免无意义重试)。