Modulul 3 · 3.3
Produse digitale și virtuale
Modulul 3: Produse · Timp de citire: 11 minute
Obiectiv de învățare: După această lecție puteți vinde în siguranță produse digitale și virtuale: alegeți o metodă de descărcare sigură, protejați dosarul de descărcări, setați limite și reglementați corect dreptul de retragere pentru conținutul digital.
Noțiuni cheie: produs virtual, produs care poate fi descărcat, link de descărcare, limită de descărcări, data expirării, metodă de descărcare (Forțează descărcările, X-Accel-Redirect/X-Sendfile, Numai redirecționare), woocommerce_uploads, .htaccess, nginx, directoare de descărcare aprobate (Approved download directories), acces după plată, conținut digital, consimțământ expres, renunțarea la dreptul de retragere
Virtual și care poate fi descărcat: două bife diferite
La un produs simplu sau la o variație vedeți două bife. Seamănă între ele, dar fac lucruri diferite:
- Virtual (Virtual) înseamnă: nu se expediază nimic. WooCommerce nu calculează costuri de livrare și nu cere adresă de livrare la finalizarea comenzii (dacă tot ce este în coș este virtual). Gândiți-vă la o degustare de ceai la fața locului, un card cadou trimis prin e-mail sau un atelier online.
- Poate fi descărcat (Downloadable) înseamnă: după plată, clientul primește unul sau mai multe fișiere. WooCommerce creează pentru fiecare client un link de descărcare și îl afișează în e-mailul de confirmare și la Contul meu > Descărcări.
O carte de rețete digitală în format pdf este de obicei ambele: nu se trimite nimic prin poștă și există un fișier. O carte de rețete tipărită cu un pdf gratuit inclus poate fi descărcată, dar nu este virtuală: cartea pleacă totuși prin poștă.
Theehuis Example vinde „Receptenboek Thee en Taart” (Carte de rețete Ceai și Prăjituri) ca pdf la € 9,95 (≈ 53,16 lei). Bife: virtual și poate fi descărcat.
Cum funcționează o descărcare și de ce contează metoda
Dacă încărcați un fișier la un produs care poate fi descărcat, WooCommerce îl pune în dosarul wp-content/uploads/woocommerce_uploads/. În mod implicit adaugă un șir aleatoriu de caractere la numele fișierului (setarea „Append a unique string to filename for security”, activată implicit). Clientul nu primește niciodată acea adresă, ci un link către magazinul dumneavoastră cu o cheie de comandă și un cod de descărcare. La fiecare clic, WooCommerce verifică: aparține această descărcare unei comenzi plătite, nu s-a epuizat limita, nu a expirat? Abia apoi primește clientul fișierul.
Modul în care fișierul ajunge apoi la client îl alegeți la WooCommerce > Setări > Produse > Produse care pot fi descărcate, la metoda de descărcare (File download method):
| Metodă | Cum funcționează | Securitate |
|---|---|---|
| Forțează descărcările (Force downloads, implicit) | PHP citește fișierul și îl trimite singur mai departe | Adresa reală rămâne ascunsă. Fișierele mari se pot bloca pe unele servere sau pot depăși limita de timp a PHP |
| X-Accel-Redirect/X-Sendfile | PHP verifică, serverul web trimite fișierul | La fel de sigură și mai bună pentru fișiere mari; serverul web trebuie să o suporte (la Apache este necesar modulul mod_xsendfile, nginx cunoaște X-Accel-Redirect). Întrebați furnizorul dumneavoastră de găzduire |
| Numai redirecționare (Redirect only) | WooCommerce trimite clientul la adresa reală a fișierului | Nesigură: cine are adresa o poate distribui, iar fișierul poate fi descărcat fără a fi cumpărat. WooCommerce însuși o numește „Insecure” |
Alegeți așadar Forțează descărcările sau X-Sendfile. Redirecționarea este doar o soluție de urgență, iar setarea „Allow using redirect mode (insecure) as a last resort” face ca WooCommerce să revină la redirecționare dacă cealaltă metodă eșuează; lăsați-o dezactivată, cu excepția cazului în care știți de ce aveți nevoie de ea.
Protejarea dosarului
Cu Forțează descărcările sau X-Sendfile, dosarul woocommerce_uploads trebuie să fie închis pentru vizitatorii obișnuiți. Altfel, cineva care ghicește numele fișierului sau îl extrage dintr-un link scurs poate descărca fișierul direct. De aceea, la instalare WooCommerce pune două fișiere în acest dosar:
- un
index.htmlgol, astfel încât dosarul să nu afișeze o listă de fișiere; - un
.htaccesscudeny from all(la metoda Numai redirecționare:Options -Indexes).
Fișierul .htaccess funcționează pe Apache și LiteSpeed (ca la WebOké și la multe alte servicii de găzduire partajată). Pe nginx, serverul web nu citește .htaccess. Acolo trebuie să existe în configurația serverului o regulă care blochează dosarul. La o găzduire nginx administrată, furnizorul se ocupă uneori de acest lucru; pe un VPS propriu trebuie să o faceți singur. WooCommerce verifică acest lucru și afișează un mesaj în panoul de administrare (și în Sănătate site) dacă dosarul nu pare protejat.
Câteva lucruri la care să fiți atent:
- Un 200 gol nu este o dovadă. Dacă accesați dosarul și vedeți o pagină goală, poate fi fișierul
index.htmlgol, în timp ce fișierele în sine sunt totuși accesibile. De aceea testați și un fișier (exercițiul face acest lucru). - Fișiere din exterior. La un produs puteți indica și un link către un fișier aflat în altă parte. Pentru aceasta, WooCommerce are lista de directoare de descărcare aprobate (Approved download directories): numai fișierele din aceste dosare sau de la aceste adrese pot fi folosite ca descărcare. Astfel, nimeni cu drepturi de administrare asupra unui produs nu poate oferi ca descărcare, din greșeală sau intenționat, un fișier oarecare de pe server. Păstrați această listă scurtă.
- Copii de siguranță și staging. Dosarul este inclus în copia de siguranță. Pe un mediu de staging se află deci și fișierele dumneavoastră plătite: protejați mediul de staging (lecție 7.3).
Limite și acces
Pentru fiecare produs care poate fi descărcat sau pentru fiecare variație setați:
- Limita de descărcări (Download limit): de câte ori poate descărca clientul. Câmpul gol înseamnă nelimitat. O limită de, de exemplu, 5 restrânge distribuirea, dar generează reclamații când cineva își cumpără un laptop nou. Alegeți ceva rezonabil și ajutați clienții care vă cer acest lucru.
- Data expirării (Download expiry): după câte zile linkul nu mai funcționează.
Setări generale la Produse care pot fi descărcate:
- Descărcările necesită autentificare (Downloads require login), dezactivată implicit. Activată înseamnă că vizitatorii fără cont nu pot descărca nimic; activați-o doar dacă impuneți și conturile.
- Acces după plată (Grant access to downloadable products after payment), activată implicit: clientul poate descărca imediat ce comanda are starea În desfășurare, adică imediat după o plată reușită. Dacă este dezactivată, abia după Finalizată.
Retragerea în cazul conținutului digital
Pentru un ceainic obișnuit, clientul are 14 zile de gândire (lecție 5.2). La o descărcare este complicat: cine are pdf-ul îl păstrează, chiar și după o retragere. De aceea există o excepție, dar numai în anumite condiții. În UE, aceasta se află în articolul 16 din Directiva 2011/83/UE; în Țările de Jos, în articolul 6:230p litera g din Codul civil olandez (BW). Nu există drept de retragere pentru conținutul digital care nu este livrat pe un suport material, dacă:
- livrarea a început cu consimțământul prealabil expres al consumatorului;
- consumatorul a declarat că renunță astfel la dreptul său de retragere; și
- dumneavoastră ați oferit o confirmare în acest sens (în confirmarea contractului, pe un suport durabil, cum ar fi e-mailul de comandă).
Dacă lipsește una dintre aceste trei condiții, clientul își păstrează dreptul de retragere, chiar dacă a descărcat deja. În Belgia și Germania se aplică aceeași regulă UE prin legea proprie (vezi lecție 5.2); în România, prin OUG nr. 34/2014 privind drepturile consumatorilor, care prevede un drept de retragere de 14 zile.
WooCommerce nu reglementează acest lucru automat. Aveți nevoie de:
- o bifă obligatorie la finalizarea comenzii, doar dacă în coș există conținut digital, cu un text precum „Sunt de acord ca livrarea să înceapă imediat și știu că astfel îmi pierd dreptul de retragere”;
- același text ca confirmare în e-mailul de comandă pentru aceste produse;
- fraza corectă în informațiile dumneavoastră privind dreptul de retragere, care arată că acest lucru se aplică descărcărilor.
Există extensii care adaugă o astfel de bifă; blocul de finalizare a comenzii are și opțiuni pentru câmpuri suplimentare. Evaluați-le ca pe orice plugin. O bifă care este bifată în prealabil nu contează drept consimțământ expres (lecție 5.4).
Atenție la diferența față de serviciile virtuale, cum ar fi un atelier la o anumită dată. Acolo se aplică regulile pentru servicii, cu alte excepții. Citiți lecție 5.2.
Rezumat
- Virtual = nu se expediază nimic; poate fi descărcat = fișiere după plată. Un pdf este de obicei ambele.
- Alegeți Forțează descărcările sau X-Accel-Redirect/X-Sendfile; Numai redirecționare este nesigură.
- Dosarul
woocommerce_uploadstrebuie să fie închis:.htaccesspe Apache și LiteSpeed, o regulă de server pe nginx. Testați un fișier real, nu doar dosarul. - Păstrați scurtă lista de directoare de descărcare aprobate și setați limite rezonabile.
- Dreptul de retragere pentru descărcări dispare doar cu consimțământ expres, renunțare la drept și o confirmare; WooCommerce nu face acest lucru automat. În România, regula se aplică prin OUG nr. 34/2014 privind drepturile consumatorilor.
Test (quiz)
Exercițiu
Exercițiu A3.3: Sunt descărcările dumneavoastră protejate? Acest exercițiu accesează căi care nu sunt legate prin linkuri și de aceea funcționează doar pentru propriul dumneavoastră magazin. Mai întâi demonstrați că domeniul vă aparține: setați o înregistrare TXT _weboke-cursus.<domeniul dumneavoastră> cu codul pe care îl primiți sau plasați un fișier /.well-known/weboke-cursus-<code>.txt care conține acest cod. Apoi introduceți adresa magazinului dumneavoastră și, dacă doriți, calea unui fișier de descărcare așa cum o afișează WooCommerce la produs (începe cu /wp-content/uploads/woocommerce_uploads/). Programul accesează dosarul (fără redirecționare, doar începutul) și, dacă ați introdus o cale, o singură dată anteturile acelui fișier. Verde dacă dosarul returnează 401, 403 sau 404, ori o pagină fără listă de fișiere, iar fișierul returnează 401, 403 sau 404. Portocaliu dacă nu ați introdus niciun fișier: atunci a fost verificat doar dosarul, iar o pagină goală nu spune destul. Roșu dacă dosarul afișează o listă de fișiere sau dacă fișierul poate fi descărcat pur și simplu (200): atunci oricine are adresa îl poate obține fără să cumpere. Programul păstrează doar codurile de stare, niciodată fișierul.
Întrebare pentru dumneavoastră (nu se verifică): ce metodă de descărcare este setată în magazinul dumneavoastră și cum ați reglementat retragerea pentru produsele digitale?
Lecturi suplimentare
- Digital and downloadable product handling (woocommerce.com, în engleză): https://woocommerce.com/document/digital-downloadable-product-handling/
- Curs gratuit WordPress 7.4: Securizarea site-ului: capabilități, anteturi și module de securitate
- Interzis (403): Nu aveți permisiunea de a accesa / pe acest server
- Codul civil olandez, Cartea 6, articolul 6:230p (wetten.overheid.nl, în neerlandeză): https://wetten.overheid.nl/BWBR0005289/
Baza de cunoștințe descrie situația de la WebOké (LiteSpeed, .htaccess funcționează); la alți furnizori funcționează similar, cu excepția nginx.
