Сначала объясните, что получает покупатель и будет ли повторное списание
Определите условия продукта до разработки платежной интеграции. Разовая покупка доступа на 30 дней и ежемесячная подписка с автопродлением могут давать похожие возможности, но правила списания у них разные. Разовая покупка заканчивается по истечении указанного срока; для продолжения нужна новая покупка. Автопродление требует понятного описания списаний, действующего согласия покупателя и поддержки подписок, фактически разрешенной для конкретного магазина и способа оплаты.
При продажах в России возможность принять разовый местный платеж не означает, что тем же способом доступны регулярные списания. Валюта цены, первый платеж, периодичность продления, порядок отмены и срок доступа должны совпадать на русскоязычной странице покупки и в Checkout.
- Платный доступ: укажите начало и окончание срока, а также сохраняется ли доступ до конца оплаченного периода после отключения продления.
- Кредиты: объясните количество, назначение, срок действия и правила обработки возвратов. В этой статье кредиты означают единицы использования продукта, а не денежный баланс для вывода или свободного перевода.
- Годовой тариф: разделяйте единовременную оплату за год и ежемесячное начисление возможностей или лимитов. Ежемесячное начисление не означает нового ежемесячного списания.
Свяжите подтвержденную оплату с правильным аккаунтом
Предположим, аккаунт A покупает 100 кредитов. До создания покупки сохраните в своей системе аккаунт, выбранный тариф и идентификатор покупки, затем свяжите эту запись с платежным заказом через поддерживаемые поля. Не определяйте аккаунт только по электронной почте плательщика и не начисляйте кредиты лишь потому, что браузер открыл страницу успешной оплаты. Покупатель может закрыть страницу, а уведомление может прийти позже перенаправления.
Сервер продавца должен проверить подпись платежного уведомления, заказ, сумму, валюту, продукт и среду Test или Live, а затем найти исходную покупку. После подтверждения оплаты начислите 100 кредитов ровно один раз и сохраните результат. При активации платного доступа действует тот же принцип.
- Подтверждение оплаты: зафиксируйте оплаченный заказ. Если подтверждения нет или данные противоречат друг другу, сначала запросите статус заказа.
- Предоставление возможностей: сохраните, какому аккаунту что было выдано, в каком количестве или на какой срок.
- Информация для покупателя: покажите результат и номер заказа. При задержке предоставьте понятное сообщение о статусе и способ обращения в поддержку.
Обрабатывайте продление, отмену и истечение платежной сессии отдельно
После успешного продления продлите доступ или начислите согласованный лимит за оплаченный период. Если продление не удалось, не выдавайте новые оплачиваемые возможности. Льготный период и приостановка обслуживания должны соответствовать условиям, раскрытым при покупке; не удаляйте автоматически доступ, который еще действует благодаря предыдущей оплате.
Отмена продления в конце периода обычно прекращает следующее списание, но сохраняет доступ до окончания оплаченного срока согласно применимым условиям. Изменяйте доступ после подтверждения фактического окончания или другого соответствующего статуса. Запрос на отмену, вступившая в силу отмена и завершенный возврат денег — разные факты.
Истекшая платежная сессия обычно означает, что покупка не была завершена в пределах срока действия платежной страницы. Это не означает окончания действующей подписки и не должно лишать покупателя возможностей, полученных по предыдущим покупкам.
Корректируйте доступ или кредиты после успешного возврата
Свяжите возврат с исходным заказом и подтвердите его успешное завершение, прежде чем менять доступ или лимиты по раскрытым правилам продукта и применимым требованиям защиты потребителей. Ожидающий или неудавшийся возврат нельзя считать завершенным. Возврат также не подтверждает прекращение будущих регулярных списаний: отмену подписки нужно обработать отдельно и проверить результат.
Для частичного возврата нужны явные правила. Он может относиться к неиспользованному сроку, отдельному дополнению или корректировке цены, поэтому не всегда означает пропорциональное списание кредитов. Если из исходных 100 кредитов использовано 40, система должна различать начисление по этому заказу, использованную часть и остаток, не затрагивая кредиты из другой покупки. Сохраняйте историю и передавайте спорные случаи на ручную проверку, если правильную корректировку нельзя определить автоматически.
- Исключайте повторную обработку по уникальному идентификатору возврата и связывайте его с исходным заказом.
- Отдельно учитывайте исходную сумму заказа, сумму текущего успешного возврата и общую сумму всех успешных возвратов.
- Сохраняйте исходные записи оплаты и начислений. Добавляйте записи корректировок вместо перезаписи истории.
Повторные уведомления и другой порядок событий не должны приводить к ошибкам
Из-за сетевых тайм-аутов одно уведомление может прийти повторно, а разные события — не в хронологическом порядке. Система должна проверять и факт обработки события, и то, выполнено ли уже соответствующее действие по заказу, расчетному периоду или возврату. Новое уведомление само по себе не повод начислять еще один пакет кредитов.
Сначала надежно сохраните событие, затем подтвердите получение и обработайте его по правилам интеграции. Ответ HTTP 200 подтверждает получение запроса, но не предоставление покупателю доступа или кредитов. Если возврат пришел раньше задержавшегося уведомления об оплате, сверьте полное состояние заказа и историю обработки, чтобы позднее уведомление ошибочно не восстановило отмененные начисления. При пропусках или противоречиях сначала проверяйте данные, а не повторяйте списание денег или выдачу возможностей вслепую.
До запуска проверьте путь покупателя, а не только соединение
Начните с тестового аккаунта в собственном продукте: выбор тарифа, создание покупки, получение проверенного уведомления, предоставление возможностей и отображение результата покупателю. Проверки в Test охватывают только предоставленные на данный момент сценарии. Для неподдерживаемых событий согласуйте способ проверки; локальная имитация или успешный ответ сервера не равны полной сквозной приемке.
Фиксируйте среду, связь заказа и события, а также результат предоставления доступа или начислений. Отделяйте тестовые данные от реальных продаж. Необходимость и время проверки реального платежа определяются разрешенным объемом работ; обязательное реальное списание не должно становиться избыточным условием запуска для каждого продавца.
- Разовая покупка: возможности предоставляются и после закрытия страницы успеха, а повторное уведомление не вызывает повторного начисления.
- Подписка: отдельно проверьте правила для первого платежа, продления, неудавшегося продления, отмены в конце периода и фактического окончания.
- Возврат: успешный, неудавшийся и частичный возврат, а также изменение порядка событий не должны приводить к неправильной корректировке доступа.
В чем помогает NineLogix и за что отвечает продавец
Для разрешенных видов деятельности NineLogix связывает магазины, продукты и цены, Checkout или API-интеграцию и обработку транзакций. Уведомления с подписью, запросы статуса заказов и помощь в разборе исключений предоставляются в пределах фактически поддерживаемых возможностей. Сначала определите путь продажи, способы оплаты и доступные функции подписки, затем согласуйте необходимые события и информацию для безопасного подключения.
Продавец отвечает за аккаунты пользователей, тарифы и правила доступа, фактическое предоставление возможностей и пользовательский опыт. Подтвержденному NineLogix платежу должна соответствовать запись обработки в системе продавца. Оплата, предоставление продукта, доступность средств для расчетов и завершенная выплата продавцу — отдельные результаты.
Местный эквайринг в России не заменяет проверку прав на продукт, юридического лица продавца, направления транзакции, банков и применимых санкций или экспортных ограничений. Подача заявки или успешная проверка в Test не означает разрешения на запуск для всех рынков, продуктов и способов оплаты.
Частые вопросы
Обязательно ли автопродление для доступа на 30 дней?
Нет. Это может быть разовая покупка на фиксированный срок или регулярная подписка с разрешенным способом оплаты. Укажите выбранную модель на странице продукта и покупки.
Что произойдет, если покупатель закроет страницу после оплаты?
Предоставление продукта должно зависеть от статуса оплаты, проверенного сервером, а не от нахождения покупателя на странице успеха. Свяжите заказ с аккаунтом продукта и надежно обработайте уведомление или проверенный статус заказа.
Нужно ли сразу удалять доступ и кредиты после отмены подписки?
Не во всех случаях. Отмена в конце периода обычно прекращает следующее продление, сохраняя оплаченный срок согласно применимым условиям. Для возвратов, немедленной отмены и ограничений из-за споров нужны отдельные подтвержденные факты и правила.
Доказывает ли ответ HTTP 200 на вебхук успешную интеграцию?
Он подтверждает получение запроса. Также нужно проверить привязку аккаунта и заказа, фактическое изменение доступа или начислений и правильную обработку повторных событий и событий, пришедших не по порядку.
Источники и границы применения
Эти источники описывают авторизацию локальных платежей и отдельные ограничения на услуги, связанные с Россией. Они не означают допуск любого продавца, продукта или способа оплаты. Руководствуйтесь согласованной спецификацией интеграции и условиями работы.