146 lines
5.3 KiB
Markdown
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
|