Livrer une Mini App Telegram en 48 heures
Un parcours pratique de bout en bout — de BotFather au déploiement — pour livrer votre première Mini App Telegram avec authentification, paiements et un vrai plan de distribution.
Les Mini Apps sont ce qui ressemble le plus à un “moment App Store” pour le web mobile. Ce sont des apps HTML5 qui tournent dans Telegram avec un chrome natif, une authentification profonde de l’identité utilisateur et un rail de paiement qui se câble en minutes — pas en semaines.
Ce guide vous mène de zéro à une Mini App déployée, prête à encaisser, en deux jours.
Qu’est-ce qu’une Mini App Telegram ?
Une Mini App est une page web que Telegram embarque dans son propre chrome. Votre code reste du HTML/JS classique — React, Vue, vanilla, n’importe quel framework qui tourne dans un navigateur. Telegram injecte un pont JavaScript (window.Telegram.WebApp) qui vous donne :
- Identité : un payload signé (
initData) que vous vérifiez côté serveur. - Thème : les tokens du thème actuel de l’utilisateur, pour matcher light/dark.
- Primitives UI natives :
MainButton,BackButton, haptics, scanner, lien de partage. - Paiements : flux de facture qui débite en Stars (digital) ou en fiat (physique).
La surface officielle est l’API Bot, qui expose les Mini Apps via les boutons web_app. La spec complète vit sur core.telegram.org core.telegram.org/bots/webapps ↗ .
Prérequis
- Un compte Telegram (un vrai, pas un numéro virtuel).
- Un laptop avec Node 20+ (ou Bun 1.1+).
- Un domaine ou sous-domaine gratuit chez Cloudflare/Vercel/Fly. Les Mini Apps doivent être servies en HTTPS.
- 30 minutes d’installation, puis ~10 heures de code étalées sur 2 jours.
Créer le bot avec BotFather
Ouvrez Telegram, cherchez @BotFather, envoyez /newbot. Choisissez un nom et un username suffixé _bot. Sauvegardez le token API — vous en aurez besoin côté serveur.
Puis attachez une Mini App :
/newapp → choisir votre bot
Title: Telegram Bible Demo
Description: Construire sur Telegram, vite.
Photo: PNG 640×360
GIF: optionnel
Web App URL: https://votre-app.example.com
Short name: demoVotre Mini App est désormais accessible via t.me/your_bot/demo et via les boutons inline.
Bootstrap du frontend
Utilisez Vite + React (ou votre stack). Installez le SDK Telegram :
npm create vite@latest mini-app -- --template react-ts
cd mini-app
npm install @telegram-apps/sdk-reactDans main.tsx, initialisez le pont :
import { init, miniApp, viewport } from "@telegram-apps/sdk-react";
init();
miniApp.mount();
viewport.mount();
miniApp.ready();miniApp.ready() indique à Telegram que votre app a fini de charger — Telegram cache son loader et révèle votre UI.
Authentifier l'utilisateur, proprement
Telegram passe une chaîne initData signée. Ne lui faites jamais confiance côté client. Envoyez-la au backend et vérifiez le HMAC.
import crypto from "node:crypto";
export function verifyInitData(initData: string, botToken: string): boolean {
const params = new URLSearchParams(initData);
const hash = params.get("hash")!;
params.delete("hash");
const dataCheck = [...params.entries()]
.sort(([a], [b]) => a.localeCompare(b))
.map(([k, v]) => `${k}=${v}`)
.join("\n");
const secret = crypto
.createHmac("sha256", "WebAppData")
.update(botToken)
.digest();
return crypto
.createHmac("sha256", secret)
.update(dataCheck)
.digest("hex") === hash;
}Une fois vérifiée, parsez initData.user — c’est votre user de confiance. Émettez votre propre JWT de session à partir de là.
Encaisser en Stars en deux appels API
Les Stars sont la monnaie in-app de Telegram pour les biens digitaux. Parfait pour : déblocage premium, tips, templates payants, crédits IA.
Côté backend, créez un lien de facture via l’API Bot :
const res = await fetch(`https://api.telegram.org/bot${TOKEN}/createInvoiceLink`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
title: "Plan Pro",
description: "Accès illimité à la bibliothèque",
payload: `user_${userId}_pro_2026_04`,
currency: "XTR",
prices: [{ label: "Pro", amount: 250 }],
}),
});
const { result: invoiceUrl } = await res.json();Passez invoiceUrl au client et appelez openInvoice(invoiceUrl). Gérez ensuite pre_checkout_query et successful_payment côté serveur.
Déployer et distribuer
Cloudflare Pages ou Vercel — HTTPS gratuit dans les deux cas. Mettez à jour l’URL chez BotFather.
Pour la distribution :
- Lien direct :
t.me/your_bot/demo. - Paramètre de démarrage :
?startapp=ref_alex→ tracking referral viainitData.start_param. - Mode inline :
@your_botdans n’importe quel chat partage votre app. - Channels : message avec bouton Mini App.
- Stories : CTR étonnamment élevé.
Pièges courants
initDatavide dans les devtools — c’est attendu. Telegram l’injecte uniquement dans son client. Utilisez un tunnel.- Flicker de thème — lisez
themeParamsau mount, appliquez via variables CSS. - Saut de viewport iOS — appelez
viewport.expand()tôt. - Remboursements Stars — entièrement manuels. Prévoyez une commande
/refundadmin dès le J1.
Suite
- Ajoutez Cloud Storage pour la persistance multi-device sans DB.
- Construisez un leaderboard de parrainage avec badges payés en Stars.
- Soumettez au Telegram App Center une fois live.
C’est livré. Maintenant, croître.
Pour aller plus loin
Cette tutorial tierce de 2025 montre l’implémentation complète d’un Mini App avec paiement Stars en code:
À lire ensuite
Patterns de monétisation Mini App qui marchent (et 5 qui ratent)
Une taxonomie de chaque pattern de monétisation Mini App en production aujourd'hui, avec rates de conversion, ARPU attendu, et les patterns à éviter.
Retirer ses Stars sans perdre 30% en frais
Un guide pratique pour convertir des Telegram Stars en USD bancables avec une perte de spread minimum — chaque route, vrais frais, et les tactiques de timing qui composent sur une année.
Paiements bot, de bout en bout
Un guide sans raccourci pour accepter les paiements via un bot Telegram — Stars pour digital, fiat pour physique, refunds, webhooks, et les pièges que personne ne documente.