Vinde conturi Nextcloud cu abonament prin Stripe: planuri, spațiu de stocare și perioadă de grație

Ghid practic pentru cei care își găzduiesc singuri Nextcloud și vor să taxeze conturile: conectezi propriul cont Stripe, definești planuri cu cotă de stocare și grupuri și gestionezi reînnoirile, TVA-ul și plățile eșuate.

Dacă rulezi deja Nextcloud pentru tine, următoarea întrebare este de obicei dacă își poate plăti singur discul. Cashier, un plugin de la MediaLab Works, transformă instanța ta într-un mic serviciu plătit: un vizitator alege un plan, plătește cu cardul prin propriul tău cont Stripe și primește un cont cu cota de stocare și grupurile potrivite, autentificat pe loc. Fără verificarea actului, fără aprobare manuală, fără tabel cu cine a plătit și până când.

Acest ghid tratează latura de cloud plătit: planuri cu cotă de stocare și grupuri, conturi create la plată, upgrade-uri pentru utilizatorii existenți, perioada de grație când un card e refuzat și TVA-ul prin Stripe Tax sau Managed Payments. Presupune că te descurci cu occ, cu cron și cu un dashboard Stripe. Referința completă se află în ghidul Cashier; acesta este parcursul practic prin ea. Poți citi mai multe despre plugin pe pagina produsului.

Înainte să vinzi ceva: drepturi, TVA și propriul cont Stripe

Două lucruri vin înainte de orice configurare.

Primul, partea legală. Cashier încasează de la utilizatorii tăi prin propriul tău cont Stripe, iar tu ești singurul responsabil pentru deținerea drepturilor asupra conținutului sau serviciului pentru care încasezi. MediaLab Works furnizează software-ul și nu este parte în vânzările tale. Stripe întreține o listă de restricted businesses și poate închide sau restricționa un cont care încasează pentru conținut fără drepturi, așa că limitează-ți oferta la media pe care o deții sau pentru care ai licență.

Al doilea, partea financiară. Deschide un cont Stripe (deschiderea este gratuită; Stripe percepe propriul comision per plată) și asigură-te că instanța ta este accesibilă prin HTTPS, pentru că Stripe trebuie să apeleze webhook-ul. Prețurile din Cashier sunt în moneda contului tău Stripe. Dacă activezi Stripe Tax sau Managed Payments, TVA-ul este calculat și adăugat pe pagina de plată Stripe: planurile sunt create cu un cod de taxă, iar pagina de înregistrare afișează prețul fără taxă și precizează acest lucru.

Cerințe preliminare

  • Nextcloud 30 până la 34, PHP 8.1 sau mai nou și un cron funcțional pentru sarcinile din fundal.
  • O aplicație de înregistrare de la MediaLab Works, instalată, activată și licențiată: Sign-up 1.0 sau mai nou sau IDRegister 2.1 sau mai nou. Cashier folosește pagina ei de înregistrare, confirmarea prin e-mail și crearea contului. Fără una dintre ele, Cashier are doar o pagină de înregistrare de bază proprie.
  • O licență Cashier (una per instanță Nextcloud, probă gratuită de 30 de zile).
  • Un cont Stripe și HTTPS, ca mai sus.

Pasul 1: Instalează și licențiază Cashier

Descarcă arhiva cashier-x.y.z.tar.gz din Licenses în contul tău MediaLab Works, extrage-o astfel încât să obții apps/cashier/ deținut de utilizatorul serverului web, apoi activeaz-o:

sudo -u www-data php occ app:enable cashier

Deschide Administration settings → Cashier → License, lipește cheia și salvează. Aplicația se leagă de această instanță și afișează Active. Licența este verificată o dată pe zi; offline, funcționează în continuare 7 zile după ultima verificare reușită.

Merită știut înainte să te bazezi pe ea: fără o licență validă nu sunt acceptate înregistrări plătite noi sau checkout-uri, iar sarcina din fundal nu rulează, dar conturile și abonamentele existente rămân neatinse. Stripe continuă să încaseze, webhook-ul continuă să înregistreze reînnoiri, plăți eșuate și anulări, iar abonații își păstrează pagina Subscription și portalul clientului Stripe. Nimic nu este șters. Același lucru se aplică dacă aplicația de înregistrare își pierde licența: înregistrările plătite noi se opresc, abonații existenți rămân, iar o plată deja în curs își primește totuși contul.

