Paiements
Endpoints pour traiter les paiements avec Stripe.
Intégration Stripe
SalonBookIt utilise Stripe pour traiter les paiements. Le widget gère tout le flux automatiquement. Ces endpoints sont pour les intégrations personnalisées.
POST
/api/v1/pagos/intent/
Crée un PaymentIntent Stripe pour traiter un paiement.
Paramètres du corps
| Paramètre | Type | Requis | Description |
|---|---|---|---|
cliente_id |
integer | Oui | ID du client |
amount |
integer | Oui | Montant en centimes (ex : 2500 = 25,00€) |
type |
string | Oui | booking, order ou points |
reference_id |
integer | Oui | ID de la réservation, commande ou forfait de points |
Exemple de requête
cURL
curl -X POST "https://app.salonbookit.com/api/v1/pagos/intent/" \
-H "X-API-Key: hh_pub_live_abc123..." \
-H "Authorization: Bearer eyJhbG..." \
-H "Content-Type: application/json" \
-d '{
"cliente_id": 456,
"amount": 2500,
"type": "booking",
"reference_id": 12345
}'
Réponse (200 OK)
JSON
{
"success": true,
"data": {
"client_secret": "pi_3N...secret_abc123",
"payment_intent_id": "pi_3N...",
"amount": 2500,
"currency": "eur",
"stripe_publishable_key": "pk_live_...",
"customer_id": "cus_abc123"
}
}
Utilisation en frontend
Utilisez le client_secret avec Stripe.js pour compléter le paiement :
JavaScript
// Initialiser Stripe
const stripe = Stripe('pk_live_...');
const elements = stripe.elements({
clientSecret: response.data.client_secret
});
// Créer l'élément de carte
const cardElement = elements.create('card');
cardElement.mount('#card-element');
// Confirmer le paiement
const { error, paymentIntent } = await stripe.confirmCardPayment(
response.data.client_secret,
{
payment_method: {
card: cardElement,
billing_details: {
name: 'Juan Pérez',
email: 'juan@email.com'
}
}
}
);
if (error) {
console.error('Error:', error.message);
} else if (paymentIntent.status === 'succeeded') {
// Paiement réussi
console.log('Paiement effectué :', paymentIntent.id);
}
POST
/api/v1/pagos/confirmar/
Confirme un paiement après que Stripe l'a traité.
Paramètres du corps
| Paramètre | Type | Description |
|---|---|---|
payment_intent_id |
string | ID du PaymentIntent Stripe |
Réponse (200 OK)
JSON
{
"success": true,
"data": {
"pago_id": 789,
"estado": "completado",
"monto": 25.00,
"moneda": "EUR",
"reserva_actualizada": true,
"puntos_otorgados": 25,
"recibo_url": "https://pay.stripe.com/receipts/..."
}
}
Webhook Stripe
SalonBookIt reçoit les webhooks Stripe automatiquement sur :
POST https://app.salonbookit.com/api/v1/webhooks/stripe/
Événements traités :
| Événement Stripe | Action |
|---|---|
payment_intent.succeeded |
Marque le paiement comme effectué, met à jour la réservation |
payment_intent.payment_failed |
Marque le paiement comme échoué, notifie le client |
charge.refunded |
Enregistre le remboursement |
charge.dispute.created |
Notifie le commerce du litige |
Pas de configuration nécessaire
Le webhook Stripe se configure automatiquement lors de la connexion de votre compte Stripe dans le Dashboard.
Erreurs de paiement
| Code | HTTP | Description |
|---|---|---|
STRIPE_NOT_CONFIGURED |
400 | Le commerce n'a pas Stripe configuré |
INVALID_AMOUNT |
400 | Montant invalide (doit être positif) |
BOOKING_ALREADY_PAID |
400 | La réservation a déjà été payée |
PAYMENT_FAILED |
400 | Erreur lors du traitement du paiement (voir message Stripe) |
CARD_DECLINED |
400 | Carte refusée |
Devises supportées
| Code | Devise | Symbole |
|---|---|---|
EUR |
Euro | € |
USD |
Dollar américain | $ |
GBP |
Livre sterling | £ |
AED |
Dirham émirati | د.إ |