Betaalkosten (dfpaymentfees): volledige gids
Toeslagen per betaalmethode installeren, configureren en benutten: vaste kosten en percentage, rekenbasis, grenzen, drempel voor gratis, voorwaarden per groep, land, valuta en winkelwagen, btw, multistore en probleemoplossing voor PrestaShop 8 en 9.
Overzicht
Met DataFirefly Betaalkosten rekent u een toeslag aan per betaalmethode van uw PrestaShop 8- of 9-winkel. Dat dient twee doelen: de werkelijke kost van een betaalwijze doorrekenen (kaartcommissies, de afhandeling van betaling bij levering, de verwerking van cheques of overschrijvingen) en uw klanten sturen naar de betaalmethoden die voor uw winkel het voordeligst zijn.
De module berust op een regelmotor: elke regel combineert een vast bedrag en/of een percentage, een rekenbasis, boven- en ondergrenzen, een drempel voor gratis, en een reeks voorwaarden (klantgroep, land, valuta, winkelwagenbedrag). De kosten verschijnen bij de klant tijdens het bestelproces en komen bij de validatie automatisch op de bestelling.
Installatie
- Ga in uw PrestaShop-backoffice naar Modules → Modulebeheer → Een module installeren.
- Kies het bestand
dfpaymentfees.zipdat u uit uw DataFirefly-account hebt gedownload. - Klik op Installeren en daarna op Configureren.
- Leeg de PrestaShop-cache (Geavanceerde parameters → Prestaties → Cache legen).
- Klik op de configuratiepagina op De kostenregels beheren om uw eerste regel te maken.
De module werkt met PrestaShop 8.0 tot 9.x en is getest op PHP 8.1 tot 8.3. Er is geen aanpassing aan het thema nodig. Bij het verwijderen verdwijnen de tabellen van de module en het beheertabblad.
Algemene parameters
De configuratiepagina van de module (Modules → Modulebeheer → Betaalkosten → Configureren) bevat twee globale instellingen:
- De kosten tonen bij het afrekenen: toont het kostenbedrag naast elke betaalmethode tijdens de bestelling. Schakel die optie uit als u de kosten liever pas bij de validatie toepast, zonder ze in de lijst met betaalmethoden aan te kondigen.
- Opschrift van de kosten: het standaardopschrift dat de klant en de bestelling te zien krijgen (bijvoorbeeld « Betaalkosten »). Dat veld is meertalig en kan per regel worden overschreven.
Een kostenregel maken
Klik bij De kostenregels beheren op Een kostenregel toevoegen. Het formulier bestaat uit vier blokken: identificatie, bedrag, grenzen en voorwaarden.
Identificatie
- Actief: schakelt de regel in of uit zonder die te verwijderen.
- Opschrift (klant): de tekst die de klant bij het afrekenen en op de bestelling ziet. Meertalig en verplicht veld.
- Betaalmethode: de betrokken module (bijvoorbeeld
ps_wirepayment,ps_checkpaymentof uw kaartmodule), of Alle betaalmethoden voor een algemene regel. - Prioriteit: een geheel getal. Een lagere waarde wordt eerst beoordeeld. Zie het onderdeel « Volgorde van beoordeling » hieronder.
Bedrag van de kosten
- Vaste kosten: een vast bedrag dat erbij komt (bijvoorbeeld
1.50). - Kosten in procent: een percentage op de rekenbasis (bijvoorbeeld
2.5voor 2,5 %). - De verzendkosten in de procentbasis opnemen: staat dit aan, dan slaat het percentage op de producten en de verzendkosten; anders alleen op de producten.
- Rekenbasis inclusief btw: kies of het percentage op het totaal inclusief of exclusief btw wordt berekend.
Beide bedragen zijn combineerbaar. De toegepaste formule luidt:
kosten = vaste_kosten + (basis × kosten_percentage / 100)
Grenzen en gratis
- Minimumkosten: levert de berekening een lager bedrag op, dan geldt dit minimum.
0betekent geen minimum. - Maximumkosten: begrenst het kostenbedrag.
0betekent geen maximum. - Drempel voor gratis: haalt het totaal inclusief btw van de winkelwagen dat bedrag, dan wordt er niets aangerekend.
0schakelt dit uit.
De drempel voor gratis is een uitstekende hefboom voor het gemiddelde winkelwagenbedrag: « Betaalkosten gratis vanaf 150 € » zet de klant aan zijn bestelling aan te vullen.
Toepassingsvoorwaarden
Met vier soorten voorwaarden bepaalt u precies wanneer de regel geldt. Een lijst die u leeg laat, betekent « geen beperking » op dat criterium.
- Klantgroepen: de regel geldt alleen als de klant tot een van de gekozen groepen behoort. Typisch: de kosten aan particulieren aanrekenen en professionals ervan vrijstellen.
- Landen: gebaseerd op het land van het factuuradres van de winkelwagen.
- Valuta: de regel geldt alleen voor de gekozen valuta.
- Minimaal en maximaal winkelwagenbedrag: de regel geldt alleen als het totaal inclusief btw binnen die vork valt.
0schakelt de betrokken grens uit.
In multistore laat een extra veld Winkels u de regel aan een of meer winkels koppelen. Laat u dat leeg, dan geldt de regel voor alle winkels.
Volgorde van beoordeling
Voor een gegeven betaalmethode haalt de module alle actieve regels op die op die module (of op « Alle ») slaan, gesorteerd op oplopende prioriteit en daarna op identificatie. Hij beoordeelt de voorwaarden van elke regel in die volgorde en past de eerste regel toe waarvan alle voorwaarden kloppen. De volgende regels worden overgeslagen.
Praktisch gevolg: geef uw meest specifieke regels (bijvoorbeeld « betaling bij levering, Frankrijk, particulieren ») een lage prioriteit (0, 10, 20 en zo verder) en uw algemene regels (« alle betaalmethoden ») een hoge prioriteit (100), zodat die alleen als terugval dienen.
Bijzonder geval van de drempel voor gratis: past een regel maar haalt de winkelwagen haar drempel voor gratis, dan wordt er niets aangerekend, en beoordeelt de module de volgende regels niet. Gratis is dus een eindbeslissing, geen eenvoudige « door naar de volgende regel ».
Btw-behandeling
Twee instellingen bepalen de fiscale behandeling van de kosten:
- Bedragen ingevoerd inclusief btw: geef aan of de bedragen die u hebt ingevuld (vaste kosten, grenzen) de btw al bevatten of niet.
- Belastingregel: de PrestaShop-belastingregel die op de kosten geldt. Kies Geen belasting voor kosten zonder btw.
De module berekent het toepasselijke tarief uit de belastingregel en het factuuradres van de klant, en leidt daaruit de opsplitsing af:
- Zijn de bedragen inclusief btw ingevoerd:
excl. btw = incl. btw / (1 + tarief). - Zijn de bedragen exclusief btw ingevoerd:
incl. btw = excl. btw × (1 + tarief).
Beide waarden en het toegepaste tarief worden op de bestelling vastgelegd, voor uw boekhouding.
Rekenvoorbeeld
Regel: vaste kosten 1,00 € plus 2 % van de winkelwagen, basis inclusief btw met producten en verzending, maximum 5,00 €, bedragen inclusief btw ingevoerd, btw 20 %.
- Winkelwagen: 120,00 € incl. btw aan producten plus 5,00 € incl. btw verzending, dus een basis van 125,00 €.
- Brutokosten: 1,00 + (125,00 × 2 / 100) = 3,50 € incl. btw.
- Onder de grens van 5,00 €, dus ongewijzigd.
- Opsplitsing: excl. btw = 3,50 / 1,20 = 2,92 €, btw = 0,58 €.
Weergave aan klantzijde
Staat de optie De kosten tonen bij het afrekenen aan, dan berekent de module de kosten voor elke beschikbare betaalmethode en geeft die aan de frontoffice door. Op de pagina /order:
- Het kostenbedrag komt naast het opschrift van elke betrokken betaalmethode te staan.
- Onder de lijst met betaalmethoden verschijnt een herinnering voor de nu gekozen optie, die in real time meewisselt wanneer de klant van betaalmethode verandert.
Die weergave is louter informatief: het werkelijk aangerekende bedrag wordt bij de validatie van de bestelling aan serverzijde opnieuw berekend.
Toepassing op de bestelling
Bij de validatie van de bestelling (hook actionValidateOrder) berekent de module de kosten opnieuw voor de betaalmethode die daadwerkelijk is gebruikt, en daarna:
- Werkt hij de besteltotalen bij (
total_paid,total_paid_tax_incl,total_paid_tax_excl, en waar van toepassingtotal_paid_real). - Werkt hij de factuurtotalen bij als er al een factuur bestaat.
- Werkt hij het bedrag van de vastgelegde betaling bij, zodat dat overeenstemt met het geïnde bedrag.
- Legt hij de kostenregel vast (opschrift, excl. btw, incl. btw, tarief) in de tabel
df_payment_fee_order.
De kostenregel verschijnt daarna op de bevestigingspagina van de bestelling, in het besteldetail aan klantzijde, op de bestelpagina in de backoffice, en in de bevestigingsmail.
Een beveiliging voorkomt dubbele verwerking: heeft een bestelling al een kostenregel, dan doet de module niets.
Samenwerking met betaalgateways
Belangrijk om te begrijpen vóór u in productie gaat. PrestaShop biedt geen native hook om kosten die aan een betaalmethode hangen in het winkelwagentotaal te verwerken vóór de aanroep van de gateway. De kosten worden de klant dus bij het afrekenen getoond en daarna op de bestelling vastgelegd, nadat die is aangemaakt.
- Offline betalingen (overschrijving, cheque, betaling bij levering, betaling in de winkel): de werking is volledig en zonder voorbehoud. De klant ziet de kosten, de bestelling en de factuur bevatten ze, en u int het volledige getoonde bedrag.
- Gateways met omleiding of ingebedde gateways (PayPal, Stripe, bankoplossingen): het bedrag dat naar de gateway gaat, is dat wat de betaalmodule uit de winkelwagen berekent. Afhankelijk van uw gateway en de configuratie ervan kan dat bedrag de kosten niet bevatten. Test dat gedrag in een testomgeving vóór u in productie gaat.
Voor die laatste zijn er twee gebruikelijke aanpakken: de kostenregels tot de offline betaalmethoden beperken, of het bedrag aan de kant van de gateway vastleggen of bijstellen. Onze ondersteuning kan u adviseren op basis van de gateway die u gebruikt.
Multistore en meertaligheid
Multistore: elke regel hangt via het veld Winkels in het formulier aan een of meer winkels. Alleen de regels die aan de huidige winkel hangen, worden beoordeeld. Een regel die u zonder selectie opslaat, geldt voor alle winkels.
Meertaligheid: het opschrift van elke regel is in alle actieve talen van de winkel te vertalen. Is het opschrift in de taal van de klant niet ingevuld, dan gebruikt de module het globale opschrift uit de parameters van de module.
Problemen oplossen
De kosten verschijnen niet bij het afrekenen
- Controleer of de optie De kosten tonen bij het afrekenen in de parameters van de module aanstaat.
- Controleer of de regel actief is en of die wel op de betrokken betaalmethode slaat (of op « Alle »).
- Controleer of de context van de klant aan alle voorwaarden voldoet: groep, factuurland, valuta en winkelwagenbedrag.
- Ga na of de winkelwagen de drempel voor gratis van de regel niet haalt.
- Leeg de PrestaShop-cache en herlaad de browser geforceerd (Ctrl+F5) om oude JavaScript te wissen.
De kosten verschijnen wel maar komen niet op de bestelling
De berekening bij het afrekenen en die bij de validatie gebruiken de technische naam van de betaalmodule. Legt uw betaalmodule een ander opschrift vast dan de technische naam, controleer dan in de tabel df_payment_fee_order of er wel een regel voor de bestelling is aangemaakt. Is dat niet zo, maak dan een regel die op Alle betaalmethoden slaat om de werking te toetsen, en neem daarna contact op met de ondersteuning met de naam van de gebruikte betaalmodule.
Een regel wordt nooit toegepast, terwijl zij correct lijkt
Waarschijnlijk past er eerst een regel met een hogere prioriteit (een lagere prioriteitswaarde). Denk eraan dat alleen de eerste passende regel wordt toegepast. Verhoog de prioriteit van de algemene regels of verfijn de voorwaarden van de concurrerende regels.
Het btw-bedrag lijkt verkeerd
Controleer of de instelling Bedragen ingevoerd inclusief btw overeenstemt met de waarden die u hebt ingevuld. Een bedrag inclusief btw invoeren terwijl de instelling exclusief btw aangeeft (of omgekeerd) verschuift de opsplitsing. Controleer ook of de gekozen belastingregel wel voor het factuurland van de klant geldt.
Het afrekenen is traag of blokkeert
Zorg dat u versie 1.0.0 of hoger van de module gebruikt, leeg de PrestaShop-cache en herlaad de browser geforceerd (Ctrl+F5) om een JavaScript-versie uit de cache te verwijderen.
Verwijderen
Verwijder de module via het Modulebeheer. Bij het verwijderen verdwijnen het beheertabblad, de configuratievariabelen en alle tabellen van de module, ook de historiek van de kosten die op bestellingen zijn toegepast. De totalen die al op bestaande bestellingen zijn vastgelegd, blijven ongewijzigd.
Wilt u de historiek van de kosten om boekhoudkundige redenen bewaren, exporteer dan de tabel df_payment_fee_order vóór u de module verwijdert.