Pasul 2: Conectează Stripe

În Stripe Dashboard, deschide Developers → API keys, copiază cheia publishable și creează o restricted key cu acces write la Customers, Checkout Sessions, Customer portal, Products, Prices, Subscriptions și Webhook Endpoints, și acces read la Invoices (opțional Account, read, ca pagina de setări să poată afișa numele contului și moneda).

Lipește ambele chei la Administration settings → Cashier → Stripe. Începe cu cheile de test (pk_test_…, rk_test_…) și treci la cheile live când totul funcționează.

Apoi apasă Create webhook. Cashier înregistrează https://<your-cloud>/index.php/apps/cashier/webhook în Stripe cu evenimentele de care are nevoie și salvează secretul de semnare. Dacă preferi să o faci manual, adaugă endpoint-ul singur și lipește secretul whsec_….

Verificarea de configurare Cashier (Stripe) din Administration → Overview devine verde după ce a sosit un eveniment verificat. Fă o plată de test sau trimite una cu Stripe CLI (stripe trigger checkout.session.completed) ori din pagina de webhook din Dashboard.

Pasul 3: Definește planurile

Mergi la Administration settings → Cashier → Plans → Add plan. Pentru fiecare plan stabilești:

  • Numele și descrierea în engleză și română.
  • Prețul: lunar, anual sau ambele, în moneda contului tău Stripe. Cu Stripe Tax sau Managed Payments, TVA-ul se adaugă pe pagina de plată.
  • Cota de stocare, de exemplu 100 GB, și grupurile în care intră abonatul.
  • Zilele de probă gratuită, opțional — cardul este totuși colectat.
  • Vizibil pe pagina de înregistrare, sau ascuns și accesibil doar printr-un link direct, util pentru o ofertă de companie.

Planurile sunt create automat în Stripe. Modificarea unui preț creează un preț Stripe nou și îi păstrează pe abonații existenți pe cel vechi până când își schimbă planul, așa că poți crește prețurile fără să rescrii peste noapte abonamentul fiecăruia.

Pasul 4: Alege pagina de înregistrare

Cu Sign-up (recomandat pentru înregistrare plătită simplă), pagina de la /index.php/apps/signup/ oferă planurile tale lângă contul gratuit, sau în locul lui (Sign-up → Registration). Vizitatorul alege un plan, completează formularul Sign-up cu date personale și parolă, confirmă adresa, plătește pe pagina Stripe și revine autentificat într-un cont creat de Sign-up cu cota de stocare și grupurile planului.

Cu IDRegister, după ce Cashier este licențiat și cel puțin un plan este vizibil, pagina de înregistrare de la /index.php/apps/idregister/ oferă „Pay a plan instead of scanning an ID” sub opțiunea cu buletinul, pe telefoane și pe calculatoare. Vizitatorul alege un plan și o perioadă de facturare, introduce o adresă de e-mail, acceptă termenii și o confirmă cu codul de șase cifre al IDRegister, plătește pe Stripe și revine la o pagină care așteaptă câteva secunde confirmarea din partea Stripe. IDRegister creează apoi contul marcat verified by payment, cu cota de stocare și grupurile planului; numele de utilizator și o parolă sunt afișate o singură dată, browserul se autentifică, iar un e-mail de bun venit cu un link pentru alegerea parolei urmează. Aceste conturi sar peste buletin, selfie și aprobarea administratorului; adresa de e-mail este blocată, iar numele poate fi schimbat de utilizator.

În Administration settings → IDRegister → Paid registration poți dezactiva oferta plătită sau dezactiva „Require the identity check only for the free path”, astfel încât și vizitatorii care plătesc să își arate documentul și să facă selfie-ul mai întâi. Dacă ambele aplicații sunt instalate, Rules → Paid sign-up page decide unde merg linkurile proprii ale Cashier (/index.php/apps/cashier/signup și linkul direct al unui plan ascuns …/signup/plan/<token>, cu planul deja ales). Un vizitator care anulează pe pagina Stripe se întoarce la planuri și nu i se percepe nimic.

Pasul 5: Upgrade-uri pentru utilizatorii existenți

