Данный API эндпоинт позволяет создавать URL-ы для оплаты без предварительной аутентификации пользователя. API автоматически создает пользователя, если он не существует, и возвращает URL для оплаты.
Эндпоинт
POST https://onlineapp.pro/api/v1/paywall/{paywallId}/start-checkout
Аутентификация
Для использования API необходимо добавить заголовок
x-api-key
с действительным API ключом.Как получить API ключ:
- Войдите в свой аккаунт
- Перейдите в раздел "Настройки" → "API Ключи"
- Создайте новый API ключ или скопируйте существующий
- Используйте этот ключ в заголовке запроса
Параметры Запроса
URL Параметры
- paywallId (строка, обязательный) - ID paywall в URL
Тело Запроса
{ "email": "user@example.com", "priceId": "456", "successUrl": "https://mysite.com/payment/success", "errorUrl": "https://mysite.com/payment/error", "shopUrl": "https://mysite.com/shop", "ignoreActivePurchase": false, "userMeta": { // добавьте любые мета данные чтобы получить их в вебхуке "my-user-uuid": "pojfoih27938y50ujtb4ip1n2b", "utm_source": "facebook" } }
Как получить ID цены? Используйте это API: Get prices
Как получить айди пейвола? Перейдите в настройки пейвола в ЛК и возьмите его из URL.
Пример:
https://monetize.software/en/publisher/paywalls/547
Paywall ID здесь 547
Параметры:
- email (строка, обязательный) - Email пользователя
- priceId (строка/число, обязательный) - ID цены
- successUrl (строка, необязательный) - URL для перенаправления при успешной оплате
- errorUrl (строка, необязательный) - URL для перенаправления при ошибке оплаты
- shopUrl (строка, необязательный) - URL магазина для возврата
- ignoreActivePurchase (булево, необязательный) - Игнорировать проверку активной покупки
Пример Запроса
const paywallId = '123'; const response = await fetch(`/api/v1/paywall/${paywallId}/start-checkout`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': 'your-secret-api-key' }, body: JSON.stringify({ email: 'user@example.com', priceId: '456', successUrl: 'https://mysite.com/payment/success', errorUrl: 'https://mysite.com/payment/error', shopUrl: 'https://mysite.com/shop', ignoreActivePurchase: true }) }); const data = await response.json();
Успешный Ответ
{ "checkoutUrl": "https://checkout.stripe.com/c/pay/cs_test_...", "userId": "uuid-of-user", "acquiring": "stripe" }
Возможные Ошибки
400 - Неверный Запрос
{ "error": "Отсутствуют обязательные параметры: email, priceId" }
{ "error": "Неверный формат email" }
{ "error": "Неверный формат successUrl. Должен быть действительным HTTP/HTTPS URL" }
401 - Неавторизован
{ "error": "Неавторизован" }
409 - Конфликт
{ "error": "У пользователя уже есть активная покупка", "hasActivePurchase": true }
500 - Внутренняя Ошибка Сервера
{ "error": "Внутренняя ошибка сервера" }
Логика Работы
- Проверка параметров - проверяет наличие всех обязательных параметров и корректность формата email
- Проверка URL - проверяет корректность формата successUrl, errorUrl и shopUrl
- Аутентификация - проверяет API ключ
- Проверка пользователя - ищет пользователя в базе данных по email
- Создание пользователя - если пользователь не найден, создает нового
- Привязка к paywall - связывает пользователя с указанным paywall
- Проверка активных покупок - проверяет наличие активных покупок
- Создание checkout - создает платежную сессию и возвращает URL
Безопасность
- API ключ должен храниться в безопасном месте
- Рекомендуется использовать HTTPS для всех запросов
- API автоматически проверяет формат email
- API проверяет формат предоставленных URL
- Проверяются активные покупки для предотвращения дублирования
- Используются безопасные URL по умолчанию
Интеграция
После получения
checkoutUrl
, перенаправьте пользователя на этот URL для завершения оплаты:window.location.href = data.checkoutUrl; // или window.open(data.checkoutUrl, '_blank');
Часто Задаваемые Вопросы
Как проверить статус оплаты?
Для отслеживания статуса оплаты рекомендуется использовать вебхуки.
Альтернативные методы проверки:
- URL перенаправления - обработка успешных/неудачных перенаправлений
- Портал клиента - проверка статуса подписки
Вебхуки являются наиболее надежным способом отслеживания платежей, поскольку они гарантируют доставку уведомлений даже если пользователь закроет браузер после оплаты.