Live demo

Reisbetaal-API

Betaalgateway-API voor reisboekingen: van checkout tot terugbetaling

Met een betaalgateway-API ontvangt je boekingssite het geld van de reiziger zonder de kaart ooit aan te raken. Deze pagina loopt de aanroepen van één kaartbetaling door, de statussen van een betaling, waarom reisbetalingen lastiger zijn dan retail en hoe PHPTRAVELS je boekingsflow koppelt aan de gateway van je keuze.

  • Sessie, 3-D Secure, capture
  • Alle betalingsstatussen
  • Kaarten, wallets, bank, krediet
  • Geen kaartgegevens op je server

Hoe de aanroepen werken

Eén kaartbetaling, aanroep voor aanroep

Een betaalgateway-API is een set webservices die een betaalbedrijf openstelt voor webwinkels. Je server vraagt om een betaling voor een bedrag en valuta, de reiziger voert de kaart in op het eigen formulier van de gateway, en de gateway praat met het kaartnetwerk en de uitgevende bank. Je server ziet het kaartnummer nooit; hij krijgt een betaal-ID en een status terug.

Vier partijen doen mee. Het diagram toont ze als kolommen en elk bericht als genummerde pijl. De namen verschillen per gateway (payment intent, sessie, order, charge), maar de volgorde is dezelfde.

Een reiziger betaalt online voor een reis terwijl een boekingssite, een betaalgateway en een bank betaalberichten uitwisselen

De gestippelde pijl is een webhook: de gateway belt je server uit zichzelf, zodat een betaling de boeking ook bijwerkt als de reiziger de browser sluit. De pagina Betaalgateway-integratie legt uit hoe elke stap in PHPTRAVELS aan een boeking hangt.

  • Reiziger
  • Je site
  • Gateway
  • Kaartnetwerk / bank
  1. 01CheckoutReiziger Je site

    De reiziger bekijkt de reis en klikt op Betalen. De boeking wordt vastgehouden bij de leverancier, nog niet bevestigd.

  2. 02Payment intent of sessie aanmakenJe site Gateway

    Je server stuurt bedrag, valuta, boekingsreferentie en een idempotentiesleutel mee met zijn geheime API-sleutel. De gateway geeft een betaal-ID terug.

  3. 03Gehoste velden of redirectGateway Reiziger

    Het kaartformulier komt van de gateway, binnen je pagina of op zijn eigen pagina, zodat kaartgegevens rechtstreeks daarheen gaan.

  4. 043-D SecureKaartnetwerk / bank Reiziger

    Als de uitgevende bank erom vraagt, bevestigt de reiziger de betaling in de bankapp of met een eenmalige code.

  5. 05AutoriserenGateway Kaartnetwerk / bank

    De gateway vraagt de uitgever via het kaartnetwerk het bedrag goed te keuren.

  6. 06Goedgekeurd, geld gereserveerdKaartnetwerk / bank Gateway

    De uitgever reserveert het geld op de kaart. Er is nog niets verplaatst.

  7. 07Resultaat naar je siteGateway Je site

    De reiziger keert met het betaal-ID terug naar je site. Je server leest de status uit de API en bevestigt de boeking bij de leverancier.

  8. 08CaptureJe site Gateway

    Zodra de leverancier bevestigt, capturet je server het volledige of een lager bedrag. Veel gateways kunnen ook direct capturen.

  9. 09WebhookGateway Je siteDoor de gateway uit zichzelf verstuurd

    De gateway stuurt een ondertekende gebeurtenis (betaling gecaptured, terugbetaald, betwist) naar je endpoint. Je server controleert de handtekening en werkt de boeking bij.

Betalingsstatussen

Het leven van een betaling als toestandsmachine

Elke gateway-API meldt een status voor elke betaling. De termen verschillen, maar ze komen neer op dezelfde paar toestanden, en je boekingslogica moet op elk ervan reageren.

  1. created

    Aangemaakt

    De betaling bestaat met bedrag en valuta en wacht op de reiziger.

    failedEindstatus

    Mislukt

    Geweigerd, 3-D Secure niet voltooid of afgebroken. Er wordt niets in rekening gebracht.

  2. authorized

    Geautoriseerd

    De uitgever heeft het bedrag goedgekeurd en houdt het vast op de kaart.

    voidedEindstatus

    Geannuleerd

    De reservering wordt vóór de capture ingetrokken, zodat de reiziger nooit wordt belast.

  3. captured

    Gecaptured

    Het geld is afgeschreven en wordt uitbetaald op je merchantrekening.

    partially_refundedEindstatus

    Gedeeltelijk terugbetaald

    Een deel van het gecapturede bedrag gaat terug, bijvoorbeeld na annuleringskosten.

    refundedEindstatus

    Terugbetaald

    Het hele gecapturede bedrag gaat terug naar de kaart.

