LiaDesarrolladores

Guías

Paga a los jugadores en $LIA desde el fondo de recompensas de tu aplicación, desde tu servidor. Una bonificación diaria como ejemplo, seguro de reintentar y dentro de tus límites.

Tu app necesita un fondo de recompensas, financiado por el equipo Lia (ver Bolsas de recompensas. Las recompensas solo provienen siempre de tu servidor, con tu clave.

#Un bono diario

Cada jugador puede reclamar 2 LIA una vez al día, después de completar un nivel.

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

En la página:

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

#Elección de claves

La clave es lo que hace que un premio sea seguro. La misma clave nunca paga dos veces, así que haz que nombre la razón del premio, no la solicitud:

RecompensaClave
Un bono diariodaily:2026-11-01:p_3f9c…
Un lugar en un torneotournament-44:place-1:p_3f9c…
Una misión completadaquest-7:p_3f9c…
Un video vistoad:ad_8e1c…

Un reintentó con la misma clave después de un tiempo de espera responde { "status": "duplicate" } y paga nada más, por lo que reintentar siempre es seguro. Nunca reintentar con una nueva clave.

#Mantenga un ojo en el grupo

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

Cuando el grupo puede'cubrir una recompensa, POST /rewards respuestas 409 pool_empty. Dile a los jugadores amablemente y pide al equipo Lia que lo aumente. Cuando un jugador ha tenido tu aplicación'el límite diario, responde 429 daily_limit (el límite es por jugador por UTC día, establecido por el equipo).

#En prueba

Con tu clave de prueba, las recompensas son ficticias: se registran, con su webhook, pero no hay movimientos de $LIA, y el grupo y el límite diario no'usado. Prueba tus claves y tu manejo de errores allí primero.

#Haz justicia con las recompensas

  • Decide en el servidor. Lo que alguien ganó debe provenir de lo que vio su servidor (un juego terminado, un video verificado), no de lo que dice la página.
  • Cuida tus propios límites también, por jugador y por día, así que un jugador puede'agotar el pozo.
  • Explica por qué. El reason se muestra en el reproductor's actividad bajo tu aplicación'tu nombre.

Traducido automáticamente. El inglés es la fuente de verdad. Leer en inglés

Escribe para buscar en cada página, método y punto final.