Integrează Comerțul în Aplicația Mea
Folosește Proyecta SDK pentru a crea clienți, a iniția checkouturi, a restricționa funcționalități și a anula abonamente din codul aplicației tale.
După ce ai conectat Stripe și ai creat un produs, integrezi comerțul în aplicație prin resursa SDK proyecta.commerce. Cele mai frecvente patru operațiuni sunt: crearea unui client, inițierea unui checkout, verificarea accesului la funcționalități și anularea unui abonament.
import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });1. Creează un client
Section titled “1. Creează un client”Un client este entitatea facturabilă din aplicația ta — de obicei un utilizator, o organizație sau un proiect. Creează-l imediat ce entitatea corespunzătoare este creată în baza de date, apoi stochează id-ul returnat pentru a putea referenția clientul în checkouturi și verificări de acces.
const customer = await proyecta.commerce.customers.create({ email: 'alice@example.com', name: 'Alice Liddell',});
await db.users.update({ id: userId, proyectaCustomerId: customer.id });Poți transmite și o adresă de facturare (line1, line2, city, state, postal_code, country) la creare sau prin customers.update().
2. Inițiază un checkout
Section titled “2. Inițiază un checkout”commerce.checkout() creează o sesiune de checkout găzduită de Stripe și returnează un URL către care redirecționezi clientul. După plată, Stripe redirecționează clientul către success_url-ul tău.
const { url } = await proyecta.commerce.checkout({ customer_id: customer.id, line_items: [{ variant_id: 'var_pro_monthly', quantity: 1 }], success_url: 'https://myapp.com/welcome', cancel_url: 'https://myapp.com/pricing',});
return Response.redirect(url);Sunt acceptate mai multe line_items. Pentru abonamente, quantity reprezintă numărul de locuri.
3. Verifică accesul la funcționalități
Section titled “3. Verifică accesul la funcționalități”Înainte de a permite unui client să folosească o funcționalitate premium, apelează commerce.check() pentru a verifica dacă are acces:
const { has_access } = await proyecta.commerce.check({ customer_id: customer.id, resource_id: 'feat_pro_features',});
if (!has_access) { return Response.json({ error: 'Upgrade required' }, { status: 402 });}Aceasta este modalitatea recomandată pentru a restricționa conținutul premium. Vezi Produse și Funcționalități pentru modelul de funcționalități/drepturi de acces.
4. Anulează un abonament
Section titled “4. Anulează un abonament”await proyecta.commerce.cancel({ customer_id: customer.id, subscription_id: 'sub_123', cancellation_timing: 'at_billing_period_end', // or 'immediate'});În mod implicit, clientul păstrează accesul până la sfârșitul perioadei de facturare.
Lasă AI-ul să conecteze totul
Section titled “Lasă AI-ul să conecteze totul”Nu trebuie să scrii asta manual. Câteva prompturi frecvente:
"Create a Proyecta customer when a user signs up. Store the proyecta_customer_id on the user record.""Build a /pricing page that shows my Proyecta products and starts a checkout when a button is clicked.""Gate the /admin route — only allow users whose Proyecta customer has access to feat_admin.""When a user clicks Cancel Subscription, call proyecta.commerce.cancel with at_billing_period_end."