Skip to content

Instantly share code, notes, and snippets.

@pelid
Created September 5, 2024 12:56
Show Gist options
  • Select an option

  • Save pelid/e69f9c4347e55f02ceee3b29c8309e35 to your computer and use it in GitHub Desktop.

Select an option

Save pelid/e69f9c4347e55f02ceee3b29c8309e35 to your computer and use it in GitHub Desktop.

Cryptomus и статусы платежей

Платёжная система Cryptomus имеет особую логику, связанную со статусами платежей. Ниже описана логика нового Python бэкенда в зависимости от того, какой статус получен в вебхуке.

Документация по статусам платежей.

Статус paid

Платеж прошел успешно, и клиент заплатил ровно столько, сколько требовалось. Как обычно, фиксируем новый необработанный платёж, отгружаем клиенту API.

Статус paid_over — переплата.

Фиксируем новый необработанный платёж, сообщаем клиенту API сколько получили денег и в какой валюте.

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

Статус wrong_amount — недоплата

Клиент заплатил меньше, чем требовалось. Фиксируем новый необработанный платёж, сообщаем клиенту API сколько получили денег и в какой валюте.

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

TODO. Нужно ли отгружать статус или достаточно проверить на соответствие суммы к оплате и суммы поступившей?

Статус wrong_amount_waiting — недоплата с возможностью доплаты

Клиент заплатил меньше, чем требовалось, с возможностью дополнительной оплаты.

TODO. Обрабатывается ли такой статус на стором PHP бэкенде? Какая реакция предусмотрена?

Игнорируем статусы

process — платеж в процессе обработки.

confirm_check — мы видели транзакцию в блокчейне и ждем необходимого количества сетевых подтверждений.

check — ожидание появления транзакции в блокчейне.

fail — ошибка при оплате.

cancel — платеж отменен, клиент не оплатил.

system_fail — произошла системная ошибка.

refund_process — возврат средств обрабатывается.

refund_fail — во время возврата произошла ошибка.

refund_paid — возврат средств прошел успешно.

locked — средства заблокированы из-за программы AML.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment