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

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

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

Proyecta Commerce использует три концепции: продукты, варианты и функции.

  • Продукт — то, что вы продаёте (например, «Pro Plan», «Футболка», «Стратегическая консультация»)
  • Вариант — ценовой уровень или конфигурация продукта (например, «Pro Monthly $29», «Pro Annual $290», «Футболка — L»)
  • Функция — переиспользуемый ключ права доступа, который ваше приложение проверяет во время выполнения (например, pro_features, unlimited_projects, api_access)

У продукта может быть несколько вариантов. К продукту также привязывается один или несколько ресурсов — как правило, функции — которые предоставляют доступ при оформлении подписки клиентом.

В разделе Dashboard > 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… (SDK поддерживает 130+)
unit_amountЦена в наименьшей единице валюты (центы). 2900 = $29.00
recurringОпционально — { interval: 'week' | 'month' | 'year' }. Не указывайте для разовых платежей. Ежедневное выставление счётов в настоящее время не поддерживается.
is_defaultПринимается, но пока не применяется — выбор варианта по умолчанию в настоящее время не реализован.
mediaПрикрепляйте изображения или видео по идентификатору файла CDN (см. Files)

Цена неизменяема. После создания варианта его цену нельзя изменить — создайте новый вариант. Это защищает существующих подписчиков от случайного изменения цен.

Функции — это базовый примитив управления доступом. Создайте функцию один раз, а затем привяжите её к одному или нескольким продуктам.

// Create a feature
const pro = await proyecta.commerce.features.create({
name: 'Pro features',
description: 'Unlocks the Pro tier capabilities',
// optional custom id — lowercase alphanumeric and underscores only (e.g. 'pro_features')
});

При создании продукта вы привязываете к нему функции через «ресурсы». Клиенты, оформившие подписку на продукт, получают доступ ко всем привязанным к нему функциям.

Затем в вашем приложении можно проверить, есть ли у клиента доступ:

const { has_access } = await proyecta.commerce.check({
customer_id: 'cus_123',
resource_id: 'pro_features',
});

Примечание: resource_id должен быть ключом функции — слагом, производным от названия функции (например, pro_features), а не свойством .id объекта функции, возвращаемым методом features.create().

Именно так вы закрываете доступ к страницам, API endpoint-ам или возможностям, доступным только в Pro, в коде приложения.

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

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