Данный API эндпоинт позволяет создавать URL портала клиента без предварительной аутентификации пользователя. API автоматически создает пользователя, если он не существует, и возвращает URL для портала клиента.
Эндпоинт
POST https://onlineapp.pro/api/v1/paywall/{paywallId}/get-customer-portal
Аутентификация
Для использования API необходимо добавить заголовок
x-api-key
с действительным API ключом.Как получить API ключ:
- Войдите в свой аккаунт
- Перейдите в раздел "Настройки" → "API Ключи"
- Создайте новый API ключ или скопируйте существующий
- Используйте этот ключ в заголовке запроса
Параметры Запроса
URL Параметры
- paywallId (строка, обязательный) - ID paywall в URL
Тело Запроса
{ "email": "user@example.com", "userMeta": { // добавьте любые мета данные чтобы получить их в вебхуке "my-user-uuid": "pojfoih27938y50ujtb4ip1n2b", "utm_source": "facebook" } }
Как получить айди пейвола? Перейдите в настройки пейвола в ЛК и возьмите его из URL.
Пример:
https://monetize.software/en/publisher/paywalls/547
Paywall ID здесь 547
Параметры:
- email (строка, обязательный) - Email пользователя
- userMeta (объект, необязательный) - Метаданные пользователя (будут привязаны к пользователю и возвращаться в событиях вебхуков)
Пример Запроса
const paywallId = '123'; const response = await fetch(`/api/v1/paywall/${paywallId}/get-customer-portal`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-api-key': 'your-secret-api-key' }, body: JSON.stringify({ email: 'user@example.com', "userMeta": { // добавьте любые мета данные чтобы получить их в вебхуке "my-user-uuid": "pojfoih27938y50ujtb4ip1n2b", "utm_source": "facebook" } }) }); const data = await response.json();
Успешный Ответ
{ "url": "https://checkout.stripe.com/c/pay/cs_test_..." }
Возможные Ошибки
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
- Создание customer portal - создает портал и возвращает URL
Безопасность
- API ключ должен храниться в безопасном месте
- Рекомендуется использовать HTTPS для всех запросов
- API автоматически проверяет формат email
- API проверяет формат предоставленных URL
- Используются безопасные URL по умолчанию
Интеграция
После получения
checkoutUrl
, перенаправьте пользователя на этот URL для завершения оплаты:window.location.href = data.url; // или window.open(data.url, '_blank');