LiaDéveloppeurs

Guides

Payer les joueurs en $LIA à partir de votre pool de récompenses, depuis votre serveur. Un bonus quotidien comme exemple, sûr à réessayer et dans vos limites.

Votre application a besoin d'un pool de récompenses, financé par l'équipe Lia (voir Pools de récompenses). Les récompenses proviennent toujours de votre serveur, avec votre clé.

#Une prime quotidienne

Chaque joueur peut réclamer 2 LIA une fois par jour, après avoir terminé un niveau.

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;
  }
});

Dans la page :

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

#Choix des clés

La clé est ce qui rend une récompense sûre. La même clé ne paie jamais deux fois, donc la faites nommer la raison de la récompense, pas la demande :

RécompenseClé
Une prime quotidiennedaily:2026-11-01:p_3f9c…
Une place de tournoitournament-44:place-1:p_3f9c…
Une quête terminéequest-7:p_3f9c…
Une vidéo regardéead:ad_8e1c…

Un nouveau essai avec la même clé après un délai de timeout répond { "status": "duplicate" } et ne paie rien de plus, donc réessayer est toujours sûr. Ne réessayez jamais avec une nouvelle clé.

#Surveillez le pool

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

Quand le pool peut'ne pas couvrir une récompense, POST /rewards réponses 409 pool_empty. Dites aux joueurs poliment et demandez à l'équipe Lia de la recharger. Lorsqu'un joueur a eu votre application'la limite quotidienne, il répond 429 daily_limit (la limite est par joueur par UTC jour, fixée par l'équipe).

#En test

Avec votre clé de test, les récompenses sont fictives : enregistrées, avec leur webhook, mais aucun $LIA ne se déplace, et le pool et la limite quotidienne ne sont pas'utilisé. Essayez d'abord vos clés et votre gestion des erreurs là-bas.

#Faites en sorte que les récompenses soient justes

  • Décidez sur le serveur. Ce que quelqu'un a gagné doit provenir de ce que votre serveur a vu (une partie terminée, une vidéo vérifiée), et non de ce que la page dit.
  • Faites attention à vos limites aussi, par joueur et par jour, donc un joueur peut'ne pas vider le réservoir.
  • Expliquez pourquoi. Le reason s'affiche dans le lecteur'activité sous votre application'le nom.

Traduit automatiquement. L'anglais est la source de vérité. Lire en anglais

Tapez pour rechercher sur toutes les pages, méthodes et points de terminaison.