Aangepaste betalingsintegraties
Koppel Bookingmood aan een betalingsprovider naar keuze.
Waarom aangepaste betalingsintegraties?
Bookingmood ondersteunt standaard verschillende betalingsproviders.
Omdat we gebruikers over de hele wereld bedienen, kan elk land zijn eigen betalingsprovider hebben.
In plaats van voor al deze systemen aparte integraties te bouwen, stellen we basiscomponenten beschikbaar waarmee je aangepaste betalingspijplijnen kunt opzetten.
Aangepaste betalingsinstellingen
Ga naar Instellingen › Algemeen en stel de Betaalmethode in op Aangepast.
Een aangepaste betalingsconfiguratie bestaat uit 2 velden:
endpoint: De URL die wordt aangeroepen om betalingslinks te genererensigning_secret: Het geheim dat we gebruiken om onze verzoeken te ondertekenen, zodat je kunt controleren of het verzoek daadwerkelijk afkomstig is van Bookingmood.
Betalingsverzoeken afhandelen
Als een gast een betaling start (door op de knop ‘betalen’ te klikken), stuurt Bookingmood een POST-verzoek naar endpoint.
Dit verzoek bevat een JSON-body:
{
action: "PAYMENT_LINK_CREATE",
date: number, // Aantal seconden sinds de epoch
language: string, // Taalcode van de gebruiker
payment_id, // ID van de betaling waarvoor het verzoek is bedoeld
}Je kunt meer gegevens over de betaling en de bijbehorende boeking opvragen via onze API.
Het eindpunt moet snel een succesvolle statuscode (2xx) en een JSON-object teruggeven:
{
payment_url: string
}Voorbeeld van een eindpunt
// In dit voorbeeld wordt Express gebruikt om verzoeken te ontvangen
const express = require("express");
const app = express();
// Pas de ruwe body aan het inhoudstype application/json aan
// Als je Express v4 - v4.16 gebruikt, moet je body-parser gebruiken in plaats van express om de request body op te halen
app.post(
"/payment-link-generation-endpoint",
express.json({ type: "application/json" }),
(request, response) => {
const event = request.body;
// Verwerk de gebeurtenis
switch (event.action) {
case "PAYMENT_LINK_CREATE":
const payment = await bookingmoodApi
.from("payments")
.select("*")
.eq("id", event.payment_id)
.single();
return response.json({
payment_url: `https://custom-payment-provider.com/pay/${payment.amount - payment.paid}`
});
default:
throw new Error(`Onverwachte actie: ${event.action}`);
}
}
);
app.listen(8000, () => console.log("Draait op poort 8000"));Je eindpunt beveiligen
Nadat je hebt gecontroleerd of je endpoint naar behoren werkt, zorg je ervoor dat de verbinding veilig is door de aanbevolen werkwijzen toe te passen.
Controleer of de verzoeken afkomstig zijn van Bookingmood
Bookingmood ondertekent elk verzoek in de X-Signature-header, net zoals bij webhook-gebeurtenissen, met behulp van de signing_secret uit je configuratie. Het date-veld van het verzoek biedt bescherming tegen replay-aanvallen. Zie Controleer of gebeurtenissen door Bookingmood worden verzonden voor de stappen en een voorbeeld.
Laatst gewijzigd 3 november 2026