Платёжная система Cryptomus имеет особую логику, связанную со статусами платежей. Ниже описана логика нового Python бэкенда в зависимости от того, какой статус получен в вебхуке.
Документация по статусам платежей.
Платеж прошел успешно, и клиент заплатил ровно столько, сколько требовалось. Как обычно, фиксируем новый необработанный платёж, отгружаем клиенту API.
Фиксируем новый необработанный платёж, сообщаем клиенту API сколько получили денег и в какой валюте.
При формировании ссылки на оплату в поле php_backend_only_data клиент кладёт сумму к оплате и код валюты, чтобы затем добраться до этих данных при обработке платежа. Эта сумма и валюта понадобятся ему для сравнения выставленной суммы с полученной суммой.
Клиент заплатил меньше, чем требовалось. Фиксируем новый необработанный платёж, сообщаем клиенту API сколько получили денег и в какой валюте.
При формировании ссылки на оплату в поле php_backend_only_data клиент кладёт сумму к оплате и код валюты, чтобы затем добраться до этих данных при обработке платежа. Эта сумма и валюта понадобятся ему для сравнения выставленной суммы с полученной суммой.
TODO. Нужно ли отгружать статус или достаточно проверить на соответствие суммы к оплате и суммы поступившей?
Клиент заплатил меньше, чем требовалось, с возможностью дополнительной оплаты.
TODO. Обрабатывается ли такой статус на стором PHP бэкенде? Какая реакция предусмотрена?
process — платеж в процессе обработки.
confirm_check — мы видели транзакцию в блокчейне и ждем необходимого количества сетевых подтверждений.
check — ожидание появления транзакции в блокчейне.
fail — ошибка при оплате.
cancel — платеж отменен, клиент не оплатил.
system_fail — произошла системная ошибка.
refund_process — возврат средств обрабатывается.
refund_fail — во время возврата произошла ошибка.
refund_paid — возврат средств прошел успешно.
locked — средства заблокированы из-за программы AML.