Skip to content

Betaalmethoden: meer dan iDEAL via Mollie

De winkel betaalt via Mollie. Standaard is alleen iDEAL aan, met de bankkeuze in de checkout. Met de schakelaar in de admin laat de winkel de methode aan Mollie over: de klant kiest dan op de betaalpagina van Mollie uit alles wat in het Mollie-dashboard aanstaat.

Code: backend/apps/payments/services.py (create_payment; zonder vaste method als de schakelaar aanstaat), views.py (webhook slaat de gekozen methode op in Payment.method), frontend/app/(shop)/checkout/page.tsx (bankkeuze of uitleg). Tests: apps/payments/tests/test_alle_betaalmethoden.py.

Eenmalig inrichten (Ivar)

  1. Mollie-dashboard → Instellingen → Websiteprofielen → Betaalmethoden. Zet aan wat je wilt aanbieden. Zonder aanvraag beschikbaar: creditcard (Visa, Mastercard, Amex), PayPal, Bancontact (België), Apple Pay, bankoverschrijving. Met aanvraag en eigen tarieven: Klarna (achteraf betalen, in termijnen) en Riverty. Aanvragen kan in hetzelfde scherm; Mollie beoordeelt het binnen enkele dagen.
  2. Apple Pay. Werkt zonder extra stappen: de klant betaalt op de betaalpagina van Mollie, en Apple Pay is daar al geverifieerd. Domeinverificatie is alleen nodig als Apple Pay op de eigen site zou staan, en dat doet de winkel niet.
  3. Tarieven. Per methode verschillend; staan bij elke methode in het dashboard. iDEAL is een vast bedrag per transactie, creditcard en PayPal een percentage. Dat is Ivars afweging; de code rekent niets door aan de klant.
  4. Test-modus. Op staging staat een test-sleutel van Mollie (MOLLIE_API_KEY begint met test_). Methoden die in het dashboard aanstaan, zijn in test-modus ook te kiezen, met nagebootste uitkomsten (betaald, mislukt, verlopen).

Aanzetten (Eefje)

Admin → Instellingen → Voorraad & functies → "Alle betaalmethoden van Mollie aanbieden" → bij "Welke methoden staan in Mollie aan?" aanvinken wat in het Mollie-dashboard aanstaat (iDEAL staat altijd aan) → Opslaan. Vanaf dan:

  • de checkout toont in plaats van de bankkeuze een blok "Betaalmethode" met de uitleg dat de klant op de betaalpagina van Mollie kiest, met precies de aangevinkte methoden; de knop Betalen werkt zonder bankkeuze;
  • "Opnieuw betalen" op de bedankt-pagina gaat meteen naar Mollie;
  • de betaalpagina van Mollie toont alle methoden die in het dashboard aanstaan;
  • de USP-balk op de homepage noemt de aangevinkte methoden ("Betaal met iDEAL, creditcard of PayPal"); met alleen iDEAL blijft het "Betaal eenvoudig en beveiligd met iDEAL" (#790, #791).

Uitzetten brengt de bankkeuze en de iDEAL-tekst terug. Lopende betalingen hebben er geen last van.

Let op: de vinkjes sturen alleen de teksten in de winkel; de code dwingt bij Mollie niets af. Wat in het dashboard uitstaat, verschijnt niet op de betaalpagina, ook al is het aangevinkt. En de FAQ (Admin → Pagina's) noemt nog alleen iDEAL; pas die zelf aan als meer methoden aanstaan.

Wat de klant meemaakt

  1. Checkout invullen, voorwaarden aanvinken, Betalen.
  2. Betaalpagina van Mollie: keuze uit de methoden, dan de eigen bank, kaart, PayPal of Apple Pay. Bij Klarna of Riverty doet Mollie de toets en krijgt de klant de betaalvoorwaarden van die partij.
  3. Terug op de bedankt-pagina. De bestelling staat op "Betaald" zodra Mollie dat meldt; bij achteraf betalen is dat direct, Mollie draagt het risico.
  4. In de Django-admin staat bij de betaling welke methode de klant koos (method); in de transactie-export ook.

Terugbetalen

Gaat zoals altijd via Admin → Bestellingen → Terugbetalen. Mollie betaalt terug via de methode waarmee betaald is; de code neemt niets aan over iDEAL. Klarna- en Riverty-terugbetalingen lopen via Mollie en duren soms enkele dagen.

Storingen

  • Vinkje aan, toch alleen iDEAL op de betaalpagina: de methoden staan niet aan in het Mollie-dashboard, of staan aan op een ander websiteprofiel dan dat van de gebruikte API-sleutel.
  • Methode ontbreekt op de betaalpagina terwijl hij aanstaat: Mollie laat methoden weg die niet bij het bedrag of het land van de klant passen (Klarna heeft een minimum en maximum, Bancontact is voor België).
  • Betaling blijft "Open": zelfde controle als bij iDEAL: Mollie → Betalingen, en de webhook-log in Sentry. De herstelt-taak van elk uur (recover_incomplete_paid_orders) vangt een gemiste webhook op.