Created
June 26, 2024 09:28
-
-
Save DWS-paris/cee30d18faf0c4aa912413594dad94a2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const stripe = require('stripe')('votre_clé_secrète_stripe'); // Remplacez par votre clé secrète Stripe | |
class StripeService { | |
constructor() { | |
this.stripe = stripe; | |
} | |
// Méthode pour créer un client avec une carte de crédit | |
async createCustomerWithCard(email, cardToken) { | |
try { | |
const customer = await this.stripe.customers.create({ | |
email: email, | |
source: cardToken // Utilisez un token de carte généré par Stripe.js ou Checkout | |
}); | |
return customer; | |
} catch (error) { | |
console.error('Erreur lors de la création du client:', error); | |
throw error; | |
} | |
} | |
// Méthode pour souscrire à un abonnement | |
async subscribeCustomerToPlan(customerId, planId) { | |
try { | |
const subscription = await this.stripe.subscriptions.create({ | |
customer: customerId, | |
items: [{ plan: planId }] | |
}); | |
return subscription; | |
} catch (error) { | |
console.error('Erreur lors de la souscription à un abonnement:', error); | |
throw error; | |
} | |
} | |
// Méthode pour ajouter un achat supplémentaire à la facturation de l'abonnement | |
async addInvoiceItem(customerId, amount, currency, description) { | |
try { | |
const invoiceItem = await this.stripe.invoiceItems.create({ | |
customer: customerId, | |
amount: amount, | |
currency: currency, | |
description: description | |
}); | |
return invoiceItem; | |
} catch (error) { | |
console.error('Erreur lors de l\'ajout d\'un élément à la facture:', error); | |
throw error; | |
} | |
} | |
// Méthode pour traiter le token reçu depuis le client | |
async processPaymentToken(token) { | |
try { | |
const customer = await this.createCustomerWithCard('[email protected]', token); | |
// Effectuer d'autres opérations si nécessaire, comme souscrire à un abonnement | |
return customer; | |
} catch (error) { | |
console.error('Erreur lors du traitement du token:', error); | |
throw error; | |
} | |
} | |
} | |
// Exemple d'utilisation de la classe | |
(async () => { | |
const stripeService = new StripeService(); | |
try { | |
// Création d'un client avec une carte de crédit | |
const email = '[email protected]'; | |
const cardToken = 'tok_visa'; // Vous devez obtenir ce token avec Stripe.js ou Checkout | |
const customer = await stripeService.createCustomerWithCard(email, cardToken); | |
console.log('Client créé:', customer); | |
// Souscription à un abonnement | |
const planId = 'plan_G0s0yOHEeW5C1B'; // Remplacez par l'ID de votre plan | |
const subscription = await stripeService.subscribeCustomerToPlan(customer.id, planId); | |
console.log('Abonnement créé:', subscription); | |
// Ajout d'un achat supplémentaire | |
const amount = 500; // Montant en centimes (par exemple, 500 centimes = 5.00 EUR) | |
const currency = 'eur'; | |
const description = 'Achat supplémentaire'; | |
const invoiceItem = await stripeService.addInvoiceItem(customer.id, amount, currency, description); | |
console.log('Achat supplémentaire ajouté:', invoiceItem); | |
} catch (error) { | |
console.error('Erreur:', error); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment