DataFirefly Subscriptions — Volledige handleiding (PrestaShop 8 & 9)
Installatie, betaalmethoden (kaart, SEPA-incasso, PayPal, offline facturatie), formules, planner, herinneringen, klantenaccount en back-office van de abonnementsmodule voor PrestaShop 8 en 9.
Overzicht
Met DataFirefly Subscriptions verkoopt u uw producten als abonnement op PrestaShop 8 en 9. U maakt formules aan (frequentie, korting, gratis proefperiode, inschrijfkosten, minimale looptijd, aantal leveringen); de klant kiest zijn formule op de productpagina en betaalt de eerste bestelling, waarna elke vervaldatum automatisch een echte PrestaShop-bestelling aanmaakt, die automatisch wordt betaald met de betaalmethode die de klant heeft opgeslagen (kaart, SEPA-incasso of PayPal) of wordt aangemaakt in afwachting van betaling (offline facturatie).
- Abonnementsprijs overal zichtbaar: korting, gratis proefperiode en inschrijfkosten worden toegepast in de winkelwagen, bij het afrekenen, op de bestelling en op de factuur.
- Eén facturatie-engine: de planner van de winkel; elk abonnement wordt vóór de verlenging gereserveerd, zodat twee gelijktijdige uitvoeringen nooit twee keer afschrijven.
- De klant beheert alles vanuit zijn account: een levering overslaan, pauzeren, formule, hoeveelheid, adres of betaalmethode wijzigen, opzeggen.
- Volledige back-office: dashboard, lijst van abonnees, abonnementspagina met tijdlijn, formule-editor met voorbeeld.
Nieuw in 3.0.0: SEPA-incasso (via Stripe of met een pain.008-bankbestand) en PayPal, offline facturatie en testmodus, inschrijfkosten, echt gratis proefperiode, korting vanaf de 1e bestelling, pauze met automatische hervatting, wijziging van formule en hoeveelheid door de klant, wijziging van betaalmethode, opzegging aan het einde van de minimale looptijd, herinnering vóór verlenging, klantengroep “abonnees”, nieuw dashboard, e-mails in 8 talen, cron via de opdrachtregel.
Abonnement of terugkerende bestelling? DataFirefly Subscriptions maakt de bestellingen aan op de vervaldatum en laat ze automatisch betalen (of factureert ze). Wilt u de klant liever vóór elke vervaldatum een winkelwagen sturen die klaar is om te betalen, zonder automatische afschrijving, kijk dan naar de module DF Recurring Orders.
Installatie en update
- Download het ZIP-bestand vanuit uw DataFirefly-account.
- Back-office: Modules → Modulebeheer → Upload een module en kies het ZIP-bestand.
- Het menu Bestellingen → Abonnementen verschijnt: Dashboard, Abonnees, Formules, Activiteit, Instellingen, SEPA-incasso’s.
Vereisten: PrestaShop 8.0 t/m 9.x, PHP 7.4 t/m 8.5, een geplande taak (cron) bij uw hostingprovider; afhankelijk van de gekozen betaalmethoden: een Stripe-account (kaart, SEPA-incasso via Stripe), een PayPal Business-account dat in aanmerking komt voor de PayPal-vault (door de verkoper geïnitieerde betalingen), of een SEPA-incassant-ID (ICS) en een bank die pain.008-incassobestanden accepteert. Geen Composer-afhankelijkheden.
Update vanaf 2.x: installeer het ZIP-bestand van 3.0.0 over de bestaande module heen. De migratie voegt de nieuwe kolommen toe, herstelt de lege datums die door 2.x zijn opgeslagen, neemt de winkel, valuta en taal van elk abonnement over, behoudt uw instellingen (een 2.x-winkel met Stripe houdt de kaart als betaalmethode) en verwijdert bestanden die niet meer nodig zijn. Er gaat geen enkel abonnement verloren.
Bij het verwijderen van de module worden de abonnementen standaard bewaard en na een herinstallatie teruggevonden; de optie “Alle abonnementsgegevens verwijderen bij het verwijderen van de module” wist alles.
De betaalmethoden kiezen
Abonnementen → Instellingen → Betaling biedt twee modi:
- Opgeslagen betaalmethode: automatische verlengingen — u vinkt de methoden aan die bij het afrekenen worden aangeboden; de klant kiest er één, die bij de 1e bestelling wordt opgeslagen en daarna automatisch voor elke verlenging wordt gebruikt. Voor een winkelwagen met een abonnement worden alleen deze methoden aangeboden.
- Offline facturatie — de 1e bestelling wordt betaald met een van uw betaalmethoden (bankoverschrijving, cheque…). Het abonnement start zodra de bestelling een betaalde status krijgt. Elke verlenging maakt een bestelling “in afwachting van betaling” aan (standaard “In afwachting van betaling per bankoverschrijving”, waarmee uw bankgegevens worden verstuurd); de klant ontvangt herinneringen en het abonnement wordt opgeschort als de bestelling onbetaald blijft.
Beschikbare methoden in de modus “opgeslagen betaalmethode” (elke kaart toont “Gereed” of “Te configureren”):
- Kaart (Stripe) — kaart opgeslagen met 3-D Secure, belast bij elke verlenging.
- SEPA-incasso (Stripe) — de IBAN wordt ingevoerd in het beveiligde formulier van Stripe, dat de machtiging beheert. Een incasso wordt na enkele dagen door de bank bevestigd: de bestelling blijft op “In afwachting van SEPA-incasso” staan en gaat naar “Betaling aanvaard” zodra Stripe bevestigt; de planner controleert het resultaat, er is geen extra webhook nodig.
- PayPal — de klant keurt één keer goed in PayPal; zijn rekening wordt opgeslagen in de PayPal-vault en verlengingen worden afgeschreven zonder nieuwe goedkeuring. Maak een REST-app aan in de PayPal-ontwikkelaarsomgeving (eerst sandbox-gegevens, daarna live); uw PayPal Business-account moet zijn gemachtigd voor opgeslagen betalingen (“Vault”).
- SEPA-incasso (bankbestand) — de klant ondertekent een SEPA-machtiging in uw winkel (rekeninghouder, gecontroleerde IBAN, optionele BIC, ondertekeningsvakje). U stuurt de incasso’s zelf naar uw bank: zie “SEPA-incasso’s” hieronder. Vul de naam van de incassant, uw SEPA-incassant-ID (ICS) en de IBAN en BIC van de begunstigde rekening in.
- Testmodus — gesimuleerde kaarten (testnummers van Stripe), geen echte betaling: om de volledige cyclus te oefenen vóór de livegang.
SEPA-incasso wordt alleen aangeboden voor winkelwagens in euro.

Stripe-sleutels en webhook
Vul de publiceerbare en geheime sleutels in voor de gekozen modus (test of live); opgeslagen geheime sleutels worden nooit opnieuw getoond (als u het veld leeg laat, blijft de sleutel behouden). Maak vervolgens in Stripe een webhook aan naar de getoonde URL, met de events payment_method.detached, charge.refunded en charge.dispute.created, en plak het ondertekeningsgeheim whsec_…. Niet-ondertekende events worden geweigerd en elk event wordt maar één keer verwerkt.
Een formule aanmaken
Abonnementen → Formules → Nieuwe formule (of via het tabblad Modules van de productpagina):
- Product (zoeken op naam, referentie of ID) en, indien nodig, slechts één combinatie.
- Verlenging: wekelijks, elke twee weken, maandelijks, per kwartaal, elk halfjaar of jaarlijks, met een vermenigvuldiger (“Maandelijks” elke 2 = elke 2 maanden).
- Abonnementskorting (%): toegepast op elke levering, na uw catalogusprijsregels.
- Inschrijfkosten (excl. btw): eenmalig in rekening gebracht bij de 1e bestelling.
- Gratis proefperiode (dagen): de 1e levering is gratis, de 1e afschrijving vindt plaats aan het einde van de proefperiode.
- Minimale looptijd: aantal betaalde leveringen voordat de klant kan opzeggen.
- Totaal aantal leveringen: 0 = tot opzegging; anders eindigt het abonnement vanzelf (bijv. 12 nummers).
- Weergave: naam en korte pitch per taal, “Populairst”, weergavevolgorde, activering.
Het voorbeeld rechts toont de formulekaart zoals die zal verschijnen. Een formule die door abonnementen wordt gebruikt, kan niet worden verwijderd: deactiveer haar (lopende abonnementen gaan door).


Klanttraject
Productpagina
Het blok “Aankoopopties” vergelijkt de eenmalige aankoop met elke formule: doorgestreepte prijs, prijs per levering, besparing per levering en per jaar, badges (proefperiode, minimale looptijd, kosten), vermelding over de 1e bestelling. De keuze wordt opgeslagen, zelfs vóór het product voor het eerst aan de winkelwagen wordt toegevoegd.