Een autorisatie duurt niet eeuwig: wordt hij niet op tijd gecaptured, dan verloopt de reservering en geeft de bank het geld vrij. Een gedeeltelijk terugbetaalde betaling kan verder worden terugbetaald, tot het gecapturede bedrag.

Waarom reizen lastiger is

Waarom reisbetalingen anders zijn

Een winkel verkoopt wat hij op voorraad heeft. Een reisverkoper neemt geld aan voor een boeking die een leverancier nog moet bevestigen, vaak maanden voor de reis. De betaal-API moet daarbij passen.

  • 01

    Nu autoriseren, later capturen

    Hotels op aanvraag, groepstarieven en tours worden uren of dagen na de bestelling bevestigd. Eerst autoriseren en capturen bij bevestiging betekent: geen afschrijving voor een boeking die nooit doorgaat.

  • 02

    De leverancier kan nog nee zeggen

    Een tarief kan tussen betaling en ticketing uitverkocht raken. Bij een autorisatie geef je het geld vrij met een void; na de capture wordt het een terugbetaling.

  • 03

    Gedeeltelijke terugbetalingen na annuleringskosten

    Bij het annuleren van een verblijf of ticket blijven meestal kosten staan. De terugbetaalaanroep stuurt een lager bedrag tegen de oorspronkelijke betaling, zo vaak als de regels vragen.

  • 04

    Meerdere valuta

    Reizigers betalen in hun valuta terwijl leveranciers in de hunne factureren. De gateway moet de weergavevaluta ondersteunen en je administratie moet beide bedragen bewaren.

  • 05

    Fraudecontroles bij hoge bedragen

    Tickets voor morgen, voor iemand anders, betaald met een nieuwe kaart: een klassiek fraudepatroon. 3-D Secure, de risicoscore van de gateway en een handmatige controlewachtrij beschermen bestellingen met een hoge waarde.

  • 06

    Chargebacks maanden later

    Betwistingen komen vaak pas na de reis. Bewaar het authenticatieresultaat, de boekingsdocumenten en de gateway-events bij elkaar, zodat je met bewijs kunt antwoorden.

Betaalmethoden

Welke betaalwijzen een betaalgateway-API dekt

Kaarten zijn maar één optie. Reizigers en agenten betalen op verschillende manieren, en elke methode wordt anders terugbetaald.

MethodeWat het isWanneer het geld binnenkomtTerugbetalingen
KaartenDebet- en creditcards via de gateway, met 3-D Secure waar de uitgever dat eist.Geautoriseerd bij checkout; direct gecaptured of zodra de leverancier bevestigt.Volledige of gedeeltelijke terugbetaling naar dezelfde kaart via de API.
Digitale walletsWalletaccounts die de gateway ondersteunt, zoals PayPal of een mobiele wallet met een getokeniseerde kaart.Bij checkout, nadat de reiziger in de wallet goedkeurt.Terug naar de wallet of de kaart erachter, via de gateway.
BankoverschrijvingDe reiziger of agent maakt geld over naar je bankrekening en de betaling wordt aan de boeking gekoppeld.Dagen later; de boeking wacht tot je team de ontvangst bevestigt.Terugbetaald per overschrijving, buiten de gateway om.
Later betalenDe boeking wordt nu gemaakt en later betaald; je team registreert de betaling zodra die binnenkomt.Na de boeking, wanneer de reiziger betaalt.Alleen wat daadwerkelijk is betaald, wordt terugbetaald.
B2B-agentwallet of -kredietSubagenten betalen met een vooraf gestort saldo of met een kredietlimiet die jij toekent.Afgeschreven bij de boeking; borg en krediet worden afgerekend volgens jouw voorwaarden.Teruggeboekt op het saldo van de agent.

Bankoverschrijving, later betalen en walletsaldo zijn afrekenopties van het platform zelf, geen gateways. Agentsaldi en kredietlimieten staan op de pagina B2B-agentwallet; bankbetalingen op de pagina Betalen per bankoverschrijving.

Klaar in PHPTRAVELS

Betaalgateway-API's die al gekoppeld zijn

Deze gateways zijn al gekoppeld aan PHPTRAVELS. Je opent een merchantaccount bij de aanbieder, voert je API-sleutels in de admin in, test in zijn sandbox en gaat live. De lijst komt live uit onze integratiegids.

Tarieven en merchantgoedkeuring regel je met het betaalbedrijf, niet met PHPTRAVELS. Een gateway die hier ontbreekt, kan worden toegevoegd als API-integratie op maat, en de pagina Betaalgateway-integratie legt uit hoe elke gateway wordt ingesteld.

Beveiliging

Kaartgegevens buiten je systeem houden

