CreatiumMax

Подключение Stripe

Настройка единовременного платежа (one time payment) через страницу оплаты Stripe.

Основа шагов совершения платежа

Шаги для успешного оборота оплаты через Stripe можно описать следующим образом:

  1. Пользователь отправляет форму оплаты со своими данными и данными о товаре в сценарий создания новой платежной сессии.

  1. Сценарий новой сессии оплаты отправляет данные для оплаты в Stripe и создает сессию платежа.

  1. Stripe генерирует и возвращает ссылку для оплаты.

  1. Пользователь перенаправляется по ссылке и оплачивает товар на стороне Stripe.

  1. После успешной оплаты, Stripe отправляет вебхук в наш сценарий успешного платежа.

  1. Сценарий успешного платежа проводит верификацию полученных данных Stripe и в случае успешной верификации отмечает сессию платежа как успешную.

Настройка Stripe

Добавьте ключевое событие для отслеживания успешного платежа - checkout.session.completed

💡В Stripe доступно множество других событий для запуска вебхука, для которых тоже можно настроить специфический сценарий действий. Пример: событие checkout.session.expired которое отправляет вебхук когда время сессии платежа было исчерпано.

Создайте на стороне Creatium Max сценарий для обработки успешной оплаты. Укажите адрес сценария в конфигурацию вебхука Endpoint URL.

Обратите внимание на значение Signing secret - оно понадобится позже, для валидации запросов от Stripe.

Полезные ссылки

Настройка на Creatium Max

База данных сессий платежей

Для учета сессий платежей необходима таблица со следующими колонками:

  1. Идентификатор (id) - генерируется автоматически Creatium Max.

  1. Идентификатор сессии в Stripe (stripe_session_id) - уникальная строка, которая назначается сессиям на стороне Stripe.

  1. Номер транзакции (transaction_number) - уникальный номер числового формата, который может предоставляться пользователю совершившему оплату.

  1. Статус оплаты (payment_status) - строка, для отслеживания статуса сессии платежа.

Необязательные, но полезные колонки:

  1. Почта покупателя (buyer_email) - контактные данные пользователя, которые он оставил при совершении покупки. Для работоспособности интеграции Stripe эта колонка не важна - здесь могут храниться любые данные пользователя.

  1. Товары (items) - необязательный массив или объект, куда будут записаны купленные товары.

  1. Ссылка на оплату (invoice_link) - строка, содержащая в себе URL сформированный для оплаты на стороне Stripe.

Создание страниц оплаты и отмены

Необходимы следующие страницы:

  • Страница оформления покупки или страница товара с формой, откуда пользователь будет перенаправлен на оплату Stripe. Сценарий создания сессии оплаты будет возвращать ссылку для оплаты и чтобы перенаправлять пользователя после генерации ссылки укажите адрес для перенаправления - <%= response %>.

  • Страница успешного платежа /success - куда пользователи будут направлены после успешной оплаты. Эта страница может быть общая или шаблонная. В случае шаблонной, при каждой новом успешном платеже, пользователь будет перенаправлен на свою уникальную страницу.
    Шаблоны сценариев ниже созданы учитывая структуру с шаблонной страницей /transaction_page, которая подключена к базе данных сессий платежей и является дочерней страницей папки /success.

  • Страница отмены платежа /cancel - общая страница, куда пользователи будут направлены в случае отмены оплаты.

Сценарии создания сессии и успешной оплаты

Необходимы два сценария:

  • Сценарий создания платежной сессии - будет запущен при отправке формы со страницы покупки. Настраивается под проект. Использует API ключ Secret Key для HTTP запроса в Stripe.

Шаблон сценария

💡В шаблоне приведен пример оплаты одного товара, но формат массива items позволяет добавить множество товаров через запятую.

Подробнее этот объект описан в документации API Stripe здесь:
https://docs.stripe.com/api/checkout/sessions/object

Сценарий успешной оплаты - будет запущен при совершении оплаты, когда Stripe отправит вебхук по событию checkout.session.completed. Содержит ручную верификацию вебхука Stripe на основе ранее созданного Signing secret вебхука и хеширования HMAC.
Метод ручной верификации шифрованием описан более подробно в документации Stripe:
https://docs.stripe.com/webhooks?verify=verify-manually

Шаблон сценария

Тестирование и перевод ключей на live платежи

На любом из этапов подключения Stripe в тестовом режиме, оплату можно протестировать используя тестовые реквизиты банковской карты: https://docs.stripe.com/testing#cards

Панель управления вебхуками позволяет вручную отправлять любые события для тестирования сценария: https://dashboard.stripe.com/test/workbench/webhooks

После успешного тестирования, для перевода интеграции на настоящие платежи необходимо отключить в Stripe тестовый режим и пересоздать вебхук с live API ключом. “Боевой” API ключ Secret Key имеет формат sk_live_51QBX3qH.......Pg0DcH5X

Было полезно?

Остались вопросы? — Напишите нам в чат поддержки будучи авторизованным в своем аккаунте cremax.ru или через чат поддержки в Телеграме: @CreatiumMaxSupportBot