> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# Настройка платежей

Выберите биллинг-адаптер и подключите его подписанный вебхук к правам доступа.

## Настройка и конфигурация

Перед любым действием прочтите [Перед началом работы](https://supastack.dev/ru/docs/web/before-you-start.md) и [Основные сведения о терминале](https://supastack.dev/ru/docs/web/terminal-basics.md). В этих инструкциях предполагается, что вы открыли полный монорепозиторий supastack в VS Code; его корень package.json отмечает корень репозитория. В командах pnpm пакет рабочей области представляет собой папку приложения или общего кода; В продукте рабочее пространство — это контейнер данных и граница безопасности команды. corepack pnpm --filter ... выбирает один пакет из монорепозитория, пока команды выполняются из его корня. Если вы открыли только синхронизированную папку мобильного устройства или рабочего стола, она не содержит веб-серверной части, настройки Docker или корневых сценариев: запустите серверную часть из этого монорепозитория или доступного размещенного сервера и используйте собственные сценарии папки платформы. Переменная среды — это именованный параметр, хранящийся в локальном файле .env или на панели управления хостингом; перезапустите соответствующее приложение после его изменения и не допускайте попадания секретов сервера в значения NEXT_PUBLIC_ и EXPO_PUBLIC_.

1. Откройте apps/web/.env.local и сохраните BILLING_PROVIDER=local, изучая экран оформления заказа.

2. Для реальной интеграции создайте продукты тестового режима у одного поставщика, затем добавьте ключи его сервера и секрет веб-перехватчика в настройки частной среды веб-хоста. Вебхук — это подписанное сообщение, которое служба выставления счетов отправляет в ваше приложение после оформления заказа, продления или отмены; путь к конечной точке указан в примере кода этого руководства.

3. Запустите Интернет с помощью corepack pnpm --filter @supastack/web dev и протестируйте только песочницу. Ожидается: проверенный веб-перехватчик обновит права рабочей области, для которой выполнен вход; открытие страницы оформления заказа само по себе не дает доступа.

Используйте учетные данные песочницы/тестирования при интеграции. Настройте BILLING_PROVIDER плюс секреты только для сервера провайдера: Stripe → STRIPE_SECRET_KEY, STRIPE_PRICE_ID, STRIPE_WEBHOOK_SECRET; лимонный сок → LEMONSQUEEZY_API_KEY, LEMONSQUEEZY_STORE_ID, LEMONSQUEEZY_VARIANT_ID, LEMONSQUEEZY_WEBHOOK_SECRET; кремовый → CREEM_API_KEY, CREEM_PRODUCT_ID, CREEM_WEBHOOK_SECRET (CREEM_TEST_MODE=true для песочницы); полярные → POLAR_ACCESS_TOKEN, POLAR_PRODUCT_ID, POLAR_WEBHOOK_SECRET (POLAR_SERVER); упс → WHOP_API_KEY, WHOP_PLAN_ID, WHOP_WEBHOOK_SECRET; весло → PADDLE_API_KEY, PADDLE_PRICE_ID, PADDLE_WEBHOOK_SECRET (PADDLE_ENVIRONMENT); додо → DODO_PAYMENTS_API_KEY, DODO_PRODUCT_ID, DODO_PAYMENTS_WEBHOOK_KEY (DODO_PAYMENTS_ENVIRONMENT); PayPal → PAYPAL_CLIENT_ID, PAYPAL_CLIENT_SECRET, PAYPAL_PLAN_ID, PAYPAL_WEBHOOK_ID (PAYPAL_ENVIRONMENT). Цена/продукт должна соответствовать предполагаемой повторяющейся подписке.

```
Webhook endpoint: /api/billing/webhook (stripe), /api/billing/webhook/lemonsqueezy, /api/billing/webhook/creem, /api/billing/webhook/polar, /api/billing/webhook/whop, /api/billing/webhook/paddle, /api/billing/webhook/dodo, /api/billing/webhook/paypal
Checkout endpoint: /api/billing/checkout
Portal endpoint: /api/billing/portal
```


## Команды для копирования

Следуйте комментариям, чтобы узнать, в какой папке запускается команда. Если помечены два терминала, откройте два окна терминала и продолжайте выполнять первую команду, пока используете вторую.

```
corepack pnpm --filter @supastack/web dev
```


## Рабочий процесс внедрения

Следуйте списку событий жизненного цикла в docs/real-provider-smoke.md при настройке endpoint вебхука. Проверка подписи требует соответствующего секрета вебхука endpoint. Один лишь редирект на оплату никогда не должен давать доступ.

Право доступа на границе серверного действия решает, разрешена ли платная работа. Обрабатывайте повторные события безопасно и ограничивайте записи клиентов/подписок правильным воркспейсом. Веб-оплата остаётся отдельной от нативных покупок.

Ключ, который предоставляет план, — это словарь продукта, общий для всех поверхностей: ProductPlan.entitlement в src/product-plans.ts объявляет машинный ключ в нижнем регистре, записываемый в реестр, пока план оплачивается (комплект поставляется с «ai.reference-task» для pro и life; src/billing-runtime.ts передает его в BFF). Один и тот же ключ — это то, с чем сравниваются поле require_entitlement записи CMS и свойство entitlementKey компонента EntitlementKey, сравнивающее равенство — запись, закрытая на «ai.reference-task», разблокируется для любого рабочего пространства, содержащего этот грант, в то время как ключ, который не предоставляет ни один план, остается заблокированным для всех.


## Проверка и устранение неполадок

Если веб-перехватчик отклонен, сравните точную песочницу URL и секрет подписи на панели мониторинга поставщика с настройками сервера и проверьте, требует ли этот поставщик переадресации запросов на localhost. Если проверка работает, но доступ остается заблокированным, проверьте результат веб-перехватчика и ключ доступа в плане. Никогда не тестируйте данные с реальными платежными данными, следуя этому местному руководству.

Тестируйте активацию, обновления, отмену, неверные подписи и повторные события в sandbox. Инспектируйте сохранённое состояние доступа после обработки. Создание неиспользованной сессии оплаты доказывает только связность, а не выполнение жизненного цикла.


Чтобы продолжить настройку, прочитайте [Настройка почты](https://supastack.dev/ru/docs/web/setup-email.md).


## Вперёд

[Биллинг и доступ](https://supastack.dev/ru/docs/modules/billing.md)
