Lia开发者

指南

从您的应用的奖励池中向玩家支付$LIA,从您的服务器支付。例如每日奖金,可以重试且在您的限制内。

您的应用程序需要一个奖励池,由 Lia 团队资助(参见 奖励池。奖励只来自你的服务器,使用你的密钥。

#每日奖励

每位玩家每天完成一个关卡后可以领取 2 LIA 一次。

server.js
import { lia } from "./lia.js";

app.post("/api/daily-bonus", async (req, res) => {
  const playerId = await playerFrom(req.body.session); // see Verify on your server
  if (!playerId) return res.status(401).end();
  if (!(await db.finishedALevelToday(playerId))) return res.status(403).json({ error: "play_first" });

  const day = new Date().toISOString().slice(0, 10); // 2026-11-01
  try {
    const result = await lia("POST", "/rewards", {
      playerId,
      amount: 2,
      key: `daily:${day}:${playerId}`, // one a day per player, however often this runs
      reason: "Daily bonus",
    });
    res.json({ paid: result.status === "paid", amount: result.amount });
  } catch (error) {
    if (error.data?.error === "pool_empty") return res.status(503).json({ error: "bonus_paused" });
    if (error.data?.error === "daily_limit") return res.status(429).json({ error: "come_back_tomorrow" });
    throw error;
  }
});

在页面中:

const { paid, amount } = await api("/api/daily-bonus", {});
if (paid) {
  Lia.haptic("success");
  Lia.toast("+" + amount + " LIA");
}

#选择密钥

关键在于让奖励安全。同一个关键不能支付两次,所以让它命名奖励的原因,而不是请求:

奖励密钥
每日奖励daily:2026-11-01:p_3f9c…
一个比赛位置tournament-44:place-1:p_3f9c…
一个完成的任务quest-7:p_3f9c…
一个观看过的视频ad:ad_8e1c…

在超时后使用相同密钥重试会回答 { "status": "duplicate" } 并且不再支付任何其他费用,因此重试总是安全的。永远不要使用新密钥进行重试。

#留意这个池子

const { balance, dailyCapPerPlayer } = await lia("GET", "/pool");
if (balance < 100) alertTheTeam(`Reward pool is down to ${balance} LIA`);

当池子可以't 覆盖奖励, POST /rewards 答案 409 pool_empty。请礼貌地告诉玩家,并请求Lia团队增加它的额度。当玩家已经使用过你的应用'的每日限额,它会回答 429 daily_limit (限制是每个玩家每天 UTC 的次数,由团队设定)。

#在测试中

使用您的测试密钥,奖励是假的:它们被记录下来,带有其网络钩子,但没有 $LIA 移动,池和每日限制不会'已使用。请首先尝试您的密钥和错误处理。

#让奖励公平

  • 由服务器决定。 某人获得的应来自你的服务器看到的内容(一局完成的游戏,一个验证过的视频),而不是来自页面上的说明。
  • 注意你自己的限制 每天每个玩家,所以一个玩家可以'不要排空水池。
  • 说明原因。 的 reason 在播放器中显示's 活动在你的应用下'的名字。

自动翻译。英语是真实来源。 阅读英文

输入以搜索每一页、方法和端点。