EPay

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

ID системы: 24

Описание

Интеграция с платёжной системой EPay (Kazakhstan) — казахстанская платёжная система от Halyk Bank. Использует OAuth 2.0 для аутентификации.

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

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

Параметр Описание
ClientId Идентификатор клиента OAuth
ClientSecret Секрет клиента OAuth
ShopId ID магазина
AccountId ID аккаунта
Currency Валюта: KZT, USD, EUR, RUB, GBP, CNY
IsTest Тестовый режим (true / false)

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

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

API Endpoints

OAuth

Среда URL
Test https://test-epay-oauth.epayment.kz/oauth2/token
Production https://epay-oauth.homebank.kz/oauth2/token

Платежи

Среда URL
Test https://test-epay-api.epayment.kz/invoice
Production https://epay-api.homebank.kz/invoice

Callback

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

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

Алгоритм: MD5

secret_hash = MD5(accountId + ";" + invoiceId + ";" + amount + ";" + clientSecret)

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

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

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

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

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

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

Логирование

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

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

Получен callback:

Оплата: POST /EPay/Result
Data: {"accountId":"ACC001","invoiceId":"INV-001","amount":5000.00,"signature":"abc123"}

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

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

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

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

IP не в whitelist:

Ошибка оплаты: не допустимый ip адрес

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

Ошибка «Invalid token»

Причина: Истёк срок действия access_token.

Решение: Получите новый токен перед каждым платежом (действителен 1 час).

Ошибка «Invalid secret_hash»

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

Решение:

  1. Проверьте порядок параметров: accountId;invoiceId;amount;secret
  2. Убедитесь, что amount с точкой как разделителем
  3. Проверьте ClientSecret

Invoice already exists (code 2139)

Причина: invoiceId уже использовался.

Решение: Используйте уникальный invoiceId для каждого платежа.

Callback не приходит

Решение:

  1. Проверьте URL в post_link
  2. Убедитесь, что сервер доступен из интернета
  3. Проверьте SSL-сертификат

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