Ticketverkoop koppelen aan je bestaande website (met code­voorbeelden)

Heb je al een website voor je vereniging, sportclub of organisatie? Dan hoef je je bezoekers niet weg te sturen om tickets te kopen. MijnEvent draait als drop-in op je eigen site: je plakt één scriptregel en een div, en de ticketwidget verschijnt — inclusief checkout, zonder dat de bezoeker je site verlaat. Het krachtigste onderdeel is de ledenkoppeling: omdat het lid al is ingelogd op jóuw website, kan die website per aankoop een ondertekend token meegeven dat zegt "dit is een lid". MijnEvent kent dan automatisch de ledenprijs of gratis toegang toe, terwijl externen het normale tarief betalen. Er wordt niets gesynchroniseerd of gekopieerd — je ledenadministratie blijft de bron van waarheid en de status klopt altijd op het koopmoment. Hieronder laten we zien hoe je het toepast, met een werkend codevoorbeeld voor ontwikkelaars. De stap-voor-stap-insteluitleg voor beheerders staat in het kennisbankartikel Leden gratis, externen betalen.

1. De widget op je site (aanbevolen: de script-embed)

In je beheer onder Integraties staat de embedcode klaar. De aanbevolen variant is één scriptregel plus één div — de widget meet zijn eigen hoogte en past de iframe automatisch aan, dus je hoeft geen vaste hoogte te gokken:

<div data-mijnevent-event="zomerfeest-2026"></div>
<script src="https://jouwclub.mijnevent.nl/embed.js" async></script>

Je kunt meerdere events op één pagina zetten door meerdere div's te plaatsen. Er is ook een eenvoudige iframe-variant, maar die vereist dat je de hoogte zelf vastzet (bij lange ticketlijsten of de checkout-stap wordt de inhoud dan afgeknipt) — gebruik die alleen als je geen script mag plaatsen.

2. Een ledenprijs of besloten ticketsoort

Bij een ticketsoort stel je in het beheer twee dingen in:

  • Toegang: Openbaar of Alleen voor leden (besloten ticketsoorten zijn verborgen voor het publiek).
  • Ledenprijs: leeg (leden betalen normaal), 0 (gratis voor leden) of een lager bedrag (ledenkorting).

3. Het leden-token (voor ontwikkelaars)

Wanneer een ingelogd lid op je site tickets koopt, ondertekent je server een kortlevend JWT met de geheime sleutel uit Integraties. Het is een gewone HS256-token; je hebt er geen library voor nodig:

<?php
// Op je eigen server, voor een ingelogd lid:
function mijneventMemberToken(string $keyId, string $secret, array $claims): string {
    $b64 = fn ($d) => rtrim(strtr(base64_encode($d), '+/', '-_'), '=');
    $header  = $b64(json_encode(['typ' => 'JWT', 'alg' => 'HS256', 'kid' => $keyId]));
    $payload = $b64(json_encode($claims));
    $sig     = $b64(hash_hmac('sha256', "$header.$payload", $secret, true));
    return "$header.$payload.$sig";
}

$token = mijneventMemberToken('mek_...', 'msk_...', [
    'aud'     => 'jouwclub',              // jouw organisatie-ID
    'sub'     => $member->id,             // lidnummer
    'email'   => $member->email,
    'scope'   => 'event:zomerfeest-2026', // beperk tot één event
    'max_qty' => 2,                       // bv. lid + 1 introducé
    'iat'     => time(),
    'exp'     => time() + 900,            // 15 minuten geldig
]);

Geef het token mee aan de widget — server-side gerenderd, zodat de geheime sleutel nooit in de browser komt:

<div data-mijnevent-event="zomerfeest-2026" data-member-token="<?= $token ?>"></div>
<script src="https://jouwclub.mijnevent.nl/embed.js" async></script>

Wat MijnEvent controleert

Bij het tonen én bij het afrekenen verifieert MijnEvent het token opnieuw: de handtekening (via de kid → geheime sleutel), de aud (moet jouw organisatie zijn), de exp (verloopt), en een eenmalig jti tegen hergebruik. Daarnaast bepaalt scope welk event wordt ontsloten en max_qty hoeveel ledentickets de ledenprijs krijgen. Is het token ongeldig of verlopen, dan wordt de bezoeker simpelweg als betalende externe behandeld — niets breekt.

Endpoints

  • POST /api/members/verify-token — controleer een token (read-only) om vóór de checkout de ledenprijzen en besloten ticketsoorten te tonen.
  • POST /api/checkout — geef het token mee als member_token; de ledenprijs wordt toegepast en besloten ticketsoorten worden vrijgegeven.

Wanneer kies je wat?

  • Clubsite met ledenlogin → de tokenkoppeling (deze aanpak). Altijd in sync, geen ledenlijst nodig.
  • Geen ledenlogin → unieke kortingscodes per lid (eenvoudiger, handmatiger).
  • Groot ledenpakket (Conscribo, AllUnited, Sportlink, LISA) → maatwerk-koppeling; neem contact op.

Aan de slag

Stel het in een avond op: maak een API-sleutel aan, zet een ledenprijs op een ticketsoort, en plaats de embed. De volledige beheerdershandleiding staat in het kennisbankartikel Leden gratis, externen betalen; meer uitleg vind je in de kennisbank. Vragen over de opzet voor jouw organisatie? We denken graag mee.

Terug naar blog
MijnEvent

Klaar om te beginnen?

Maak gratis een account aan en verkoop je eerste tickets vandaag nog.