We hebben een terugbetaling uitgevoerd op ons eigen account om te controleren of het grootboek correct omkeerde. Dat deed het. Toen las iemand de rest van de accountstatus, en daar zat de echte bevinding: het plan was nog actief, en zou dat blijven tot halverwege de volgende maand.
Geld terug, toegang behouden. Herhaalbaar elke maand door iedereen die bereid is op Terugbetalen te klikken. Geen test heeft dit gevonden, want geen test stelde die vraag.
De periode beëindigen die de betaling kocht
Bij een volledige terugbetaling eindigt de periode die die betaling opende nu direct, en een levenscyclusgebeurtenis legt vast waarom.
Direct — maar niet naar het niets. Zat je op een plan, upgradede je naar een duurder plan, en wordt de upgradebetaling terugbetaald, dan ga je terug naar het plan waarop je zat, niet naar het gratis niveau. Die maand betaalde je apart, en die is niet terugbetaald. Die ook nemen zou betekenen dat het platform zich bedient van iets dat de klant nog steeds bezit. Alleen iemand zonder een eerder, nog actief plan valt terug naar gratis.
Toegangsrecht heeft twee helften
De eerste versie van deze correctie beëindigde de abonnementsregel en stopte daar. Maar waar je recht op hebt hangt af van twee dingen: de regel die het budget leest, en een rol die werd toegekend toen de betaling slaagde. Elk ander pad dat een abonnement beëindigt trekt die rol expliciet in. Deze niet, dus zou een terugbetaald account op papier geannuleerd zijn geweest terwijl het de rechten van het betaalde niveau behield.
De rol wordt nu ook ingetrokken, en landt op het niveau van het herstelde plan, niet op een algemeen "gratis" — dezelfde redenering als het herstel zelf.
De provider inlichten
De accountpagina zei Gratis Niveau. Het dashboard van de betalingsprovider zei Actief, volgende facturering volgende maand. De terugbetaling had de zaken aan onze kant beëindigd en de andere kant nooit ingelicht, dus stond de klant in de rij om opnieuw gefactureerd te worden voor een plan waarvoor hij was terugbetaald en dat hij niet meer kon gebruiken — en had geen manier om dat vanaf onze schermen te stoppen, omdat annuleren een actief abonnement vereist, en wij hadden dat van hem net geannuleerd.
Een terugbetaling stopt nu de automatische verlenging bij de provider die de betaling heeft uitgegeven. Geen directe beëindiging: de automatische verlenging stopt, dus beweegt er geen geld meer, en het eigen record van de provider loopt volgens zijn eigen schema af in plaats van weggerukt te worden onder een terugbetaling die hij net heeft verwerkt.
Met één uitzondering, die de eigenaar ontdekte voordat het werd uitgeleverd. Als het plan waarnaar je bent hersteld op hetzelfde provider-abonnement draait, zou annuleren je achterlaten met een plan dat nooit verlengt en nooit factureert — precies het spiegelbeeld van de bug die dit moet oplossen, en even stil. Dat geval wordt nu expliciet benoemd en met rust gelaten.
Alleen de betaling die de periode opende kan die beëindigen
Een upgrade halverwege de maand factureert bij deze provider een klein evenredig verschil op de bestaande regel. Die kleine kosten terugbetalen zou een abonnement hebben gevonden, alles hebben geannuleerd, naar een eerder plan hebben gezocht, niets hebben gevonden, en de klant naar gratis hebben laten vallen — voor een aanpassing halverwege de maand. Nu kan alleen de betaling die de huidige periode opende die beëindigen. Alles daarna is een geldkwestie, en het grootboek heeft die al beantwoord.
Alle vier de rails, niet alleen de actieve
Drie van de vier betalingsverwerkers die we ondersteunen hebben vandaag niemand. De intrekking had alleen op de actieve gecorrigeerd kunnen worden, en dat was bijna zo gebeurd. Het bezwaar dat dat veranderde: de dag dat een van de andere weer wordt geactiveerd, komt het gat terug, en tegen die tijd zal niemand zich meer herinneren dat het er ooit was.
Deze repository heeft dezelfde soort vergeten valkuil al zes keer opgeleverd. De intrekking zit nu achter één contract dat alle vier de verwerkers in één regel aanroepen — zodat een toekomstige beheerder die er een van weer activeert dit krijgt zonder iets hiervan gelezen te hoeven hebben.