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 nicht auf – es endet bei der Reservierung und überlässt die Anzahlung der Konsole der Location oder Ihrem Server (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-XXXX) |
amount |
ja | 0,01–100000, normalerweise der depositAmount der Reservierung |
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) |
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 |
{
"id": "79501bb3-1e05-4827-82ed-1086e889b3bd",
"reservationReference": "BDP-KSQS",
"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
}Fehler
| Status | Wann |
|---|---|
400 |
Ein Feld scheitert an der Validierung (errors nennt es) |
404 |
Keine Location mit diesem Slug oder keine Reservierung mit dieser Referenz an dieser Location |
409 |
Diese Location hat Online-Zahlungen nicht aktiviert – den Anzahlungsschritt überspringen und die Reservierung als von der Location bestätigt behandeln |
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-7K2Q", "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 })
})).json();
if (intent.checkoutUrl) location.assign(intent.checkoutUrl);C#
var intent = await client.CreatePaymentIntentAsync("your-venue", new CreatePaymentIntentRequest
{
ReservationReference = reservation.Reference,
Amount = reservation.DepositAmount ?? 0m,
Currency = reservation.Currency
}, cancellationToken);Nächste Schritte
- Reservierungen – woher
depositAmountkommt. - .NET-SDK –
CreatePaymentIntentAsyncund die Ausnahme, die es bei409wirft.