Как подключить платежи на сайт через API: порядок внедрения

Ниже — порядок внедрения, а не выдуманный пример методов KartaPay. Точные URL, поля, статусы и формат подписи нужно взять из актуальной документации.

API и разработка
API и разработка
Как подключить платежи на сайт через API
Редакция KartaPay5 мин чтенияОпубликовано: Обновлено:
Как подключить платежи на сайт через API: порядок внедрения — иллюстрация KartaPay

Подготовьте доступ и контракт

Аккаунт создаётся через @Kartapay_bot. Найдите актуальную документацию и доступные настройки API для своего проекта.

До разработки выпишите обязательные поля, статусы, правила подписи и способ сверки операции. Не переносите названия параметров из другого платёжного сервиса.

Проверьте перед следующим шагом

  • Документация актуальна.
  • Назначение секретов понятно.
  • Серверное окружение подготовлено.
  • Поведение при ошибках описано.

Создайте заказ на сервере

Получите выбранный товар от клиента и вычислите сумму по серверным данным. Сохраните состав и идентификатор заказа до внешнего запроса.

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

  1. 1Проверить пользователя и продукт.
  2. 2Вычислить сумму.
  3. 3Сохранить заказ.
  4. 4Зафиксировать попытку оплаты.

Создайте операцию и сохраните связь

Вызов API выполняется сервером с защищённым ключом. Сохраните внешний идентификатор до передачи клиенту данных для перехода к оплате.

При таймауте не считайте запрос гарантированно неисполненным. Используйте документированный способ выяснить результат; поддержку идемпотентных ключей проверяйте, а не предполагайте.

Проверьте перед следующим шагом

  • Ключ не уходит в браузер.
  • Операция связана с заказом.
  • Повторный клик обрабатывается.
  • Неопределённый результат выделен отдельно.

Добавьте проверенный приём вебхуков

KartaPay использует X-KartaPay-Signature и HMAC-SHA256. Сохраняйте необходимые для проверки исходные данные до преобразований и следуйте документированному составу подписи.

После проверки подписи сопоставьте операцию, проект, сумму, валюту и статус. Не выдавайте продукт по одному полю, не проверив остальные условия.

  1. 1Проверить допустимость запроса.
  2. 2Проверить подпись.
  3. 3Найти связанную операцию.
  4. 4Проверить параметры и переход состояния.

Зафиксируйте исполнение надёжно

Изменение заказа и постановка задачи выдачи должны переживать сбой процесса. Подберите транзакционный подход, при котором подтверждённый платёж не теряется между обновлением и отправкой задания.

Повтор события и параллельные обработчики не должны выполнять одно действие несколько раз. Одной проверки флага в памяти недостаточно.

  • Защита уникальности в хранилище.
  • Допустимые переходы статуса.
  • Повторяемая задача выдачи.
  • Отдельная запись результата исполнения.

Протестируйте и введите сверку

Проверьте неверную подпись, неизвестную операцию, несовпадение суммы, повтор и параллельную доставку. Отдельно воспроизведите сбой после фиксации платежа, но до выдачи.

Журналируйте безопасные идентификаторы и результат, а не ключи и полные данные клиента. После запуска сверяйте заказы с подтверждёнными операциями доступным способом.

Проверьте перед следующим шагом

  • Редирект не подтверждает оплату.
  • Повтор не создаёт дубль.
  • Сбой выдачи восстанавливается.
  • Расхождение попадает ответственному.