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

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

Шаги для успешного оборота оплаты через Stripe можно описать следующим образом:
  1. Пользователь отправляет форму оплаты со своими данными и данными о товаре в сценарий создания новой платежной сессии.
  1. Сценарий новой сессии оплаты отправляет данные для оплаты в Stripe и создает сессию платежа.
  1. Stripe генерирует и возвращает ссылку для оплаты.
  1. Пользователь перенаправляется по ссылке и оплачивает товар на стороне Stripe.
  1. После успешной оплаты, Stripe отправляет вебхук в наш сценарий успешного платежа.
  1. Сценарий успешного платежа проводит верификацию полученных данных Stripe и в случае успешной верификации отмечает сессию платежа как успешную.

Настройка Stripe

  • Создайте Webhook для отслеживания статуса платежа. Убедитесь, что вебхук - тестового режима: https://dashboard.stripe.com/test/workbench/webhooks
    • Скриншот
      Добавьте ключевое событие для отслеживания успешного платежа - 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.
    • Скриншот структуры папки /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