2 min. leestijd

[Abonnement Beschikbaarheid Boeking](https://www.bookingmood.com/nl-NL/pricing)

# Aangepaste betalingsintegraties

**Koppel Bookingmood aan een betalingsprovider naar keuze.**

## [Waarom aangepaste betalingsintegraties?](#waarom-aangepaste-betalingsintegraties)

Bookingmood ondersteunt standaard verschillende [betalingsproviders](https://www.bookingmood.com/nl-NL/docs/betalingen#choose-a-payment-method).

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](#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 genereren
- `signing_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](#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](https://www.bookingmood.com/nl-NL/api-reference).

Het eindpunt moet snel een succesvolle statuscode (`2xx`) en een JSON-object teruggeven:

```
{
  payment_url: string
}
```

### [Voorbeeld van een eindpunt](#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](#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](#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](https://www.bookingmood.com/nl-NL/docs/ontwikkelaars/webhooks#verify-events-are-sent-from-bookingmood) voor de stappen en een voorbeeld.

Laatst gewijzigd 3 november 2026