Het veiligste kaartnummer is het nummer dat je server nooit ontvangt. Een betaalgateway-API is zo gebouwd dat dat niet hoeft.

  • Sla nooit kaartnummers op

    Kaartgegevens gaan naar de gateway, die een token of betaal-ID teruggeeft. Je database bewaart die verwijzing, nooit het kaartnummer of de beveiligingscode.

  • Gehoste velden en redirects verkleinen de PCI DSS-scope

    PCI DSS geldt voor iedereen die kaartgegevens verwerkt. Als het kaartformulier de pagina van de gateway is of ingebedde velden, valt veel minder van je systeem binnen de scope. Je acquirer bevestigt welke zelfbeoordeling voor jou geldt.

  • Webhooks gecontroleerd op handtekening

    Elke webhook draagt een handtekening die met een gedeeld geheim is gemaakt. Je server berekent die opnieuw en wijst elke gebeurtenis af die niet klopt, zodat niemand een betaalde boeking kan vervalsen.

  • Geheime sleutels blijven op de server

    De browser krijgt alleen een publieke sleutel. De geheime sleutel die betalingen en terugbetalingen aanmaakt, staat in je serverconfiguratie, en elk verzoek draagt een idempotentiesleutel zodat een nieuwe poging nooit dubbel afschrijft.

webhook.php
 1$payload   = file_get_contents("php://input"); 2$signature = $_SERVER["HTTP_X_SIGNATURE"] ?? ""; 3$expected  = hash_hmac("sha256", $payload, $webhookSecret); 4 5if (!hash_equals($expected, $signature)) { 6    http_response_code(400); exit;      // reject 7} 8$event = json_decode($payload, true); 9if (alreadyHandled($event["id"])) exit; // repeat delivery10updateBooking($event["data"]["metadata"]["booking_ref"], $event["type"]);

Algemeen voorbeeld. Headernamen en de ondertekeningsmethode volgen de gateway die je kiest.

PHPTRAVELS is zelf gehoste software, dus PCI DSS-naleving wordt beoordeeld voor jouw bedrijf en jouw server, niet voor de software alleen.

Zie een boeking betaald, gecaptured en terugbetaald

Boek een reis in de live demo en volg de betaling in de admin. Met het Enterprise-plan krijg je van PHPTRAVELS ook een eigen REST API en webhooks voor je apps en partners.

Ook vluchten in de planning? De pagina Vluchten-API legt de leverancierskant uit, en Reis-API's somt elke API op die PHPTRAVELS koppelt.

FAQ

Betaalgateway-API: vragen van reisverkopers

Praat met sales

Een set webservices van een betaalbedrijf waarmee een website betalingen kan aanmaken, de kaart ter goedkeuring naar de bank kan sturen, geld kan capturen, terugbetalingen kan doen en statusupdates per webhook kan ontvangen, zonder zelf kaartgegevens op te slaan.

De gateway is het deel waarmee je website praat: hij verzamelt de kaart veilig en geeft het verzoek door. De verwerker brengt de transactie via de kaartnetwerken naar de uitgevende bank. Veel aanbieders leveren beide als één dienst.

Die je bedrijf accepteert, de landen, valuta en betaalmethoden van je klanten ondersteunt en apart autoriseren en capturen plus gedeeltelijke terugbetalingen biedt. Veel bureaus combineren een wereldwijde kaartgateway met een regionale.

Autoriseren reserveert het bedrag op de kaart van de reiziger; capturen neemt het af. Door beide te scheiden reken je pas af zodra de leverancier de boeking bevestigt, en trek je de reservering in als dat niet gebeurt.

In veel regio's, waaronder de Europese Economische Ruimte en het VK, is sterke klantauthenticatie vereist voor de meeste online kaartbetalingen, en 3-D Secure is hoe kaarten daaraan voldoen. De gateway-API regelt de controle; je boekingsflow wacht op het resultaat.

Niet vanzelf. Gehoste velden of de betaalpagina van de gateway houden kaartgegevens van je server af en verkleinen je PCI DSS-scope, maar je rondt nog steeds de beoordeling af die je acquirer vraagt.

Ja, als de gateway gedeeltelijke terugbetalingen ondersteunt, wat de meeste kaartgateways doen. Je stuurt een terugbetaling voor een lager bedrag tegen de oorspronkelijke betaling, bijvoorbeeld de prijs min annuleringskosten.

Nee. Je opent een merchantaccount bij de gateway van je keuze en spreekt de tarieven met hen af. PHPTRAVELS koppelt je boekingsplatform aan dat account met de API-sleutels die je in de admin invoert.

Ja. Elke gateway met een gedocumenteerde API kan als maatwerkintegratie worden toegevoegd, en omdat de broncode erbij zit, kunnen je ontwikkelaars ook de betaalflow uitbreiden.