Stop met het refunden van betalingen die je nooit had mogen afschrijven

Veel ontwikkelaars implementeren een checkout-flow waarbij de kaart direct wordt afgeschreven. Daarna voeren ze ordervalidatie uit, zoals voorraadcontroles of fraudedetectie.

Als de validatie mislukt, voert de code een refund uit.

Dit zorgt voor problemen bij je klanten. Ze zien een afschrijving en vervolgens dagen later een refund. Ze denken dat je bedrijf onbetrouwbaar is. Ze denken dat hun geld vaststaat.

Refunds brengen echte kosten met zich mee:

De oplossing is om het authorize-en-capture-model te gebruiken.

De meeste tutorials leren je om geld direct te 'capturen'. In plaats daarvan moet je eerst een 'hold' op de fondsen plaatsen. Een hold staat op de kaart zonder dat het geld daadwerkelijk wordt verplaatst. Als je validatie mislukt, annuleer je simpelweg de hold. Er vindt dan nooit een afschrijving plaats op het afschrift van de klant.

In Stripe doe je dit door de capture_method op manual te zetten.

De nieuwe flow werkt als volgt:

  1. Maak een PaymentIntent aan met manual capture.
  2. De fondsen worden geautoriseerd, maar niet verplaatst.
  3. Voer je ordervalidatie uit.
  4. Als de order geldig is, capture je de betaling.
  5. Als de order mislukt, annuleer je de intent.

Deze aanpak biedt verschillende voordelen:

De meeste grote betalingsproviders gebruiken dezelfde logica.

Gebruik deze methode als een deel van je bedrijfslogica kan mislukken nadat een klant op 'betalen' heeft geklikt. Verplaats je risicovolle controles naar de periode tussen de autorisatie en de capture. Dit houdt je geldstromen overzichtelijk en je klanten tevreden.

Bron: https://dev.to/jguillaumesio/stop-refunding-payments-you-should-never-have-charged-4d7m