Modul 3 · 3.3
Digitale og virtuelle produkter
Modul 3: Produkter · Lesetid: 11 minutter
Læringsmål: Etter denne leksjonen kan du selge digitale og virtuelle produkter trygt: du velger en sikker nedlastingsmetode, skjermer nedlastingsmappen, setter grenser og håndterer angreretten for digitalt innhold riktig.
Nøkkelbegreper: virtuelt produkt, nedlastbart produkt, nedlastingslenke, nedlastingsgrense, utløpsdato, nedlastingsmetode (Tving nedlastinger, X-Accel-Redirect/X-Sendfile, Kun videresending), woocommerce_uploads, .htaccess, nginx, godkjente nedlastingsmapper (Approved download directories), tilgang etter betaling, digitalt innhold, uttrykkelig samtykke, avkall på angreretten
Virtuell og nedlastbar: to forskjellige avkrysningsbokser
På et enkelt produkt eller en variant ser du to avkrysningsbokser. De ligner på hverandre, men gjør forskjellige ting:
- Virtuell (Virtual) betyr: ingenting sendes. WooCommerce beregner ikke frakt og ber ikke om leveringsadresse i kassen (hvis alt i handlekurven er virtuelt). Tenk på en tesmaking på stedet, et gavekort du sender på e-post, eller en nettbasert workshop.
- Nedlastbar (Downloadable) betyr: etter betalingen får kunden én eller flere filer. WooCommerce lager en nedlastingslenke per kunde og viser den i bekreftelsese-posten og under Min konto > Nedlastinger.
En digital oppskriftsbok som pdf er som regel begge deler: ingenting sendes i posten, og det finnes en fil. En trykt oppskriftsbok med en gratis pdf er nedlastbar, men ikke virtuell: boken sendes jo i posten.
Theehuis Example selger «Receptenboek Thee en Taart» som pdf for € 9,95 (≈ 105 kr). Avkrysningsbokser: virtuell og nedlastbar.
Slik fungerer en nedlasting, og hvorfor metoden betyr noe
Laster du opp en fil på et nedlastbart produkt, legger WooCommerce den i mappen wp-content/uploads/woocommerce_uploads/. Som standard legger den til en tilfeldig tegnrekke bak filnavnet (innstillingen «Append a unique string to filename for security», som er på som standard). Kunden får aldri den adressen, men en lenke til butikken din med en bestillingsnøkkel og en nedlastingskode. WooCommerce sjekker ved hvert klikk: hører denne nedlastingen til en betalt bestilling, er grensen ikke nådd, har den ikke utløpt? Først da får kunden filen.
Hvordan filen deretter kommer frem til kunden, velger du under WooCommerce > Innstillinger > Produkter > Nedlastbare produkter, ved nedlastingsmetode (File download method):
| Metode | Slik fungerer det | Sikkerhet |
|---|---|---|
| Tving nedlastinger (Force downloads, standard) | PHP leser filen og sender den selv videre | Den ekte adressen forblir skjult. Store filer kan på enkelte servere stoppe opp eller treffe tidsgrensen i PHP |
| X-Accel-Redirect/X-Sendfile | PHP sjekker, webserveren sender filen | Like sikkert og bedre for store filer; webserveren må støtte det (på Apache trengs modulen mod_xsendfile, nginx har X-Accel-Redirect). Spør leverandøren av webhotellet ditt |
| Kun videresending (Redirect only) | WooCommerce sender kunden videre til den ekte filadressen | Usikkert: den som har adressen, kan dele den, og filen kan hentes uten å kjøpe. WooCommerce kaller det selv «Insecure» |
Velg altså Tving nedlastinger eller X-Sendfile. Videresending er bare en nødløsning, og innstillingen «Allow using redirect mode (insecure) as a last resort» lar WooCommerce falle tilbake på videresending hvis den andre metoden feiler; la den være av med mindre du vet hvorfor.
Skjerme mappen
Med Tving nedlastinger eller X-Sendfile må mappen woocommerce_uploads være stengt for vanlige besøkende. Ellers kan noen som gjetter filnavnet eller henter det fra en lekket lenke, laste ned filen direkte. WooCommerce legger derfor to filer i den mappen ved installasjonen:
- en tom
index.html, slik at mappen ikke viser en liste over filer; - en
.htaccessmeddeny from all(ved metoden Kun videresending:Options -Indexes).
Den .htaccess-filen virker på Apache og LiteSpeed (som hos WebOké og mange andre delte webhotell). På nginx leser ikke webserveren .htaccess. Der må det stå en regel i serverkonfigurasjonen som blokkerer mappen. På et administrert nginx-webhotell ordner leverandøren det noen ganger; på en egen VPS må du gjøre det selv. WooCommerce sjekker dette selv og viser en melding i administrasjonen (og i Nettstedshelse) hvis mappen ikke ser ut til å være beskyttet.
Noen ting du bør passe på:
- En tom 200 er ikke noe bevis. Ber du om mappen og ser en tom side, kan det være den tomme
index.html, mens selve filene står åpne. Test derfor også én fil (oppgaven gjør det). - Filer utenfra. Du kan også oppgi en lenke til en fil et annet sted på et produkt. Til det har WooCommerce listen godkjente nedlastingsmapper (Approved download directories): bare filer fra disse mappene eller adressene kan brukes som nedlasting. Slik kan ingen med administratorrettigheter på et produkt ved et uhell eller med vilje tilby en vilkårlig fil fra serveren som nedlasting. Hold listen kort.
- Sikkerhetskopier og staging. Mappen blir med i sikkerhetskopien din. I et stagingmiljø ligger altså også de betalte filene dine: skjerm stagingmiljøet (leksjon 7.3).
Grenser og tilgang
Per nedlastbart produkt eller per variant stiller du inn:
- Nedlastingsgrense (Download limit): hvor mange ganger kunden kan laste ned. Tomt betyr ubegrenset. En grense på for eksempel 5 begrenser deling, men gir klager når noen kjøper en ny bærbar PC. Velg noe rimelig og hjelp kunder som spør.
- Utløpsdato (Download expiry): etter hvor mange dager lenken slutter å virke.
Generelle innstillinger under Nedlastbare produkter:
- Nedlastinger krever innlogging (Downloads require login), av som standard. På betyr at gjester ikke kan laste ned noe; slå det bare på hvis du også krever konto.
- Tilgang etter betaling (Grant access to downloadable products after payment), på som standard: kunden kan laste ned så snart bestillingen har statusen Pågående, altså rett etter en vellykket betaling. Er det av, først etter Fullført.
Angrerett for digitalt innhold
For en vanlig tekanne har kunden 14 dagers angrefrist (leksjon 5.2). For en nedlasting er det vanskelig: den som har pdf-en, har den, også etter at kjøpet er angret. Derfor finnes det et unntak, men bare på visse vilkår. I EU står det i artikkel 16 i direktiv 2011/83/EU; i Nederland i artikkel 6:230p bokstav g i den nederlandske sivilloven (Burgerlijk Wetboek, BW). Det er ingen angrerett for digitalt innhold som ikke leveres på et fysisk medium, hvis:
- leveringen har startet med forbrukerens uttrykkelige forhåndssamtykke;
- forbrukeren har erklært at han dermed gir avkall på angreretten; og
- du har gitt en bekreftelse på dette (i bekreftelsen av avtalen, på et varig medium som bestillingse-posten).
Mangler ett av disse tre, beholder kunden angreretten, også om han allerede har lastet ned. I Belgia og Tyskland gjelder den samme EU-regelen gjennom landets egen lov (se leksjon 5.2). Norge er ikke med i EU, men i EØS: forbrukerrettighetsdirektivet gjelder gjennom norsk lov, her angrerettloven med 14 dagers angrerett.
WooCommerce ordner ikke dette av seg selv. Du trenger:
- en obligatorisk avkrysningsboks i kassen, bare når det ligger digitalt innhold i handlekurven, med en tekst som «Jeg godtar at leveringen starter med en gang, og jeg vet at jeg dermed mister angreretten»;
- den samme teksten som bekreftelse i bestillingse-posten for disse produktene;
- riktig setning i informasjonen din om angrerett om at dette gjelder nedlastinger.
Det finnes utvidelser som legger til en slik avkrysningsboks; kasseblokken har også muligheter for ekstra felt. Vurder dem som enhver annen utvidelse. En avkrysningsboks som er forhåndsavkrysset, teller ikke som uttrykkelig samtykke (leksjon 5.4).
Legg merke til forskjellen fra virtuelle tjenester, som en workshop på en bestemt dato. Der gjelder reglene for tjenester, med andre unntak. Les leksjon 5.2.
Sammendrag
- Virtuell = ingenting sendes; nedlastbar = filer etter betaling. En pdf er som regel begge deler.
- Velg Tving nedlastinger eller X-Accel-Redirect/X-Sendfile; Kun videresending er usikkert.
- Mappen
woocommerce_uploadsmå være stengt:.htaccesspå Apache og LiteSpeed, en serverregel på nginx. Test en ekte fil, ikke bare mappen. - Hold listen over godkjente nedlastingsmapper kort og sett rimelige grenser.
- Ingen angrerett for nedlastinger bare med uttrykkelig samtykke, avkall på retten og en bekreftelse; WooCommerce gjør ikke dette av seg selv. I Norge gjelder angrerettloven, som bygger på det samme direktivet gjennom EØS.
Quiz
Oppgave
Oppgave A3.3: Er nedlastingene dine skjermet? Denne oppgaven ber om stier som ikke er lenket, og virker derfor bare for din egen butikk. Først viser du at domenet er ditt: du legger inn en TXT-post _weboke-cursus.<ditt domene> med koden du får, eller du legger ut en fil /.well-known/weboke-cursus-<code>.txt med koden i. Fyll deretter inn adressen til butikken din og, hvis du vil, stien til én nedlastingsfil slik WooCommerce viser den på produktet (den begynner med /wp-content/uploads/woocommerce_uploads/). Programmet ber om mappen (uten å følge videresendinger, bare begynnelsen) og, hvis du fylte inn en sti, én gang om kodehodene til den filen. Grønt hvis mappen gir 401, 403 eller 404, eller en side uten liste over filer, og filen gir 401, 403 eller 404. Oransje hvis du ikke fylte inn en fil: da er bare mappen sjekket, og en tom side sier ikke nok. Rødt hvis mappen viser en liste over filer, eller hvis filen kan lastes ned rett frem (200): da kan alle med adressen hente den uten å kjøpe. Programmet lagrer bare statuskodene, aldri filen.
Spørsmål til deg selv (blir ikke rettet): hvilken nedlastingsmetode er stilt inn i butikken din, og hvordan har du ordnet angreretten for de digitale produktene dine?
Les mer
- Digital and downloadable product handling (woocommerce.com, engelsk): https://woocommerce.com/document/digital-downloadable-product-handling/
- Gratis WordPress-kurs 7.4: Herde nettstedet: rettigheter, headere og sikkerhetsutvidelser
- Ingen tilgang (403): Du har ikke tilgang til / på denne serveren
- Den nederlandske sivilloven (Burgerlijk Wetboek) bok 6, artikkel 6:230p (wetten.overheid.nl, nederlandsk): https://wetten.overheid.nl/BWBR0005289/
Kunnskapsbasen beskriver situasjonen hos WebOké (LiteSpeed, .htaccess virker); hos andre leverandører fungerer det på samme måte, unntatt på nginx.
