活动网页 SDK
在 会员与营销 → 会员营销中心 → 互动活动 创建活动、绑定托管站点并配置接口的 key。通过活动的 /event/{code} 链接打开已发布的页面;仅访问一般托管站点的预览地址时,SDK 无法识别活动码。
先读活动信息
链接到「先读活动信息」将下面的代码放进活动页。它只读取信息,不领取奖励。在普通浏览器中也能看到活动状态;从小程序活动入口进入、获得本活动票据后,才可读取本人信息并参与。
<p id="status" role="status">正在读取活动…</p>
<script src="/sdk/foodiy-event-v1.js"></script>
<script>
const statusLine = document.querySelector('#status');
const ev = window.FoodiyEvent;
ev.info().then(({ event }) => {
statusLine.textContent = ev.signedIn
? event.name + ':' + event.status
: event.name + ' · 请从小程序进入后参与';
}).catch(error => { statusLine.textContent = error.message; });
</script>
页面资源使用相对路径;这里的 /sdk/foodiy-event-v1.js 是平台在活动域名根路径提供的 SDK。票据由小程序通过 URL 片段传入,SDK 用 Bearer 头向本活动接口提交,不需要自行实现商家登录。
从用户点击到奖励结果
链接到「从用户点击到奖励结果」- 读取
info()中的actions、参与条件及剩余次数。按钮使用后台配置的 key,例如claim;不是每个活动都存在名为claim的接口。 - 仅在顾客确定参与时调用
ev.act(key, { key: operationKey })。每次新的参与意图生成新键(8–128 位字母、数字、下划线或横线);同一次点击超时后复用同一键。SDK 在单次调用内也会用同一键重试。 - 根据返回的
record.outcome展示结果。抽奖动画随服务端确定的奖项播放;需要核对已经发生的参与时调用records(),不要为了查结果再发起一次抽奖。
存档和常见错误
链接到「存档和常见错误」| 需要 | 做法 |
|---|---|
| 恢复游戏进度 | const saved = await ev.load('progress');保存时用 ev.save('progress', data, saved.revision)。 |
遇到 SAVE_CONFLICT |
先比较服务端的当前版本与本地修改,再决定是否合并。存档由页面写入,不能作为发奖依据。 |
遇到 TICKET_EXPIRED 或 MEMBERSHIP_REQUIRED |
提示从小程序重新进入,或先在小程序完成入会。 |
遇到 ACTION_DAILY_LIMIT 或 COUNTER_INSUFFICIENT |
向顾客解释当天次数已用完或计数器余额不足,不重复提交。 |
原始 HTTP 入口为 /api/event/{code}。活动信息为 GET;参与为 POST /actions/{key},需票据和 Idempotency-Key。普通活动网页优先使用 SDK,让它处理票据和响应信封。