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

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 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/
  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