Betalingen werken in test, maar niet live
De testbetaling gaat door en de echte niet. Vijf oorzaken, waarvan er één zo vaak voorkomt dat je daar het beste kunt beginnen.
Betalen is het onderdeel waar 'bijna werkend' het duurste is. Een lijst die niet laadt kost je een klacht; een betaling die wel geïnd wordt maar niet in je systeem aankomt kost je een klant. De oorzaken zijn gelukkig beperkt in aantal.
1. Je hebt de sleutels niet omgezet
Verreweg de meest voorkomende, en de makkelijkst te missen omdat er niets kapotgaat: met testsleutels op je live site werkt alles, alleen wordt er nooit echt geld verplaatst. Testsleutels en echte sleutels lijken op elkaar; het verschil zit meestal in één woord in de sleutel zelf. Controleer ze allebei, ook die van de webhook.
2. De webhook wijst nog naar je testomgeving
De betaaldienst meldt aan jouw app dat er betaald is. Staat dat adres nog op je previewlink of op localhost, dan wordt de betaling wél geïnd, maar hoort je app er nooit van. Symptoom: geld binnen, bestelling blijft op 'in afwachting' staan. Dit is de reden dat je klant belt terwijl je dashboard zegt dat alles goed ging.
3. De webhook komt aan maar wordt geweigerd
Elke melding is ondertekend, en de sleutel waarmee je die handtekening controleert is een andere dan je gewone sleutel, en verschilt ook weer tussen test en live. Klopt hij niet, dan wijst je app elke melding af. Alle betaaldiensten laten in hun dashboard zien wat ze gestuurd hebben en wat jouw app antwoordde; daar staat het letterlijk.
4. Je account is nog niet vrijgegeven
Live betalingen aannemen vereist een goedgekeurd account: KvK-gegevens, een bankrekening, soms een identiteitscontrole. Zolang dat loopt, werkt de testmodus gewoon en de echte niet. Dit kost dagen, niet minuten, dus begin eraan voordat je live wilt.
5. Andere betaalmethodes dan in test
In Nederland betaalt de meerderheid met iDEAL, en dat werkt anders dan een creditcard: de klant gaat weg naar zijn bank en komt terug. Test je alleen met een testkaart, dan test je nooit het pad waar je klanten echt langs gaan, inclusief het geval waarin ze halverwege afhaken.
De volgorde waarin je het nakijkt
- Kijk in het dashboard van je betaaldienst of de betaling er staat. Staat hij er niet, dan is het oorzaak 1 of 4.
- Staat hij er wel: kijk bij de webhooks of je app een antwoord heeft gegeven. Geen poging is oorzaak 2, een afgewezen poging is oorzaak 3.
- Doe altijd één echte betaling van een euro naar jezelf, met de betaalmethode die je klanten gebruiken. Terugstorten kan, alleen krijg je de transactiekosten daarvan niet terug; die test kost je dus een paar cent en geen euro.
Testmodus bewijst dat je code klopt. Alleen een echte euro bewijst dat je opzet klopt.
Welke dienst daarbij het beste past staat in Stripe of Mollie kiezen. Loopt het bij jou vast op de koppeling zelf, stuur dan even wat je ziet; dit is meestal een kwestie van uren, niet dagen.