Інтеграція комерції в мій застосунок
Використовуйте Proyecta SDK для створення клієнтів, запуску оформлення замовлень, обмеження доступу до функцій та скасування підписок із коду вашого застосунку.
Після підключення Stripe та створення продукту ти підключаєш комерцію до свого застосунку через ресурс SDK proyecta.commerce. Чотири найпоширеніші операції: створити клієнта, запустити оформлення замовлення, перевірити доступ до функції та скасувати підписку.
import Proyecta from '@proyecta-ai/sdk';
const proyecta = new Proyecta({ apiKey: process.env.PROYECTA_API_KEY });1. Створення клієнта
Section titled “1. Створення клієнта”Клієнт — це платіжна сутність у твоєму застосунку, зазвичай користувач, організація або проєкт. Створюй його одразу після того, як відповідна сутність з’являється у твоїй базі даних, і зберігай повернутий id, щоб посилатися на клієнта під час оформлення замовлень та перевірки доступу.
const customer = await proyecta.commerce.customers.create({ email: 'alice@example.com', name: 'Alice Liddell',});
await db.users.update({ id: userId, proyectaCustomerId: customer.id });Також можна передати адресу для виставлення рахунку (line1, line2, city, state, postal_code, country) під час створення або через customers.update().
2. Запуск оформлення замовлення
Section titled “2. Запуск оформлення замовлення”commerce.checkout() створює hosted-сесію оформлення замовлення у Stripe та повертає URL для перенаправлення клієнта. Після оплати Stripe перенаправляє клієнта на вказаний success_url.
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);Підтримується кілька line_items. Для підписок quantity означає кількість місць.
3. Перевірка доступу до функції
Section titled “3. Перевірка доступу до функції”Перш ніж дозволити клієнту використовувати преміум-функцію, виклич commerce.check(), щоб перевірити наявність доступу:
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 });}Це рекомендований спосіб обмеження доступу до преміум-контенту. Дивись Продукти та функції для ознайомлення з моделлю функцій та прав доступу.
4. Скасування підписки
Section titled “4. Скасування підписки”await proyecta.commerce.cancel({ customer_id: customer.id, subscription_id: 'sub_123', cancellation_timing: 'at_billing_period_end', // or 'immediate'});За замовчуванням клієнт зберігає доступ до кінця поточного платіжного періоду.
Дозволь ШІ підключити все автоматично
Section titled “Дозволь ШІ підключити все автоматично”Тобі не потрібно писати цей код вручну. Поширені промпти:
"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."