Anmelden um den Slug und den veröffentlichbaren Schlüssel Ihrer Location in jedem Beispiel zu sehen.
Ihr Konto hat noch keine Location, die Beispiele behalten daher ihre Platzhalter. Abmelden
Angemeldet als · . Legen Sie in der Konsole einen veröffentlichbaren Schlüssel an und laden Sie die Seite neu, um ihn hier zu sehen. Abmelden
Angemeldet als · . Die Beispiele zeigen den veröffentlichbaren Schlüssel Ihrer Location. Abmelden
Entwicklerdokumentation
Payment Intents
Einen anbieterneutralen Payment Intent für die Anzahlung anlegen – was Sie senden, was zurückkommt und warum Kartendaten diese API nie berühren.
Ein Payment Intent hält fest, dass für eine Reservierung eine Anzahlung fällig ist, und liefert Ihnen, was ein Zahlungsanbieter zum Einziehen braucht. Die API sieht nie Kartennummern: Der Intent trägt ein clientSecret für den clientseitigen Ablauf des Anbieters oder eine checkoutUrl, zu der Sie den Gast schicken. Er folgt denselben Schlüsselregeln wie der Rest von /api/venues/**. Das einbettbare Widget ruft ihn aus dem Schritt „Pay deposit“ seiner Bestätigung auf, auf Wunsch mit einem Gutscheincode (Buchungsablauf); eine eigene Seite kann ihn mit einem veröffentlichbaren Schlüssel aufrufen, nach einer Reservierung mit depositRequired: true, genau wie unten gezeigt.
Endpunkte
POST /api/venues/{venueSlug}/payment-intents
Request-Body (Content-Type: application/json)
| Feld | Erforderlich | Bedeutung |
|---|---|---|
reservationReference |
ja | Die reference der Reservierung (BDP-XXXXXX) |
amount |
ja | Genau die Anzahlung, die die Buchung schuldet: der depositAmount der Reservierung (bei einer Gruppenbuchung der der ganzen Gruppe). Jeder andere Betrag wird mit 400 abgelehnt |
currency |
ja | Dreibuchstabiger ISO-4217-Code, die currency der Reservierung |
provider |
nein | Reserviert für die Anbieterwahl, sobald mehr als einer konfiguriert ist; heute wird es ignoriert – der Anbieter ergibt sich aus der Serverkonfiguration (fake standardmäßig, stripe sobald Stripe:SecretKey gesetzt ist) |
voucherCode |
nein | Ein Geschenkgutschein dieser Location, der die Anzahlung ganz oder teilweise bezahlt (Mit einem Gutschein). Nur hier senden, nie in einer URL, nie protokollieren |
Antwort 201 Created
| Feld | Typ | Bedeutung |
|---|---|---|
id |
GUID | Der Intent |
reservationReference |
string | Wofür er zahlt |
amount, currency |
decimal, string | Was fällig ist |
status |
string | Der Status des Anbieters – anbieterspezifisch, z. B. RequiresConfirmation bei fake, ein Stripe-Checkout-Session-Status wie open bei stripe |
provider |
string | Welcher Anbieter ihn angelegt hat |
clientSecret |
string | Übergeben Sie es der Client-Bibliothek des Anbieters auf dem Gerät des Gastes – nie protokollieren |
checkoutUrl |
string oder null | Wenn gesetzt, leiten Sie den Gast stattdessen dorthin |
createdAt |
ISO-8601-Zeitpunkt | Wann der Intent angelegt wurde |
voucherAmount |
decimal oder null | Was der Gutschein bezahlt; null, wenn die Anfrage keinen enthielt |
cardAmount |
decimal oder null | Was die Karte bezahlt: amount abzüglich voucherAmount. 0 heißt, der Gutschein hat alles bezahlt; null ohne Gutschein |
{
"id": "79501bb3-1e05-4827-82ed-1086e889b3bd",
"reservationReference": "BDP-KSQS7M",
"amount": 20.00,
"currency": "EUR",
"status": "RequiresConfirmation",
"provider": "fake",
"clientSecret": "pi_fake_156d81370b0445619159a5028cc87bff_secret_82d75f634cbb4beaaf530982b18e492c",
"createdAt": "2026-09-15T12:55:15.2187185+00:00",
"checkoutUrl": null
}Eine Anzahlung lässt sich einmal bezahlen, und nur solange die Buchung Pending ist und auf sie wartet. Der Betrag ist immer die eigene Anzahlung der Buchung, sodass nie ein Client bestimmt, was dem Gast berechnet wird.
Mit einem Gutschein
Fügen Sie voucherCode hinzu, und der Gutschein bezahlt, was er von der Anzahlung kann; die Karte bezahlt den Rest über denselben Checkout wie oben. Nur ein Betragsgutschein bezahlt eine Anzahlung. Der Wert des Gutscheins wird reserviert, solange der Gast auf der Stripe-Seite ist, und abgebucht, wenn die Zahlung eintrifft, sodass er nicht zweimal ausgegeben werden kann; bricht der Gast ab, verfällt die Reservierung von selbst. Der Kartenteil beträgt mindestens 0,50 €: Bliebe weniger übrig, zahlt der Gutschein etwas weniger, sodass die Karte genau 0,50 € zahlt (Mit einem Gutschein bezahlen).
Ein Gutschein, der die ganze Anzahlung deckt, öffnet gar keine Zahlung: Die Buchung ist sofort bestätigt, provider ist voucher, cardAmount ist 0, und checkoutUrl ist die Bestätigungsseite der Buchung. status ist succeeded oder paid_but_unavailable, wenn der Slot inzwischen vergeben wurde – dann klärt die Location die Buchung, und ihre Erstattung bucht den Wert auf den Gutschein zurück.
{
"id": "0b6d2c51-9a7e-4f3b-8c1d-2e4f6a8b0c13",
"reservationReference": "BDP-KSQS7M",
"amount": 20.00,
"currency": "EUR",
"status": "succeeded",
"provider": "voucher",
"clientSecret": "",
"createdAt": "2026-10-09T12:55:15.2187185+00:00",
"checkoutUrl": "https://app.bookdineplay.com/booking/confirmed?ref=BDP-KSQS7M",
"voucherAmount": 20.00,
"cardAmount": 0.00
}Mit einem Gutschein braucht die Location eingeschaltete Anzahlungen und einen Tarif, der sie enthält; Online-Zahlungen und ein Auszahlungskonto braucht es nur, solange ein Kartenteil übrig bleibt. Eine Erstattung – durch die Location, bei der eigenen Stornierung des Gasts, wenn die Regeln der Location erstatten, oder im Stripe-Dashboard der Location – bucht den Gutscheinteil auf den Gutschein und den Kartenteil auf die Karte zurück.
Fehler
| Status | Wann |
|---|---|
400 |
Ein Feld scheitert an der Validierung (errors nennt es), oder amount/currency ist nicht genau die Anzahlung der Buchung |
403 |
feature-not-in-plan: Der Tarif des Mandanten enthält keine Online-Zahlungen oder Anzahlungen. requiredPlan ist "Premium" |
404 |
Keine Location mit diesem Slug oder keine Reservierung mit dieser Referenz an dieser Location |
409 |
Die Location hat Online-Zahlungen oder Anzahlungen selbst nicht aktiviert – den Anzahlungsschritt überspringen und die Reservierung als von der Location bestätigt behandeln |
409 |
payouts-not-connected: Tarif und Schalter der Location erlauben es, aber die Location hat ihr Stripe-Auszahlungskonto noch nicht (vollständig) verbunden |
409 |
Die Buchung wartet auf keine Anzahlung – storniert, von der Location bestätigt oder vorbei (reason deposit-not-payable) –, oder ihre Anzahlung ist schon bezahlt (reason deposit-already-paid) |
404, 409 |
Mit einem Gutschein: eines der Gutschein-Probleme oder 409 mit reason below-card-minimum, wenn die Anzahlung 0,50 € oder weniger beträgt und der Gutschein sie nicht deckt |
Die Prüfungen von Schaltern, Tarif und Auszahlungskonto laufen in dieser Reihenfolge – eine Location mit ausgeschalteten Zahlungen bekommt zuerst das Schalter-Problem, selbst bei einem Tarif und Auszahlungskonto, die es sonst erlauben würden.
curl
curl -X POST "https://api.bookdineplay.com/api/venues/your-venue/payment-intents" \
-H "X-BookDinePlay-Key: bdp_pk_your_publishable_key" \
-H "Origin: https://www.your-venue.example" \
-H "Content-Type: application/json" \
-d '{ "reservationReference": "BDP-7K2Q9H", "amount": 20.00, "currency": "EUR" }'JavaScript
const intent = await (await fetch('https://api.bookdineplay.com/api/venues/your-venue/payment-intents', {
method: 'POST',
headers: { 'X-BookDinePlay-Key': 'bdp_pk_your_publishable_key', 'Content-Type': 'application/json' },
body: JSON.stringify({ reservationReference: reservation.reference, amount: reservation.depositAmount, currency: reservation.currency, voucherCode }) // voucherCode optional
})).json();
if (intent.checkoutUrl) location.assign(intent.checkoutUrl); // bei cardAmount 0 die BestätigungsseiteC#
var intent = await client.CreatePaymentIntentAsync("your-venue", new CreatePaymentIntentRequest
{
ReservationReference = reservation.Reference,
Amount = reservation.DepositAmount ?? 0m,
Currency = reservation.Currency,
VoucherCode = voucherCode // optional
}, cancellationToken);Nächste Schritte
- Reservierungen – woher
depositAmountkommt. - Gutscheine – die Regeln, die jede Gutscheinzahlung teilt.
- Fehler –
feature-not-in-planundpayouts-not-connectedim Detail. - .NET-SDK –
CreatePaymentIntentAsyncund die Ausnahmen, die es bei403/409wirft.