5.3 KiB
5.3 KiB
Intégration Alby/WebLN pour paiements Lightning
Auteur : Équipe 4NK
Objectif
Remplacer l'intégration Rizful par Alby/WebLN pour les paiements Lightning, permettant une intégration directe avec les portefeuilles Lightning du navigateur sans nécessiter d'API backend.
Impacts
Utilisateurs
- Paiements Lightning facilités via l'extension Alby ou autres portefeuilles WebLN
- Pas besoin de compte externe (Rizful) pour recevoir des paiements
- Interface de paiement native du navigateur
- Vérification des paiements via zap receipts sur Nostr
Développeurs
- Pas besoin de clé API externe
- Pas besoin d'API routes backend pour les paiements
- Utilisation du standard WebLN (compatible avec tous les portefeuilles WebLN)
- Architecture simplifiée
Technique
- Service
AlbyServiceutilisant le standard WebLN - Vérification des paiements via zap receipts Nostr
- Compatible avec Alby et autres portefeuilles WebLN
Modifications
Nouveaux fichiers
lib/alby.ts - Service Alby/WebLN
Service principal pour interagir avec les portefeuilles Lightning via WebLN :
enable(): Demander l'autorisation à l'utilisateurcreateInvoice(): Créer une facture Lightning via le portefeuillesendPayment(): Envoyer un paiement via le portefeuillecheckPaymentStatus(): Placeholder (vérification via zap receipts)waitForPayment(): Attendre la confirmation via zap receipts
types/alby.ts - Types TypeScript
Types pour Alby/WebLN :
AlbyInvoice: Structure d'une facture LightningAlbyPaymentStatus: Statut d'un paiementAlbyInvoiceRequest: Requête de création de facture
Fichiers modifiés
lib/payment.ts
- Remplacement de
RizfulServiceparAlbyService - Utilisation de zap receipts pour la vérification des paiements
- Simplification du flux de paiement
components/PaymentModal.tsx
- Intégration de
AlbyServicepour le paiement - Utilisation de
sendPayment()pour payer directement via WebLN - Fallback vers URI Lightning si WebLN n'est pas disponible
components/ArticleCard.tsx
- Mise à jour des types (remplacement de
RizfulInvoiceparAlbyInvoice)
next.config.js
- Suppression des variables d'environnement Rizful
README.md
- Mise à jour de la documentation pour Alby
- Instructions pour installer l'extension Alby
Fichiers supprimés
lib/rizful.ts- Service Rizful (remplacé parlib/alby.ts)types/rizful.ts- Types Rizful (remplacé partypes/alby.ts)pages/api/rizful/invoice.ts- API route Rizful (plus nécessaire)pages/api/rizful/payment/[hash].ts- API route Rizful (plus nécessaire)
Flux de paiement avec Alby
-
Utilisateur clique sur "Unlock for X sats"
- Vérification de la connexion Nostr
- Demande d'activation de WebLN (Alby)
- Création d'une facture Lightning via WebLN
-
Affichage de la modal de paiement
- Facture Lightning affichée
- Option pour payer directement via WebLN (bouton "Pay with Alby")
- Option pour copier la facture
-
Paiement utilisateur
- Utilisateur paie via son portefeuille WebLN (Alby)
- Le portefeuille gère le paiement
-
Vérification du paiement
- Polling des zap receipts sur Nostr
- Vérification de la signature et du montant
- Confirmation du paiement
-
Déblocage du contenu
- Une fois le paiement confirmé via zap receipt, chargement du contenu privé
- Affichage du contenu complet
Modalités de déploiement
Prérequis
- Extension Alby installée (pour les utilisateurs)
- Ou autre portefeuille WebLN compatible
Installation pour les utilisateurs
Les utilisateurs doivent installer l'extension Alby :
- Aller sur https://getalby.com/
- Installer l'extension pour leur navigateur (Chrome, Firefox, etc.)
- Créer un compte Alby ou connecter un portefeuille Lightning existant
Configuration
Aucune configuration serveur nécessaire ! Tout fonctionne côté client via WebLN.
Déploiement
Aucun changement dans le processus de déploiement standard. Le code fonctionne entièrement côté client.
Sécurité
- WebLN : Standard ouvert et sécurisé pour les portefeuilles Lightning
- Vérification : Les paiements sont vérifiés via zap receipts Nostr avec signatures cryptographiques
- Pas d'API key : Plus besoin de gérer des clés API côté serveur
Avantages par rapport à Rizful
- Pas de clé API : Plus besoin de configuration serveur
- Standard ouvert : WebLN est un standard, compatible avec plusieurs portefeuilles
- Meilleure UX : Intégration native avec le navigateur
- Décentralisé : Les utilisateurs gardent le contrôle de leur portefeuille
- Pas de frais d'API : Pas de service externe à payer
Limitations
- Extension requise : Les utilisateurs doivent avoir une extension WebLN installée
- Vérification via zap receipts : La vérification des paiements dépend des zap receipts sur Nostr (ce qui est normal pour un système Nostr)
Points d'amélioration
- Détection automatique : Améliorer la détection de l'extension WebLN
- Guide d'installation : Ajouter un guide d'installation de l'extension pour les utilisateurs
- Support de plusieurs portefeuilles : Tester et supporter d'autres portefeuilles WebLN
- Gestion des erreurs : Améliorer les messages d'erreur si WebLN n'est pas disponible