Checklist voor casino-API-integratie: wat je bouwt, test en bewaakt vóór de livegang
Een integratie met een casino game API gaat op voorspelbare plekken mis: een debit die bij een retry twee keer wordt afgeschreven, een rollback voor een inzet die je nooit zag, een valuta met drie decimalen. Deze checklist loopt elke laag door in de volgorde waarin een developer ze tegenkomt, met de fout die elke check voorkomt.
Deze checklist voor casino-API-integratie is voor de developer die de API-keys en een deadline heeft. Hij volgt de volgorde waarin je dingen in de praktijk tegenkomt: eerst het contract tussen je wallet en de provider, dan de lobby, dan de launch, dan testen en de eerste week live.
Elk punt bestaat omdat er zonder iets kapotgaat. Vink ze af in een gedeeld document, en stuur de openstaande als vragen naar het integratieteam van de leverancier.
0. Vóór de eerste regel code
- Je hebt de volledige API-documentatie, geen sales-pdf: elk endpoint, elke foutcode, voorbeeldpayloads.
- Je kent het walletmodel. Seamless (de provider roept je server aan bij elke inzet en winst) of transfer (je verplaatst geld naar een saldo aan providerkant). Deze checklist gaat uit van seamless, wat de meeste aggregators verkopen.
- Stagingcredentials en een staging-callback-URL staan los van productie.
- De ondertekening van requests is helder: welke header, welk algoritme (meestal HMAC-SHA256), welke velden worden ondertekend, in welke volgorde.
- Je kent de uitgaande IP-adressen van de provider, als die wil dat je ze op een allowlist zet.
- Je hebt een technisch aanspreekpunt met een naam en een kanaal dat binnen uren antwoordt.
1. Wallet-callbacks
De provider roept je server voor vier dingen aan. Bouw die vóór al het andere.
- Balance. Geeft het huidige besteedbare saldo van de speler terug, in de valuta van de speler.
- Debit (inzet). Schrijft de inzet af als het saldo het toelaat, geeft het nieuwe saldo terug. Onvoldoende saldo geeft de gedocumenteerde foutcode terug, geen 500.
- Credit (winst). Schrijft de winst bij. Een credit van nul is geldig en moet slagen; veel studio’s sturen hem om een verloren ronde af te sluiten.
- Rollback (terugboeking). Draait een specifieke eerdere debit terug.
- Elke response is ondertekend of gevalideerd zoals de docs vereisen.
- Je verifieert de inkomende handtekening bij elke call en weigert foute met de gedocumenteerde code.
- Je endpoint antwoordt ruim binnen de time-out van de provider. Zoek het getal op in de docs. Staat er 3 seconden, mik dan op minder dan 300 ms op het 99e percentiel.
- Bedragen worden opgeslagen als integers in de kleinste eenheid of als decimalen met vaste komma. Nooit als floats.
- Debit en credit dragen een ronde-ID en een game-ID. Sla beide op.
Scenario. Een speler op een trage mobiele verbinding spint. Je debit slaagt, maar de response duurt 4 seconden en de provider geeft het na 3 op. De provider stuurt nu een rollback, of probeert de debit opnieuw, afhankelijk van zijn regels. Secties 2 en 3 bestaan voor dit moment.
2. Idempotentie
- Er staat een unieke constraint op de transactie-ID van de provider in je transactietabel.
- Een herhaalde debit of credit met dezelfde transactie-ID verplaatst geen geld opnieuw. Hij geeft de oorspronkelijke response terug, met dezelfde saldowaarden.
- Een herhaalde call met dezelfde ID maar een ander bedrag wordt geweigerd en luid gelogd. Dat is een bug bij de provider of een aanval.
- Saldowijzigingen en het invoegen van transacties gebeuren in één databasetransactie. Geen moment waarop het een bestaat zonder het ander.
- Gelijktijdige calls voor dezelfde speler worden geserialiseerd (row lock of vergelijkbaar). Twee gelijktijdige debits uit twee open gametabs mogen niet allebei slagen op een saldo dat er maar één dekt.
3. Rollbacks
- Een rollback verwijst naar de debit die hij annuleert. Zoek die op aan de hand van de transactie-ID van de provider.
- Rollback voor een debit die je nooit ontving: leg hem vast als tombstone en geef succes terug (of de gedocumenteerde code). Komt de debit later binnen, dan voorkomt de tombstone dat je hem afschrijft.
- Een rollback voor een debit die al is teruggedraaid, geeft de oorspronkelijke response terug.
- Rollback van een debit waarvan de ronde al een winst heeft: volg de docs precies. Sommige providers verbieden het, andere verwachten dat je beide terugdraait.
- Rollbacks brengen een saldo nooit in een onverklaarbare toestand. Kunnen ze het negatief maken, leg dan nu de regel vast en schrijf hem op.
4. Rondes en onafgemaakte games
- Je ziet welke rondes open staan (debit ontvangen, geen afsluitende credit).
- Je weet hoe de provider verouderde rondes sluit: automatische credit na een time-out, een handmatige tool of een supportticket.
- Winsten uit bonussen en free rounds zijn getagd, zodat je bonuslogica ze anders kan behandelen dan cashwinsten.
- Je backoffice toont per speler een volledige rondehistorie: elke call, elke response, tijdstempels.
5. Valuta
- Elke speler heeft één vaste valuta, ingesteld bij registratie, meegestuurd bij de launch en teruggegeven in elke callback.
- Je controleert of de valuta in de callback overeenkomt met die van de speler, en weigert afwijkingen.
- Het aantal decimalen klopt per valuta. De meeste fiat gebruikt er twee, sommige nul, sommige drie. Crypto kan er acht of meer gebruiken; spreek met de leverancier af welke precisie over de lijn gaat.
- Elke game die je toont, ondersteunt de valuta waarin je hem toont ook echt. Een studio kan EUR en USD ondersteunen maar geen BDT of ETB.
- Inzetlimieten per valuta zijn logisch. Een minimale inzet die in EUR klein is, kan in IDR vreemd ogen of in BTC heel groot zijn.
- Weergavevaluta en afrekenvaluta lopen in rapporten niet door elkaar.
6. Sync van de gamelijst
- De gamelijst wordt volgens een schema uit de API gehaald, minstens dagelijks, en lokaal opgeslagen.
- Uitgezette of verwijderde games verdwijnen bij de volgende sync uit de lobby, niet volgend kwartaal.
- Nieuwe games komen in een reviewstatus terecht, niet direct in de lobby, als je zelf selecteert.
- Je slaat de stabiele game-ID van de provider op, niet de naam. Namen veranderen.
- Afbeeldingen worden aan jouw kant gecachet of geserveerd in een formaat dat bij mobiel past.
- Elke game draagt categorie, studio, apparaatondersteuning en valutaondersteuning, zodat lobbyfilters niet liegen.
- Studio’s die voor een markt uitstaan, worden gefilterd volgens je eigen regels, niet aan het toeval overgelaten.
7. Launch-URL’s
- Een launch met echt geld geeft een kortlevend sessietoken mee dat aan de speler gekoppeld is. Nooit een wachtwoord of herbruikbare ID.
- Het verlopen van een token wordt afgehandeld: een oude tab toont een heldere melding, geen kapot kader.
- Taal, valuta, apparaattype en de URL voor terugkeer naar de lobby worden bij de launch ingesteld.
- Een URL voor storting of kassa wordt meegegeven waar de game dat ondersteunt, zodat “onvoldoende saldo” ergens naartoe leidt.
- De game opent correct in een iframe en in een nieuw venster. Sommige studio’s blokkeren iframes op bepaalde domeinen of browsers.
- Demolaunches, als die worden aangeboden, raken nooit de echte wallet. Test dat expliciet.
- De tijd van klik tot eerste frame wordt gemeten op een middenklasse telefoon via 4G. Boven de 5 seconden verlies je spelers.
8. Testen
- Een testspeler per valuta die je gaat ondersteunen.
- Eén volledige ronde per gametype: slot, live tafel, crash, tafelspel, virtual.
- Geforceerde fouten: je server geeft een time-out, een 500, een code voor onvoldoende saldo. Kijk wat de provider daarna doet.
- Dubbele calls met de hand opnieuw afgespeeld: twee keer debit, twee keer credit, twee keer rollback.
- Calls in de verkeerde volgorde: rollback vóór debit, credit na rollback.
- Twee tabs, dezelfde speler, tegelijk aan het spinnen.
- Een sessie die midden in een game verloopt.
- Een grote winst en een winst van nul.
- Je afstemmingsrapport komt voor de testperiode tot op de cent overeen met het rapport van de provider.
9. Livegang
- Productiekeys en callback-URL omgezet, staging uitgezet voor productiespelers.
- Monitoring op callbacklatentie, foutpercentage en mislukte handtekeningen, met alarmen naar een persoon, niet naar een dashboard dat niemand opent.
- Dagelijkse afstemmingsjob: jouw totalen per game en per valuta tegenover die van de provider.
- Bij prepaid modellen een alarm voor laag tegoed ruim boven nul, en iemand die op zondag kan aanvullen.
- Een noodschakelaar per game en per studio in je backoffice.
- Het supportkanaal en de escalatiecontactpersoon van de leverancier staan in je runbook.
10. De eerste zeven dagen
- Check elke ochtend de afstemming.
- Loop alle geweigerde callbacks en open rondes na.
- Volg launchfouten per studio; één slechte studio kan een hele lobby omlaag trekken.
- Vraag de leverancier om hun kant van de foutlogs en vergelijk.
Een klein team dat een cryptomerk lanceert, komt in een week door deze lijst als de documentatie van de leverancier degelijk is. Zijn de docs dun, dan is de lijst ook een goede test van de leverancier: tel hoeveel punten je moest navragen. De ranglijst seamless wallet en de pagina aggregators voor nieuwe operators scoren leveranciers op precies dit soort integratiewerk.
Vragen die kopers stellen
Hoe lang duurt een casino-API-integratie?
Met een seamless-wallet-API en een developer die het al eens gedaan heeft, duurt een basislancering dagen tot een paar weken. De meeste tijd gaat naar de wallet-callbacks en hun randgevallen, niet naar het starten van games. Een team dat het voor het eerst doet, plant beter twee tot vier weken inclusief testen.
Wat is het lastigste deel van een integratie met een casino game API?
De wallet. Je server moet calls voor balance, debit, credit en rollback snel beantwoorden, elke transactie precies één keer verwerken en consistent blijven als calls te laat, dubbel of in de verkeerde volgorde binnenkomen.
Wat betekent idempotentie bij wallet-callbacks van een casino?
Stuurt de provider dezelfde transactie twee keer, dan verwerkt je wallet hem één keer en geeft beide keren hetzelfde antwoord. Dat dwing je af met een unieke sleutel op de transactie-ID van de provider en door de response die je stuurde op te slaan.
Moet ik de gamelijst automatisch synchroniseren?
Ja. Haal de lijst volgens een schema op, minstens dagelijks. Studio's voegen games toe, hernoemen ze en zetten ze uit zonder operators te informeren. Een handmatige lijst veroudert binnen weken en spelers klikken op dode tegels.
Wat moet ik na de livegang bewaken?
Responstijden en foutpercentages van callbacks, mislukte en opnieuw geprobeerde transacties, dagelijkse afstemming met het rapport van de provider en, bij prepaid modellen, het saldo van het tegoed. Zet op elk ervan een alarm, vóórdat spelers het merken.