Подписки
Coin Moebius может продавать регулярные подписки на каждом фиатном провайдере в вашем меню. Продавец настраивает цену и интервал на товаре один раз; кнопка покупки на сайте остаётся ровно той же. Платёжный провайдер ведёт регулярный биллинг, держит карту, повторяет неудавшиеся продления и размещает страницу отмены. Coin Moebius ретранслирует события жизненного цикла в ваш код.
Настройка регулярного товара
Во вкладке Товары в панели управления задайте полю Биллинг значение Ежемесячно или Ежегодно вместо «Разово». Появляется необязательное поле Бесплатный пробный период для любого числа пробных дней, которые вы хотите дать до первого списания. Сохраните товар.
HTML кнопки покупки не меняется. Тот же атрибут product-id="pro-plan" работает для разового или регулярного; обработчик проверяет настройку биллинга товара в момент оформления и направляет через API подписок провайдера, когда это применимо.
<coin-moebius-buy
project-id="proj_YOUR_ID"
product-id="pro-plan"
label="Subscribe to Pro">
</coin-moebius-buy>Что вам не нужно строить
Провайдер ведёт график. Мы не храним карты. Мы не запускаем cron-задачи. Мы не повторяем неудавшиеся списания. Мы не отправляем письма с напоминаниями об оплате. Мы не размещаем страницу отмены. Вся эта сторона системы живёт внутри Stripe (или того фиатного провайдера, что вы подключили). Вы отдаёте сложные части регулярного биллинга на аутсорс компании, которая уже ведёт их для миллионов продавцов.
События подписок
Продления и отмены появляются как события вебхуков, на которые ваш сервер может реагировать. Пять нормализованных типов покрывают жизненный цикл:
| Событие | Когда срабатывает |
|---|---|
subscription.created | Новая регистрация. Несёт сумму первого цикла. |
subscription.renewed | Не-начальный цикл прошёл успешно. Продлите доступ до конца нового периода. |
subscription.payment_failed | Карта цикла была отклонена. Напоминания об оплате провайдера повторяются по его графику; обычно вы просто логируете это для видимости. |
subscription.canceled | Завершающая отмена. Покупатель отменил, напоминания об оплате исчерпаны или продавец отменил. |
subscription.updated | Изменение статуса, обновление карты, смена плана. Изучите новый статус. |
Идентификация покупателей без их хранения
Coin Moebius, это платёжный маршрутизатор, а не база данных клиентов. Мы никогда не храним почты покупателей, имена, адреса или внутренние id клиентов провайдера. Если у вашего приложения есть учётные записи пользователей (у большинства приложений с подписками они есть), передавайте свой собственный непрозрачный id пользователя как customer-ref на кнопке покупки. Кнопка передаёт его обработчику как metadata.customerRef, мы пропускаем его к провайдеру, выводим обратно на каждом событии и храним только эту непрозрачную строку. Для нас она бессмысленна; для вас, это внешний ключ в вашу собственную систему пользователей.
<coin-moebius-buy
project-id="proj_YOUR_ID"
product-id="pro-plan"
customer-ref="user_bob_42">
</coin-moebius-buy>Когда вам нужны более глубокие детали покупателя (почта, последние четыре цифры карты, заметки о споре), панель управления ведёт каждую карточную транзакцию наружу к провайдеру, который её обработал (Stripe, PayPal, Square или Authorize.Net), где на самом деле живёт запись покупателя. Вы переходите по ссылке; мы никогда её не дублируем.
Отмена: ссылайтесь наружу, не стройте
Покупатели отменяют в размещённом портале провайдера: Stripe Customer Portal, странице счёта PayPal покупателя и так далее. Портал ведёт отмену, обновления карты, скачивание квитанций и смену плана, весь интерфейс, который вам не нужно строить. Вы можете направить покупателя в портал одним вызовом API:
const res = await fetch(
`https://api.coinmoebius.com/api/subscriptions/${projectId}/${subId}/portal-url`,
{ method: 'POST', body: JSON.stringify({ returnUrl: 'https://you.example/account' }) },
);
const { url } = await res.json();
window.location.assign(url);Какие провайдеры поддерживают подписки сегодня
Stripe и PayPal работают от начала до конца через размещённую кнопку покупки. Задайте товару «Ежемесячно» или «Ежегодно» в панели управления, вставьте кнопку на свою страницу, и нажатие запускает настоящую подписку. Провайдер ведёт продления.
Подписки Square и Authorize.Net не идут через размещённую кнопку покупки. Вы создаёте подписку через собственную интеграцию с провайдером (для Authorize.Net это означает сбор карты на вашей собственной странице через Accept.js; у Square есть собственное размещённое оформление подписок, которым можно воспользоваться), затем направляете вебхук провайдера на нас. Дальше остальная система (маршрутизация вебхуков, панель, статус-эндпоинт, привязка клиента) работает ровно так же, как для подписок Stripe и PayPal. Смотрите следующий раздел.
Крипто-провайдеры (NOWPayments) не поддерживают регулярный биллинг в этом продукте. Регулярная крипта тяжела по трению на каждом шлюзе, что мы оценивали; мы предпочтём не выпускать ничего, чем выпустить недоделанную историю для неё.