# 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 `AlbyService` utilisant 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'utilisateur - `createInvoice()` : Créer une facture Lightning via le portefeuille - `sendPayment()` : Envoyer un paiement via le portefeuille - `checkPaymentStatus()` : 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 Lightning - `AlbyPaymentStatus` : Statut d'un paiement - `AlbyInvoiceRequest` : Requête de création de facture ### Fichiers modifiés #### `lib/payment.ts` - Remplacement de `RizfulService` par `AlbyService` - Utilisation de zap receipts pour la vérification des paiements - Simplification du flux de paiement #### `components/PaymentModal.tsx` - Intégration de `AlbyService` pour 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 `RizfulInvoice` par `AlbyInvoice`) #### `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é par `lib/alby.ts`) - `types/rizful.ts` - Types Rizful (remplacé par `types/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 1. **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 2. **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 3. **Paiement utilisateur** - Utilisateur paie via son portefeuille WebLN (Alby) - Le portefeuille gère le paiement 4. **Vérification du paiement** - Polling des zap receipts sur Nostr - Vérification de la signature et du montant - Confirmation du paiement 5. **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 : 1. Aller sur [https://getalby.com/](https://getalby.com/) 2. Installer l'extension pour leur navigateur (Chrome, Firefox, etc.) 3. 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 1. **Pas de clé API** : Plus besoin de configuration serveur 2. **Standard ouvert** : WebLN est un standard, compatible avec plusieurs portefeuilles 3. **Meilleure UX** : Intégration native avec le navigateur 4. **Décentralisé** : Les utilisateurs gardent le contrôle de leur portefeuille 5. **Pas de frais d'API** : Pas de service externe à payer ## Limitations 1. **Extension requise** : Les utilisateurs doivent avoir une extension WebLN installée 2. **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 1. **Détection automatique** : Améliorer la détection de l'extension WebLN 2. **Guide d'installation** : Ajouter un guide d'installation de l'extension pour les utilisateurs 3. **Support de plusieurs portefeuilles** : Tester et supporter d'autres portefeuilles WebLN 4. **Gestion des erreurs** : Améliorer les messages d'erreur si WebLN n'est pas disponible