Zahlungen
Endpoints zur Verarbeitung von Zahlungen mit Stripe.
Stripe-Integration
SalonBookIt verwendet Stripe zur Zahlungsabwicklung. Das Widget handhabt den gesamten Ablauf automatisch. Diese Endpoints sind für benutzerdefinierte Integrationen.
POST
/api/v1/pagos/intent/
Erstellt einen Stripe PaymentIntent zur Zahlungsabwicklung.
Body-Parameter
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
cliente_id |
integer | Ja | Kunden-ID |
amount |
integer | Ja | Betrag in Cent (z.B.: 2500 = 25,00€) |
type |
string | Ja | booking, order oder points |
reference_id |
integer | Ja | ID der Buchung, Bestellung oder des Punktepakets |
Anfrage-Beispiel
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
}'
Antwort (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"
}
}
Frontend-Verwendung
Verwenden Sie das client_secret mit Stripe.js, um die Zahlung abzuschließen:
JavaScript
// Stripe initialisieren
const stripe = Stripe('pk_live_...');
const elements = stripe.elements({
clientSecret: response.data.client_secret
});
// Kartenelement erstellen
const cardElement = elements.create('card');
cardElement.mount('#card-element');
// Zahlung bestätigen
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') {
// Zahlung erfolgreich
console.log('Zahlung abgeschlossen:', paymentIntent.id);
}
POST
/api/v1/pagos/confirmar/
Bestätigt eine Zahlung, nachdem Stripe sie verarbeitet hat.
Body-Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
payment_intent_id |
string | Stripe PaymentIntent-ID |
Antwort (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/..."
}
}
Stripe-Webhook
SalonBookIt empfängt Stripe-Webhooks automatisch unter:
POST https://app.salonbookit.com/api/v1/webhooks/stripe/
Verarbeitete Ereignisse:
| Stripe-Ereignis | Aktion |
|---|---|
payment_intent.succeeded |
Markiert Zahlung als abgeschlossen, aktualisiert Buchung |
payment_intent.payment_failed |
Markiert Zahlung als fehlgeschlagen, benachrichtigt Kunden |
charge.refunded |
Registriert die Rückerstattung |
charge.dispute.created |
Benachrichtigt das Geschäft über Streitfall |
Sie müssen nichts konfigurieren
Der Stripe-Webhook wird automatisch konfiguriert, wenn Sie Ihr Stripe-Konto im Dashboard verbinden.
Zahlungsfehler
| Code | HTTP | Beschreibung |
|---|---|---|
STRIPE_NOT_CONFIGURED |
400 | Das Geschäft hat Stripe nicht konfiguriert |
INVALID_AMOUNT |
400 | Ungültiger Betrag (muss positiv sein) |
BOOKING_ALREADY_PAID |
400 | Die Buchung wurde bereits bezahlt |
PAYMENT_FAILED |
400 | Fehler bei der Zahlungsabwicklung (siehe Stripe-Nachricht) |
CARD_DECLINED |
400 | Karte abgelehnt |
Unterstützte Währungen
| Code | Währung | Symbol |
|---|---|---|
EUR |
Euro | € |
USD |
US-Dollar | $ |
GBP |
Britisches Pfund | £ |
AED |
VAE-Dirham | د.إ |