Продукты и функции
Определи, что ты продаёшь. Создавай продукты с одним или несколькими вариантами, прикрепляй переиспользуемые функции для контроля доступа на основе прав.
Proyecta Commerce использует три понятия: продукты, варианты и функции.
- Продукт — то, что ты продаёшь (например, «Pro Plan», «Футболка», «Стратегическая консультация»)
- Вариант — ценовой тариф или конфигурация продукта (например, «Pro Monthly $29», «Pro Annual $290», «Футболка — размер L»)
- Функция — переиспользуемый ключ права доступа, который приложение проверяет во время выполнения (например,
pro_features,unlimited_projects,api_access)
Продукт может иметь несколько вариантов. К продукту также прикрепляется один или несколько ресурсов — как правило, функции — которые открывают доступ при оформлении подписки.
Два способа смоделировать то, что ты продаёшь
Заголовок раздела «Два способа смоделировать то, что ты продаёшь»Commerce взаимодействует с остальной частью платформы, поэтому «то, что ты продаёшь» может принимать две формы — Proyecta автоматически выбирает подходящую:
- Нативные продукты Commerce — подписки, планы, разовые апгрейды и функции/права доступа. Создаются непосредственно в Admin > Commerce > Products. Именно эту модель описывает остальная часть страницы.
- Каталог на основе контента — товары с фотографиями, ценами и описаниями, которые владелец бизнеса редактирует в повседневной работе. Они хранятся в CMS как продаваемая коллекция: каждая запись является продуктом. При публикации записи Proyecta автоматически интегрирует её в Commerce как полноценный, готовый к покупке продукт — создаёт продукт и его ценовой вариант, копируя цену прямо из поля контента. Витрина отображает цену из контента, а оформление заказа списывает средства через связанный вариант; поскольку у них один источник, они никогда не могут разойтись. Управляй такими позициями как контентом (в Admin твоего приложения, в builder или на опубликованном сайте), а не через Commerce > Products. См. Управление контентом.
Обычный каталог, который не принимает платежи по карте — меню только для просмотра или магазин, кнопка «купить» которого открывает ссылку для заказа в WhatsApp — является просто обычным контентом: обычной коллекцией каталога без интеграции с Commerce. Именно оплата по карте делает коллекцию продаваемой.
Создание продукта
Заголовок раздела «Создание продукта»В Admin > Commerce > Products нажми Create product (или попроси AI: "Create a Pro plan at $29/month and a Business plan at $99/month."). Каждый продукт требует:
- Отображаемое название (например, «Pro»)
- Хотя бы один вариант
Варианты
Заголовок раздела «Варианты»Каждый вариант имеет собственные настройки цены:
| Поле | Примечания |
|---|---|
name |
Отображаемое название варианта («Monthly», «Annual», «Large») |
currency |
Трёхбуквенный код ISO — USD, EUR, GBP, JPY, BRL, MXN, INR… (поддерживается 130+ валют) |
unit_amount |
Цена в наименьшей единице валюты (центы). 2900 = $29.00 |
recurring |
Необязательно — { interval: 'week' | 'month' | 'year' }. Не указывай для разовых платежей. Ежедневное списание в настоящее время не поддерживается. |
is_default |
Принимается, но пока не применяется — выбор варианта по умолчанию ещё не реализован. |
media |
Прикрепляй изображения или видео по CDN file ID (см. Файлы) |
Цены неизменяемы. После создания варианта его цену нельзя изменить — вместо этого создай новый вариант. Это защищает существующих подписчиков от случайного изменения цен.
Функции (права доступа)
Заголовок раздела «Функции (права доступа)»Функции — это базовый примитив контроля доступа. Создай функцию один раз в Admin > Commerce > Products, а затем прикрепи её к одному или нескольким продуктам. Каждая функция имеет название, необязательное описание и ключ — строчные буквы, цифры и символы подчёркивания (например, pro_features) — именно его проверяет приложение.
При создании продукта ты прикрепляешь к нему функции через «ресурсы». Клиенты, оформившие подписку на продукт, получают доступ ко всем прикреплённым к нему функциям.
Затем в своём приложении используй проверку по этому ключу:
const { hasAccess, isLoading } = useEntitlement('pro_features');
if (isLoading) return <Spinner />;if (!hasAccess) return <UpgradePrompt />;return <ProOnlyThing />;Проверка выполняется на стороне сервера относительно авторизованной сессии, поэтому её нельзя подделать из браузера. Полный паттерн см. в Интеграция Commerce в приложение.
Примечание: Всегда проверяй ключ функции — slug, производный от названия функции (например,
pro_features), — а не внутренний id функции.
Именно так можно закрывать доступ к Pro-страницам, API endpoints или функциям в коде приложения.
Типичные формы продуктов
Заголовок раздела «Типичные формы продуктов»SaaS-подписки
Create products: Free ($0/month), Pro ($29/month, $290/year), Business ($99/month, $990/year).Attach a 'pro_features' feature to Pro and Business so I can gate access in my code.Физические товары
Create a T-shirt product with three variants: Small, Medium, Large at $25 each.Цифровые товары
Create a course product with a single one-time variant at $149.Пожертвования
Create a donation product with three variants: $25, $50, $100 — all one-time.Управление складом
Заголовок раздела «Управление складом»Proyecta Commerce в настоящее время не отслеживает складские запасы для физических товаров. Если ты продаёшь товары со склада, управляй остатками в базе данных своего приложения и проверяй их в процессе оформления заказа.
Скоро появится
Заголовок раздела «Скоро появится»- Кастомизация полей оформления заказа — сбор дополнительной информации от покупателей
- Ценообразование «заплати сколько хочешь»
- Встроенное управление складом для физических товаров