Digitalni i virtualni proizvodi
Modul 3: Proizvodi · Vrijeme čitanja: 11 minuta
Cilj učenja: Nakon ove lekcije moći ćete sigurno prodavati digitalne i virtualne proizvode: odabrat ćete siguran način preuzimanja, zaštititi mapu s datotekama za preuzimanje, postaviti ograničenja i ispravno urediti pravo na jednostrani raskid ugovora za digitalni sadržaj.
Ključni pojmovi: virtualni proizvod, proizvod za preuzimanje, poveznica za preuzimanje, ograničenje preuzimanja, datum isteka, način preuzimanja datoteka (Prisili preuzimanje, X-Accel-Redirect/X-Sendfile, Samo preusmjeravanje), woocommerce_uploads, .htaccess, nginx, odobrene mape za preuzimanje (Approved download directories), pristup nakon plaćanja, digitalni sadržaj, izričita suglasnost, odricanje od prava na jednostrani raskid ugovora
Virtualno i moguće preuzimanje: dva različita potvrdna okvira
Kod jednostavnog proizvoda ili varijacije vidjet ćete dva potvrdna okvira. Izgledaju slično, ali rade različite stvari:
- Virtualno (Virtual) znači: ništa se ne šalje. WooCommerce ne obračunava troškove dostave i pri plaćanju ne traži adresu za dostavu (ako je sve u košarici virtualno). Primjeri su degustacija čaja na licu mjesta, poklon-bon koji šaljete e-poštom ili online radionica.
- Moguće preuzimanje (Downloadable) znači: nakon plaćanja kupac dobiva jednu ili više datoteka. WooCommerce za svakog kupca izrađuje poveznicu za preuzimanje i prikazuje je u e-poruci s potvrdom te u Moj račun > Preuzimanja.
Digitalna knjiga recepata u PDF-u obično je oboje: ništa se ne šalje poštom, a postoji datoteka. Tiskana knjiga recepata s besplatnim PDF-om uz nju moguće je preuzeti, ali nije virtualna: knjiga se ipak šalje poštom.
Theehuis Example prodaje „Receptenboek Thee en Taart” (knjiga recepata za čaj i kolače) kao PDF za € 9,95. Potvrdni okviri: virtualno i moguće preuzimanje.
Kako preuzimanje funkcionira i zašto je način važan
Kada učitate datoteku uz proizvod za preuzimanje, WooCommerce je sprema u mapu wp-content/uploads/woocommerce_uploads/. Prema zadanim postavkama nazivu datoteke dodaje nasumični niz znakova (postavka „Append a unique string to filename for security”, zadano uključena). Kupac nikada ne dobiva tu adresu, nego poveznicu na Vašu trgovinu s ključem narudžbe i kodom za preuzimanje. WooCommerce pri svakom kliku provjerava: pripada li ovo preuzimanje plaćenoj narudžbi, je li ograničenje iskorišteno, je li isteklo? Tek tada kupac dobiva datoteku.
Kako datoteka zatim stiže do kupca, birate u WooCommerce > Postavke > Proizvodi > Proizvodi za preuzimanje, pod načinom preuzimanja datoteka (File download method):
| Način | Kako funkcionira | Sigurnost |
|---|---|---|
| Prisili preuzimanje (Force downloads, zadano) | PHP čita datoteku i sam je šalje dalje | Stvarna adresa ostaje skrivena. Velike datoteke na nekim poslužiteljima mogu zapinjati ili premašiti vremensko ograničenje PHP-a |
| X-Accel-Redirect/X-Sendfile | PHP provjerava, a web-poslužitelj šalje datoteku | Jednako sigurno i bolje za velike datoteke; web-poslužitelj to mora podržavati (za Apache je potreban modul mod_xsendfile, nginx poznaje X-Accel-Redirect). Pitajte svog pružatelja hostinga |
| Samo preusmjeravanje (Redirect only) | WooCommerce preusmjerava kupca na stvarnu adresu datoteke | Nesigurno: tko ima adresu, može je podijeliti, a datoteka se može preuzeti bez kupnje. WooCommerce i sam to naziva „Insecure” |
Stoga odaberite Prisili preuzimanje ili X-Sendfile. Preusmjeravanje je samo rješenje u nuždi, a postavka „Allow using redirect mode (insecure) as a last resort” omogućuje WooCommerceu da se vrati na preusmjeravanje ako drugi način ne uspije; ostavite je isključenom osim ako znate zašto Vam treba.
Zaštita mape
Uz Prisili preuzimanje ili X-Sendfile mapa woocommerce_uploads mora biti zatvorena za obične posjetitelje. U suprotnom netko tko pogodi naziv datoteke ili ga izvuče iz procurjele poveznice može datoteku izravno preuzeti. Zato WooCommerce pri instalaciji u tu mapu stavlja dvije datoteke:
- prazan
index.html, kako mapa ne bi prikazivala popis datoteka; .htaccesssdeny from all(kod načina Samo preusmjeravanje:Options -Indexes).
Datoteka .htaccess radi na Apacheu i LiteSpeedu (kao kod WebOkéa i mnogih drugih dijeljenih hostinga). Na nginxu web-poslužitelj ne čita .htaccess. Tamo u konfiguraciji poslužitelja mora postojati pravilo koje blokira mapu. Kod upravljanog nginx hostinga to ponekad uredi pružatelj hostinga; na vlastitom VPS-u to morate učiniti sami. WooCommerce to sam provjerava i prikazuje obavijest u administraciji (i u Zdravlje web-stranice) ako se čini da mapa nije zaštićena.
Nekoliko stvari na koje treba pripaziti:
- Prazan odgovor 200 nije dokaz. Ako otvorite mapu i vidite praznu stranicu, to može biti prazan
index.html, dok su same datoteke ipak dostupne. Zato testirajte i jednu datoteku (zadatak to radi). - Vanjske datoteke. Uz proizvod možete navesti i poveznicu na datoteku negdje drugdje. Za to WooCommerce ima popis odobrenih mapa za preuzimanje (Approved download directories): samo se datoteke iz tih mapa ili s tih adresa smiju koristiti za preuzimanje. Tako nitko s administratorskim pravima ne može na proizvodu slučajno ili namjerno ponuditi bilo koju datoteku s poslužitelja za preuzimanje. Neka taj popis bude kratak.
- Sigurnosne kopije i staging. Mapa je uključena u Vašu sigurnosnu kopiju. U probnom okruženju (staging) stoga se nalaze i Vaše plaćene datoteke: zaštitite staging (lekcija 7.3).
Ograničenja i pristup
Za svaki proizvod za preuzimanje ili varijaciju postavljate:
- Ograničenje preuzimanja (Download limit): koliko puta kupac smije preuzeti datoteku. Prazno znači neograničeno. Ograničenje od, primjerice, 5 smanjuje dijeljenje, ali izaziva pritužbe kada netko kupi novo prijenosno računalo. Odaberite nešto razumno i pomozite kupcima koji Vas to zamole.
- Datum isteka (Download expiry): nakon koliko dana poveznica prestaje raditi.
Opće postavke u Proizvodi za preuzimanje:
- Preuzimanja zahtijevaju prijavu (Downloads require login), zadano isključeno. Ako je uključeno, gosti ne mogu ništa preuzeti; uključite to samo ako su korisnički računi i inače obvezni.
- Pristup nakon plaćanja (Grant access to downloadable products after payment), zadano uključeno: kupac može preuzimati čim narudžba ima status U tijeku, dakle odmah nakon uspješnog plaćanja. Ako je isključeno, tek nakon statusa Dovršeno.
Jednostrani raskid ugovora kod digitalnog sadržaja
Za običan čajnik kupac ima 14 dana za predomišljanje (lekcija 5.2). Kod preuzimanja to je nezgodno: tko ima PDF, ima ga i nakon raskida. Zato postoji iznimka, ali samo pod određenim uvjetima. U EU-u je propisana člankom 16. Direktive 2011/83/EU; u Nizozemskoj člankom 6:230p točkom g nizozemskog Građanskog zakonika (BW). Pravo na jednostrani raskid ugovora ne postoji za digitalni sadržaj koji nije isporučen na materijalnom nosaču ako:
- je isporuka započela uz izričitu prethodnu suglasnost potrošača;
- je potrošač izjavio da se time odriče svog prava na jednostrani raskid ugovora; i
- ste Vi to potvrdili (u potvrdi ugovora, na trajnom mediju kao što je e-poruka o narudžbi).
Ako nedostaje bilo koji od ta tri uvjeta, kupac zadržava pravo na jednostrani raskid ugovora, čak i ako je datoteku već preuzeo. U Belgiji i Njemačkoj isto pravilo EU-a vrijedi kroz njihove nacionalne zakone (vidi lekciju 5.2), a u Hrvatskoj kroz Zakon o zaštiti potrošača.
WooCommerce to ne uređuje automatski. Potrebno Vam je:
- obvezni potvrdni okvir pri plaćanju, samo kada se u košarici nalazi digitalni sadržaj, s tekstom poput „Suglasan sam da isporuka počne odmah i znam da time gubim pravo na jednostrani raskid ugovora”;
- isti tekst kao potvrda u e-poruci o narudžbi za te proizvode;
- odgovarajuća rečenica u Vašim informacijama o pravu na jednostrani raskid ugovora da to vrijedi za preuzimanja.
Postoje proširenja koja dodaju takav potvrdni okvir; blok za plaćanje također nudi mogućnosti za dodatna polja. Procijenite ih kao i svaki drugi dodatak. Potvrdni okvir koji je unaprijed označen ne vrijedi kao izričita suglasnost (lekcija 5.4).
Pazite na razliku u odnosu na virtualne usluge, kao što je radionica na određeni datum. Za njih vrijede pravila za usluge, s drugim iznimkama. Pročitajte lekciju 5.2.
Sažetak
- Virtualno = ništa se ne šalje; moguće preuzimanje = datoteke nakon plaćanja. PDF je obično oboje.
- Odaberite Prisili preuzimanje ili X-Accel-Redirect/X-Sendfile; Samo preusmjeravanje nije sigurno.
- Mapa
woocommerce_uploadsmora biti zatvorena:.htaccessna Apacheu i LiteSpeedu, pravilo poslužitelja na nginxu. Testirajte stvarnu datoteku, ne samo mapu. - Neka popis odobrenih mapa za preuzimanje bude kratak i postavite razumna ograničenja.
- Pravo na jednostrani raskid ugovora kod preuzimanja otpada samo uz izričitu suglasnost, odricanje od prava i potvrdu; WooCommerce to ne radi automatski. U Hrvatskoj se to pravo uređuje Zakonom o zaštiti potrošača.
Kviz
Zadatak
Zadatak A3.3: Jesu li Vaša preuzimanja zaštićena? Ovaj zadatak otvara putanje na koje ne vode poveznice i zato radi samo za Vašu vlastitu trgovinu. Najprije dokažite da je domena Vaša: postavite TXT zapis _weboke-cursus.<Vaša domena> s kodom koji dobijete ili postavite datoteku /.well-known/weboke-cursus-<code>.txt u kojoj je taj kod. Zatim unesite adresu svoje trgovine i, ako želite, putanju jedne datoteke za preuzimanje onako kako je WooCommerce prikazuje uz proizvod (počinje s /wp-content/uploads/woocommerce_uploads/). Program otvara mapu (bez praćenja preusmjeravanja, samo početak) i, ako ste unijeli putanju, jednom dohvaća zaglavlja te datoteke. Zeleno ako mapa vraća 401, 403 ili 404, ili stranicu bez popisa datoteka, a datoteka vraća 401, 403 ili 404. Narančasto ako niste unijeli datoteku: tada je provjerena samo mapa, a prazna stranica ne govori dovoljno. Crveno ako mapa prikazuje popis datoteka ili ako se datoteka može jednostavno preuzeti (200): tada je svatko s adresom može preuzeti bez kupnje. Program sprema samo statusne kodove, nikada datoteku.
Pitanje za Vas (ne provjerava se): koji je način preuzimanja postavljen u Vašoj trgovini i kako ste uredili jednostrani raskid ugovora za svoje digitalne proizvode?
Daljnje čitanje
- Digital and downloadable product handling (woocommerce.com, na engleskom): https://woocommerce.com/document/digital-downloadable-product-handling/
- Besplatan WordPress tečaj 7.4: Učvršćivanje web-stranice: dozvole, zaglavlja i sigurnosni dodaci
- Zabranjeno (403): Nemate dopuštenje za pristup / na ovom poslužitelju
- Nizozemski Građanski zakonik (Burgerlijk Wetboek), knjiga 6, članak 6:230p (wetten.overheid.nl, na nizozemskom): https://wetten.overheid.nl/BWBR0005289/
Baza znanja opisuje situaciju kod WebOkéa (LiteSpeed, .htaccess radi); kod drugih pružatelja funkcionira slično, osim na nginxu.