Winkelwagen en afrekenen
De winkelwagen toont de abonnementsprijs en een overzicht: formule, proefperiode, kosten, terugkerend bedrag en datum van de volgende verlenging. Bij het afrekenen ziet de klant wat er vandaag wordt betaald en de machtiging tot afschrijving voor de verlengingen. Voor een abonnement is een klantaccount nodig: een gast wordt gevraagd in te loggen of een account aan te maken.



SEPA-incasso’s (bankbestand)
Bestellingen die met een SEPA-machtiging zijn betaald, wachten in Abonnementen → SEPA-incasso’s:
- selecteer de incasso’s, kies de incassodatum (met inachtneming van de termijn van uw bank) en klik op Incassobestand aanmaken;
- download het XML-bestand pain.008 en upload het in uw online bankieromgeving (eerste incasso’s FRST en terugkerende incasso’s RCUR worden automatisch gegroepeerd);
- zodra de bank heeft betaald, klikt u op Als betaald markeren: de bestellingen gaan naar “Betaling aanvaard”, het abonnement start of de verlenging wordt meegeteld;
- een geweigerde incasso markeert u met Als geweigerd markeren: de bestelling gaat naar “Betalingsfout” en voor het abonnement gelden uw herinneringsregels.
IBAN’s worden versleuteld opgeslagen; alleen het land en de laatste 4 cijfers worden getoond. Het bestand wordt bij elke download opnieuw gegenereerd.

Verlengingen en planner
De planner verwerkt verschuldigde verlengingen, probeert mislukte betalingen opnieuw, hervat abonnementen waarvan de pauze is afgelopen, volgt onbetaalde offline bestellingen en lopende SEPA-incasso’s op, en verstuurt de herinneringen. Voer hem één keer per dag uit (of elk uur). Via de opdrachtregel (aanbevolen; het token kan ook worden doorgegeven via de variabele DFSUBSCRIPTION_CRON_TOKEN):
0 6 * * * php /pad/naar/winkel/modules/dfsubscription/cli/run.php --token=UW_TOKEN
of via URL: https://uwwinkel.nl/module/dfsubscription/cron?token=UW_TOKEN. Exitcodes van de opdrachtregel: 0 = OK, 2 = ongeldig token, 3 = module uitgeschakeld, 5 = mislukte betalingen of fouten. Het paneel “Planner” in de instellingen toont de laatste uitvoering en laat u een uitvoering starten of het token opnieuw genereren.
Bij elke verlenging: de winkelwagen wordt opnieuw opgebouwd in de winkel, de valuta en de taal en met het adres van het abonnement, de oorspronkelijke vervoerder wordt gebruikt als die beschikbaar is, de abonnementsprijs wordt toegepast (huidige prijs min de korting, of vastgezette prijs volgens uw instellingen), daarna volgen de afschrijving, een standaard PrestaShop-bestelling en een e-mail aan de klant. Als het product niet op voorraad of niet beschikbaar is, wordt de verlenging één dag uitgesteld, zonder afschrijving en zonder dat een mislukking wordt meegeteld, en wordt u op de hoogte gebracht.
Mislukte betalingen en herinneringen
- De afschrijving mislukt: het abonnement krijgt de status “Betaling mislukt” en de klant ontvangt een e-mail met een link om zijn betaalmethode bij te werken. Bij een SEPA-incasso gaat de geweigerde bestelling naar “Betalingsfout” en gelden dezelfde regels.
- Automatische nieuwe poging na de ingestelde termijn (standaard 3 pogingen met 3 dagen ertussen).
- Na de laatste poging: opschorting (standaard) of opzegging, afhankelijk van uw instellingen; u wordt op de hoogte gebracht.
- Zodra de klant een nieuwe betaalmethode opslaat, wordt het abonnement weer actief en wordt het bij de volgende uitvoering afgeschreven.