Un cont gratuit sau verificat prin IDRegister poate cumpăra un plan pentru mai mult spațiu. Utilizatorii existenți nu trec prin pagina de înregistrare: cumpără din Personal settings → Subscription, unde văd și planul curent, următoarea plată și facturile, și pot schimba planul, actualiza cardul sau anula prin portalul clientului Stripe. Îndrumă-i acolo în răspunsurile de suport; economisește multă corespondență.

Pasul 6: Reînnoiri, plăți eșuate și perioada de grație

Reînnoirile extind contul automat. Când o plată eșuează, Stripe reîncearcă cardul conform setărilor tale Stripe, iar utilizatorul primește o notificare și un e-mail cu un link pentru actualizarea cardului. Contul funcționează în continuare în timpul perioadei de grație, setată în Administration → Cashier → Rules între 0 și 90 de zile (7 implicit); 0 aplică regula următoare imediat ce o plată eșuează.

După perioada de grație contul devine doar-citire (cota redusă la spațiul folosit) sau suspendat, după cum ai ales. Conturile înregistrate prin Sign-up urmează regula Sign-up, care implicit este suspendat. Utilizatorul primește un e-mail cu linkul pentru plata facturii deschise. Un utilizator suspendat care a pierdut acel link îl poate cere din nou pe pagina publică /index.php/apps/cashier/billing, legată de pagina Sign-up. O plată reușită restaurează contul imediat, cu un e-mail.

Promisiunea importantă pe care să le-o faci utilizatorilor: nimic nu este șters vreodată pentru o factură neplătită. Fișierele, partajările și datele rămân așa cum sunt.

Pasul 7: Urmărește partea de administrare

Administration → Cashier listează abonații și venitul lunar și îți permite să prelungești manual un abonament sau să oferi unui utilizator un plan gratuit. Fiecare intrare face legătura cu plata din Stripe. Verificările din Administration → Overview acoperă atât Stripe, cât și pagina de înregistrare, așa că un webhook stricat sau o aplicație de înregistrare lipsă apar acolo, nu într-un tichet de suport.

Sfaturi și depanare

  • Verificarea de configurare rămâne roșie. Nu a sosit încă niciun eveniment Stripe verificat. Fă o plată de test sau declanșează una cu Stripe CLI și confirmă că URL-ul webhook-ului este accesibil prin HTTPS.
  • Nu apar înregistrări plătite. Verifică licența Cashier și licența Sign-up sau IDRegister și confirmă că cel puțin un plan este vizibil. Secțiunea Registration page din setările Cashier spune ce lipsește.
  • Un vizitator a plătit, dar nu are cont. Caută plata în Stripe și verifică livrările webhook-ului. O plată care era în curs când aplicația de înregistrare și-a pierdut licența își primește totuși contul, pentru că Cashier îl creează singur.
  • TVA-ul pare greșit pe pagina de înregistrare. Acea pagină afișează intenționat prețuri fără taxă când Stripe Tax sau Managed Payments este activ; taxa se adaugă pe pagina de plată Stripe.
  • Ai modificat un preț. Abonații existenți rămân pe prețul Stripe vechi până când își schimbă planul. Acesta este comportamentul așteptat, nu un bug.
  • Întrebări despre confidențialitate. Datele cardului sunt gestionate doar de Stripe. Cashier stochează identificatorii clientului și ai abonamentului Stripe, planul și datele plăților, iar conturile create prin plată sunt marcate „verified by payment”, nu prin document de identitate.

Concluzie

Cashier este un instrument îngust care face un singur lucru: leagă o pagină de înregistrare Nextcloud de propriul tău cont Stripe, astfel încât un plan devine un cont cu cota de stocare și grupurile potrivite, iar un card refuzat devine o perioadă de grație în loc de un utilizator șters. Definește câteva planuri, testează cu cheile de test Stripe, urmărește cum verificările din overview devin verzi și ai un mic cloud plătit care rulează pe infrastructura pe care o înțelegi deja. Dacă ceva nu se aliniază, baza de cunoștințe și FAQ sunt următoarea oprire, iar ne poți contacta oricând. Notele de versiune sunt în changelog.

Postarea a fost scrisă cu ajutorul AI pe baza documentației produselor noastre sau a surselor indicate și verificată automat înainte de publicare.

Citește și

Ai un server Emby, Jellyfin sau Nextcloud?

Plugin-urile și aplicațiile noastre adaugă Live TV, subtitrări, înregistrare și securitate pe serverul tău, cu probă gratuită.