story-research-zapwall/features/alby-integration.md
2025-12-22 09:48:57 +01:00

146 lines
5.3 KiB
Markdown

# 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