Freedompay

Продукт: Shelter Cloud | Уровень: Shelter | Статус: Stable

ID системы: 27

Описание

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

Настройка в Shelter Cloud

Параметры учётной записи настраиваются через PrivateSettings:

Параметр Описание
V_Token Токен магазина
V_SecretKey Секретный ключ для подписи
V_Currency Валюта: KZT, RUB, USD, EUR
V_Domain Домен платёжной системы

Конфигурация сервиса (appsettings.json)

Параметр Описание
IPWhiteList Список разрешённых IP для callback. Доступ: отдел разработки

API Endpoints

URL платежа: https://<V_Domain>/api/payment

Callback

URL для callback: https://cloud.shelter.ru/Freedompay/Result

Алгоритм подписи

Алгоритм: MD5

  1. Преобразовать объект в плоский словарь
  2. Отсортировать по имени параметра
  3. Конкатенировать значения через ";"
  4. Добавить префикс "Result;" и секретный ключ
  5. Вычислить MD5

Процесс оплаты

  1. Клиент нажимает «Оплатить»
  2. Формирование данных платежа
  3. Вычисление подписи (sig)
  4. Отправка данных на Freedompay
  5. Редирект клиента на страницу оплаты
  6. После оплаты — callback на /Result
  7. Проверка подписи и запись платежа

Поддерживаемые валюты

Код Валюта
KZT Казахстанский тенге
RUB Российский рубль
USD Доллар США
EUR Евро

Коды НДС (tax_type)

Код Описание
0 Без НДС
2 НДС 12%
4 НДС 18%
6 НДС 10%
8 НДС 20%

Мониторинг (Zabbix)

Health check URL: https://cloud.shelter.ru/Freedompay/

Логирование

Все события логируются в Graylog (channel: Freedompay).

Примеры сообщений при callback

Получен callback:

Оплата: POST /Freedompay/Result Data: {"order":"12345","amount":5000.00,"status":"success","sig":"abc123"}

Успешная оплата:

Оплата успешно: 100

Ошибка подписи:

Ошибка оплаты: Сформированная сигнатура не совпадает с полученной

Неверный статус:

Ошибка оплаты: статус не success

Устранение неполадок

Ошибка «Invalid signature»

Причина: Неправильно сформирована подпись.

Решение:

  1. Проверьте алгоритм формирования плоского массива
  2. Убедитесь в правильной сортировке параметров
  3. Проверьте секретный ключ

Callback не приходит

Решение:

  1. Проверьте URL в options.callbacks.result_url
  2. Убедитесь, что сервер доступен из интернета

Связанная документация