7.2 KiB
7.2 KiB
Intégration Rizful.com API pour paiements Lightning et identités
Auteur : Équipe 4NK
Objectif
Intégrer l'API de Rizful.com pour :
- Générer des identités Nostr
- Créer et gérer des factures Lightning pour les paiements d'articles
- Vérifier le statut des paiements Lightning
- Fournir une expérience de paiement fluide via Rizful
Impacts
Utilisateurs
- Paiements Lightning facilités via l'infrastructure Rizful
- Interface de paiement améliorée avec modal dédiée
- Vérification automatique des paiements
- Possibilité de générer des identités Nostr via Rizful
Développeurs
- Service Rizful centralisé pour toutes les opérations de paiement
- Intégration transparente avec le système de paiement existant
- Gestion des factures Lightning standardisée
- API unifiée pour les identités et paiements
Technique
- Nouveau service
RizfulServicepour les appels API - Service
PaymentServiceintégrant Rizful avec Nostr - Composant
PaymentModalpour l'affichage des factures - Variables d'environnement pour la configuration API
Modifications
Nouveaux fichiers
lib/rizful.ts - Service Rizful API
Service principal pour interagir avec l'API Rizful.com :
createInvoice(): Créer une facture LightningcheckPaymentStatus(): Vérifier le statut d'un paiementwaitForPayment(): Polling jusqu'à confirmation du paiementgenerateIdentity(): Générer une nouvelle identité NostrgetLightningAddress(): Obtenir l'adresse Lightning d'une identitécreatePaymentLink(): Créer un lien de paiement avec URL Lightning
lib/payment.ts - Service de paiement intégré
Service intégrant Rizful avec le système Nostr :
createArticlePayment(): Créer une facture pour un articlecheckArticlePayment(): Vérifier le paiement d'un articlewaitForArticlePayment(): Attendre la confirmation du paiementgetPaymentUrl(): Obtenir l'URL de paiement pour un article
types/rizful.ts - Types TypeScript
Types pour l'API Rizful :
RizfulConfig: Configuration du serviceRizfulInvoice: Structure d'une facture LightningRizfulPaymentStatus: Statut d'un paiementRizfulIdentity: Identité Nostr généréeRizfulInvoiceRequest: Requête de création de facture
components/PaymentModal.tsx - Modal de paiement
Composant React pour afficher la facture Lightning :
- Affichage de la facture en texte
- Bouton pour copier la facture
- Bouton pour ouvrir le wallet Lightning
- Interface utilisateur claire et intuitive
Modifications des fichiers existants
components/ArticleCard.tsx
- Intégration du
PaymentServiceau lieu du système de zap direct - Affichage de
PaymentModallors de la création d'une facture - Polling automatique pour vérifier le paiement en arrière-plan
- Gestion améliorée des états de paiement
next.config.js
- Ajout des variables d'environnement Rizful :
RIZFUL_API_KEY: Clé API RizfulRIZFUL_API_URL: URL de l'API Rizful (défaut: https://api.rizful.com)
Flux de paiement avec Rizful
-
Utilisateur clique sur "Unlock for X sats"
- Vérification de la connexion Nostr
- Création d'une facture Lightning via Rizful API
-
Affichage de la modal de paiement
- Facture Lightning affichée
- Options pour copier ou ouvrir dans wallet
-
Paiement utilisateur
- Utilisateur paie via son wallet Lightning
- Paiement traité par Rizful
-
Vérification du paiement
- Polling automatique du statut via Rizful API
- Vérification supplémentaire via zap receipt sur Nostr (double confirmation)
-
Déblocage du contenu
- Une fois le paiement confirmé, chargement du contenu privé
- Affichage du contenu complet
Modalités de déploiement
Prérequis
- Compte Rizful.com avec clé API
- Variables d'environnement configurées
Configuration
Créer ou mettre à jour le fichier .env.local :
# Rizful API Configuration
NEXT_PUBLIC_RIZFUL_API_KEY=your_rizful_api_key_here
NEXT_PUBLIC_RIZFUL_API_URL=https://api.rizful.com
# Existing Nostr configuration
NEXT_PUBLIC_NOSTR_RELAY_URL=wss://relay.damus.io
NEXT_PUBLIC_NOSTRCONNECT_BRIDGE=https://use.nsec.app
Obtenir une clé API Rizful
- Créer un compte sur Rizful.com
- Accéder aux paramètres du compte
- Générer une clé API
- Configurer l'adresse Lightning personnalisée (optionnel)
- Copier la clé API dans les variables d'environnement
Déploiement
Aucun changement dans le processus de déploiement standard :
- Les variables d'environnement doivent être configurées dans l'environnement de production
- Le code client peut accéder aux variables
NEXT_PUBLIC_* - Les appels API se font depuis le navigateur (CORS doit être configuré côté Rizful)
Sécurité
- Clé API : Stockée côté client (NEXT_PUBLIC_*), donc accessible dans le navigateur
- Rizful devrait implémenter des restrictions par domaine/origine
- Considérer un proxy backend pour protéger la clé API en production
- Factures Lightning : Valides uniquement pendant la période d'expiration
- Vérification double : Combinaison Rizful API + zap receipts Nostr pour validation
Modalités d'analyse
Logs et debugging
Les erreurs sont loggées dans la console du navigateur :
- Erreurs de création de facture
- Erreurs de vérification de paiement
- Timeouts de polling
Métriques à surveiller
-
API Rizful
- Taux de succès des créations de factures
- Temps de réponse de l'API
- Taux de confirmation des paiements
- Erreurs API (rate limiting, authentification, etc.)
-
Paiements
- Temps moyen entre création de facture et paiement
- Taux d'abandon de paiement
- Taux de confirmation de paiement
- Échecs de vérification de paiement
-
Expérience utilisateur
- Utilisation de la modal vs ouverture directe du wallet
- Taux de copie de facture
- Temps d'attente pour confirmation
Points d'amélioration
-
Backend proxy (recommandé pour production)
- Créer un endpoint Next.js API route pour protéger la clé API
- Appels API depuis le serveur au lieu du client
- Validation supplémentaire côté serveur
-
Gestion des erreurs
- Retry logic pour les appels API échoués
- Gestion des timeouts réseau
- Messages d'erreur utilisateur plus explicites
-
QR Code
- Génération de QR code pour les factures Lightning
- Affichage dans la modal de paiement
- Compatible avec wallets mobiles
-
Webhooks
- Intégration webhooks Rizful pour notifications en temps réel
- Éviter le polling continu
- Réactivité améliorée
-
Identités
- Utilisation de
generateIdentity()pour créer des identités - Stockage sécurisé des clés privées générées
- Intégration avec le système d'authentification
- Utilisation de
Tests recommandés
-
Tests unitaires
RizfulService.createInvoice()RizfulService.checkPaymentStatus()PaymentService.createArticlePayment()
-
Tests d'intégration
- Flux complet de paiement (création → paiement → vérification)
- Gestion des timeouts
- Gestion des erreurs API
-
Tests end-to-end
- Scénario utilisateur complet avec paiement réel
- Vérification du déblocage de contenu après paiement