Klantenaccount “Mijn abonnementen”
De klant ziet zijn lopende en eerdere abonnementen en voor elk daarvan: status, volgende datum, betaalmethode, resterende minimale looptijd, leveringen, bestellingen en geschiedenis. Afhankelijk van uw instellingen kan hij:
- De volgende levering overslaan.
- Pauzeren voor 1 tot N leveringen (automatische hervatting) of tot hervatting, en daarna hervatten op de geplande datum.
- Van formule wisselen tussen de formules van het product (geldt vanaf de volgende verlenging, zonder pro rata verrekening) en de hoeveelheid wijzigen.
- Het afleveradres wijzigen en zijn betaalmethode vervangen: nieuwe kaart, nieuwe IBAN, nieuwe SEPA-machtiging of een ander PayPal-account (toegepast op al zijn abonnementen die op dezelfde manier worden betaald).
- Opzeggen met een reden; tijdens een minimale looptijd kan hij de opzegging alleen inplannen tegen het einde van de minimale looptijd (en die weer annuleren).
Elke actie wordt als POST-verzoek met een sessietoken verstuurd en controleert of het abonnement daadwerkelijk van de klant is.


Back-office
Dashboard
Geschatte maandelijks terugkerende omzet (excl. btw), actieve abonnees, lopende proefperiodes, opzeggingspercentage over 30 dagen, op te volgen mislukte betalingen, verlengingen in de komende 7 en 30 dagen, omzet uit abonnementsbestellingen, omzet per abonnee, grafiek over 12 maanden, nieuwe abonnementen en opzeggingen, verdeling per status, topformules, komende verlengingen, recente activiteit en redenen van opzegging. Een startgids wordt getoond zolang de configuratie niet is voltooid.

Abonnees en abonnementspagina
De lijst kan worden gefilterd op status (actief, proefperiode, gepauzeerd, betaling mislukt, in afwachting van betaling, beëindigd), geëxporteerd naar CSV en ondersteunt groepsacties (pauzeren, hervatten, opzeggen). De pagina van een abonnement bundelt indicatoren, acties (nu afrekenen of factureren, overslaan, pauzeren, hervatten, datum van de volgende verlenging, formule, hoeveelheid, opzegging, heractivering), bestellingen en de volledige tijdlijn.


Andere schermen
- Activiteit: alle gebeurtenissen, te filteren op type en op auteur (klant, medewerker, planner).
- Bestelpagina en klantpagina: paneel met de gekoppelde abonnementen.
- Klantengroep voor abonnees (Instellingen): klanten worden erin opgenomen zolang een abonnement actief of gepauzeerd is; gebruik deze groep voor gereserveerde prijzen of toegang tot categorieën.
E-mails
Alle e-mails worden verstuurd in de taal van de klant (8 talen meegeleverd) met de bedragen in zijn valuta: abonnement bevestigd, verlenging betaald, SEPA-incasso aangevraagd, bestelling in afwachting van betaling en herinneringen, betaling mislukt, herinnering vóór verlenging en einde van de proefperiode, pauze, hervatting, wijziging, opzegging, einde nadert. De verkoper wordt op de hoogte gebracht van nieuwe abonnementen, opzeggingen, opschortingen en uitgestelde verlengingen. De teksten kunnen worden aangepast in Internationaal → Vertalingen → Vertalingen van geïnstalleerde modules.


Veelgestelde vragen en probleemoplossing
Het abonnementsblok verschijnt niet op de productpagina
Controleer of er een actieve formule bestaat voor dit product (of deze combinatie) en of ten minste één betaalmethode op “Gereed” staat in de instellingen (Stripe- of PayPal-sleutels ingevuld, gegevens van de SEPA-incassant volledig; winkelwagen in euro voor SEPA).
PayPal weigert de verlengingen
Controleer bij PayPal of uw account is gemachtigd voor opgeslagen betalingen (Vault, door de verkoper geïnitieerde betalingen). De foutmelding van PayPal verschijnt in de geschiedenis van het abonnement.
De verlengingen worden niet uitgevoerd
Het paneel “Planner” toont de laatste uitvoering. Voer de opdracht handmatig uit om het verslag en eventuele fouten te zien.
Hoe kan ik zonder risico testen?
Schakel over naar Testmodus, maak een formule aan, plaats een bestelling met de kaart 4242 4242 4242 4242 en gebruik daarna “Nu afrekenen” op de pagina van het abonnement. De kaart 4000 0000 0000 0341 wordt bij de bestelling geaccepteerd en bij de verlenging geweigerd: ideaal om de herinneringen te testen.
Hulp nodig? Open een ticket vanuit uw DataFirefly-account: antwoord binnen 24 werkuren, in het Frans of het Engels.