18ab7eab92
按 docs/api 一接口一文件约定新增:
- 钱包(11): account / coin-transactions / cash-transactions / exchange-info / exchange / bind-wechat / unbind-wechat / withdraw-info / withdraw / withdraw/status / withdraw-orders
- 签到(2): status / 执行签到
- 任务(2): list / {task_key}/claim
- 省钱(3): summary / battle / records
- 看广告发奖(3): pangle-callback(S2S验签) / reward-status / test-grant(仅联调)
- README 索引补 12–32 行 + 新增「游标分页约定」+ 修正鉴权说明 + 注明金额以分为单位
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
29 lines
1.4 KiB
Markdown
29 lines
1.4 KiB
Markdown
# 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` 仍据情况返回,避免无意义重试)。
|