3.5 KiB
3.5 KiB
小程序福利接口与状态
更新日期:2026-09-18。以当前客户端实现为准。返回活动总览
状态来源
| 数据 | 来源与保存位置 | 说明 |
|---|---|---|
| miniProgramWelfare.favorite / desktop | 登录接口返回,保存在运行时 GM_INFO | boolean;true 为已领取,领取确认成功后本会话也更新 |
| 入口资格 | 本机 mini_program_benefits_eligibility_v1: | favorite_entry、desktop_entry 对应正数时间戳;按账号隔离 |
| 当前领取状态 | Bridge 的内存 state | 登录时重建;包含资格、领取、展示确认及待同步状态 |
| prop.welfareCredits | 本地道具缓存 | 按福利回执记录已加奖,避免重试再次增加道具 |
| mini_program_benefits_rewards_v1: | 请求串行队列标识 | 当前代码不把完整领取状态写入这个同名存储键 |
旧 Mock 数据不读取,也不迁移。清本地入口资格不改变服务器领取状态、道具数量或回执。完整运行时回执不跨登录/重启恢复。
接口流程
- 登录提供 miniProgramWelfare: { favorite: boolean, desktop: boolean }。字段缺失或类型错误时,实际领取被拒绝并提示重新登录。
- 客户端检查已过首关、已获得对应入口资格及道具基数有效。
- Utils.POST("miniProgramWelfare", { uid, type }),type 为 favorite 或 desktop;Utils 自动附加 token,并按现有环境规则选址。
- code === 1 后更新已领取标记,生成 welfare:: 回执,设置 acknowledged=false、deliveryPending=true。
- 本地 prop.welfareCredits 无此回执时,冻结、锤子、魔法棒各加 1(道具 ID 2001、2002、2003),写入道具缓存并校验回执已保存。
- Utils.POST("userProp", { uid, action: "save", propType: 0, propData })。propData 为 JSON 字符串,包含 freeze、hammer、magic_wand 的当前总量,不是本次增加量。成功后 deliveryPending=false。
- 播放活动奖励展示,玩家关闭展示后 acknowledged=true。两项已领取且无未确认回执时隐藏首页入口。
领取确认不直接视为服务端已经加道具。当前客户端固定发放数量,不解析福利接口返回的奖励清单。完整成功/重复领取响应样本未随当前项目文档保存,客户端只使用 code === 1 和失败时的 msg;服务端必须保证已消费的领取不能再次返回可重复发奖的成功确认。
查询与重试边界
- 没有单独的福利状态查询接口接入。白字面板恢复启用后显示本次登录及领奖后的内存快照,当前入口已暂停。
- 正常福利面板的 read 操作读取内存,并会重试尚未完成的道具上传;不是向服务器查询福利资格。
- 同账号请求串行。账号切换后拒绝旧请求结果;miniProgramWelfare 和 userProp 每个请求等待上限均为 5500 ms,迟到或重复回调不重复处理。
- 当前会话上传失败后重新打开福利可重试上传当前道具总量,已记录回执的奖励不重复增加。
- 福利确认与道具保存是两个独立请求。确认成功响应丢失、确认后退出、重新登录或缓存丢失,可能造成“已领取但漏发/未同步”;现有客户端不能保证跨重启补偿。
- userProp 是总量写入,不能保证多设备并发修改的原子性。可靠补发及跨设备一致性需要后端回执或原子发奖机制支持。
测试记录与发布状态统一见 测试文档,不在此重复维护测试数量。