Créez un bot de paiement Telegram avec Stars — Sans IP ni ID
Les développeurs peuvent désormais accepter des dons et vendre des produits numériques sur Telegram sans s'inscrire en tant qu'entrepreneur individuel (IP) ni fournir de documents d'identité. En utilisant les Stars de Telegram comme monnaie, le bot génère automatiquement des factures et traite les paiements. Le système repose sur Python avec aiogram 3, SQLite pour le stockage des données et aiohttp pour l'API Mini App. Cela permet à tout utilisateur Telegram de créer des produits et de générer des liens de paiement en quelques secondes.
Architecture du système
Le bot aiogram 3 interagit avec une base de données SQLite qui stocke les produits, les vendeurs et les liens de paiement. Une API séparée via aiohttp sert la Mini App grâce à plusieurs points de terminaison :
/api/products— catalogue des produits/api/donate— données du bouton de don/api/create_invoice— génération de facture
La logique de paiement est entièrement gérée par le bot : la Mini App récupère les données via l'API, le bot crée la facture, puis confirme le paiement réussi grâce à l'événement successful_payment.
Génération de liens de paiement uniques
Pour garantir la sécurité, les liens sont générés avec des codes uniques tels que prod_fgU7d, stockés dans la table payment_links. URL complète : https://t.me/System_Paybot?start=prod_fgU7d. Cette méthode empêche les attaques par force brute sur les identifiants et permet de suivre précisément les sources de trafic.
Lors de la livraison du contenu, le bot détecte automatiquement le type de fichier à partir de file_id et utilise un mécanisme universel d'envoi :
try:
await message.answer_document(document=content, caption=thanks)
except:
try:
await message.answer_photo(photo=content, caption=thanks)
except:
# tentatives supplémentaires pour vidéo, audio, etc.
La méthode sendDocument fonctionne de manière fiable pour la plupart des types de fichiers Telegram.
Traitement des paiements en Stars
Les factures sont créées à l’aide de la méthode create_invoice_link avec les paramètres suivants :
invoice_link = await bot.create_invoice_link(
title=title,
description=f"Achat : {title}",
payload=f"pay_{product_id}_{user_id}",
provider_token="",
currency="XTR",
prices=[{"label": title, "amount": amount}]
)
Telegram gère le paiement et envoie une mise à jour successful_payment contenant le payload, permettant d’identifier le produit et de le livrer au client.
Fonctionnalités administratives et analyse
Les administrateurs ont accès aux commandes suivantes :
/admin_stats— statistiques globales/admin_users— liste des utilisateurs récents/admin_broadcast— diffusion massive de messages/admin_ban//admin_unban— gestion des accès
Les vendeurs utilisent /stats pour consulter leurs analyses personnelles.
Déploiement et résolution des problèmes
Limites des Stars
Les Stars sont créditées directement au propriétaire du bot et ne peuvent pas être transférées. Solution : le code open source permet à tout le monde de déployer son propre bot.
HTTPS pour la Mini App
La Mini App nécessite HTTPS. Si le port 443 est occupé (ex. par Xray VPN), utilisez un sous-domaine avec Nginx sur le port 8443 :
- Sous-domaine :
shop.system-dev.ru - Certbot pour les certificats SSL
- Ouvrir le port 8443 dans iptables
- URL BotFather :
https://shop.system-dev.ru:8443
Attribuez les permissions correctes sur /var/www/systempay avec chmod 755 pour l'utilisateur www-data.
CORS dans l’API
Ajoutez un middleware dans aiohttp :
@web.middleware
async def cors_middleware(request, handler):
response = await handler(request)
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS'
response.headers['Access-Control-Allow-Headers'] = 'Content-Type'
return response
Fonctionnalités finales
Ce bot permet :
- Télécharger n'importe quel type de fichier ou partager des liens
- Recevoir des dons de tout montant
- Une Mini App avec catalogue de produits et interface réactive
- Tableau de bord d'analyse personnalisé
- Panneau d'administration
Prêt à être utilisé immédiatement pour automatiser les ventes sur Telegram.
Points clés
- Les codes de lien uniques assurent sécurité et suivi du trafic sans risque de devinette d'ID.
- L'envoi universel de fichiers via
sendDocumentavec mécanismes de secours fonctionne pour tous les formats Telegram. - L'intégration des Stars est simple, mais les fonds vont au propriétaire du bot — le code open source permet l'hébergement autonome.
- L'utilisation d'HTTPS sur des ports non standards est résolue via Nginx + Certbot, sans conflit avec les VPNs.
- Le middleware CORS dans aiohttp règle les problèmes d'accès croisé pour la Mini App.
— Editorial Team
Aucun commentaire pour le moment.