Перейти к содержимому

Продукты и функции

Определи, что ты продаёшь. Создавай продукты с одним или несколькими вариантами, прикрепляй переиспользуемые функции для контроля доступа на основе прав.

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 в настоящее время не отслеживает складские запасы для физических товаров. Если ты продаёшь товары со склада, управляй остатками в базе данных своего приложения и проверяй их в процессе оформления заказа.

  • Кастомизация полей оформления заказа — сбор дополнительной информации от покупателей
  • Ценообразование «заплати сколько хочешь»
  • Встроенное управление складом для физических товаров