Pentru client, plata cu cardul durează zece secunde. În spate sunt câțiva pași care trebuie să se lege corect: magazinul, procesatorul de plăți, banca clientului și programul de facturare. Când unul dintre ei e configurat greșit, apar comenzi plătite care nu apar în magazin sau comenzi „plătite” pentru care n-au venit banii.
Pe scurt
- Datele cardului le introduce clientul pe pagina procesatorului de plăți, nu pe serverul magazinului.
- În Uniunea Europeană, plățile online cer de regulă autentificare puternică: 3-D Secure, cu confirmare în aplicația băncii.
- Comanda se confirmă după ce procesatorul anunță plata, nu când clientul ajunge pe pagina de „mulțumim”.
- Totalul se calculează pe server, din prețurile tale, nu din ce trimite browserul.
- Înainte de lansare, testezi cu cardurile de test ale procesatorului.
Cine face ce
- Magazinul ține produsele, prețurile, coșul și comenzile.
- Procesatorul de plăți (de exemplu Stripe sau un procesator al unei bănci) primește datele cardului, vorbește cu banca și îți virează banii.
- Banca clientului aprobă sau refuză plata și cere autentificarea.
- Programul de facturare emite factura și o transmite în RO e-Factura.
Cel mai sigur e ca datele cardului să nu treacă deloc prin serverul tău: clientul e trimis pe pagina securizată a procesatorului sau completează un câmp încărcat direct de la el. Astfel, magazinul nu stochează și nu vede numărul cardului, iar obligațiile de securitate pentru datele de card rămân, în cea mai mare parte, la procesator.
3-D Secure și autentificarea puternică
Directiva europeană privind serviciile de plată (PSD2) cere, pentru majoritatea plăților online, autentificarea strictă a clientului: pe lângă datele cardului, încă o confirmare, de obicei în aplicația băncii sau cu un cod primit pe telefon. Pentru carduri, asta se face prin 3-D Secure.
Pentru magazin, contează două lucruri: ca fluxul de plată să suporte 3-D Secure și ca o plată care așteaptă confirmarea să nu fie tratată ca plătită.
Comanda se confirmă când vine plata
Pagina de „mulțumim” la care ajunge clientul după plată nu e o dovadă de plată: clientul poate închide fereastra înainte, iar adresa paginii poate fi deschisă și fără plată. Corect este ca procesatorul să anunțe serverul magazinului, printr-o notificare automată (webhook), că plata s-a făcut. Abia atunci comanda devine plătită, pleacă emailul de confirmare și se emite factura.
Prețul se calculează pe server
Browserul clientului poate fi modificat de oricine știe puțină programare. De aceea, magazinul nu trebuie să accepte prețul sau totalul trimise din coș: primește doar ce produse și ce cantități vrea clientul, iar totalul îl calculează pe server, din lista lui de prețuri. Prețul din pagină e doar pentru afișare.
Testarea înainte de lansare
Procesatorii au un mod de test, cu chei separate și carduri de test publicate în documentația lor. Încearcă cel puțin:
- o plată reușită;
- o plată care cere 3-D Secure;
- un card refuzat;
- un card fără fonduri suficiente;
- o plată abandonată la jumătate: coșul trebuie să rămână, iar comanda să nu apară ca plătită.
După fiecare test, verifică: starea comenzii în magazin, emailul primit de client, factura și ce vede procesatorul în panoul lui.
Ce rămâne în grija ta
- Cheile procesatorului stau doar pe server, într-un fișier pe care vizitatorii nu-l pot citi, și nu se trimit niciodată pe email sau pe chat. Dacă o cheie a ajuns undeva unde nu trebuia, o schimbi din panoul procesatorului.
- Certificatul SSL trebuie să fie activ pe tot site-ul (de ce).
- Rambursările și retururile se fac tot prin procesator, iar factura de stornare prin programul de facturare.
- Comisioanele procesatorului diferă de la un furnizor la altul; le iei în calcul în prețuri.
Restul pașilor de dinaintea lansării — pagini legale, SAL, e-Factura — sunt în checklistul de lansare pentru un magazin online. Pentru găzduire, magazinele pornesc de la planul Magazin, cu 3 site-uri, 30 GB și email nelimitat (găzduire web).
