Paykeeper
Продукт: Shelter Cloud | Уровень: Shelter | Статус: Stable
ID системы: 8
Описание
Интеграция с платёжной системой Paykeeper для приёма онлайн-платежей. Российская платёжная система с поддержкой фискализации.
Настройка в Shelter Cloud
Параметры учётной записи настраиваются через PrivateSettings:
| Параметр | Описание |
|---|---|
| V_PayKeeperUrl | URL сервера Paykeeper |
| V_PayKeeperPassword | Пароль для подписи |
| V_Phone | Телефон по умолчанию |
| V_Email | Email по умолчанию |
Конфигурация сервиса (appsettings.json)
| Параметр | Описание |
|---|---|
| IPWhiteList | Список разрешённых IP для callback. Доступ: отдел разработки |
API Endpoints
URL платежа: https://<V_PayKeeperUrl>/pay/
Callback
URL для callback: https://cloud.shelter.ru/payments/Default.aspx
Алгоритм подписи
Алгоритм: SHA256
sign = SHA256(sum + clientid + orderid + service_name + client_email + client_phone + password)
Процесс оплаты
- Клиент нажимает «Оплатить»
- Получение данных брони и строк оплаты
- Формирование параметров и подписи
- POST на сервер Paykeeper
- Редирект клиента на страницу оплаты
- После оплаты — callback
- Запись платежа
Параметры запроса
| Параметр | Описание |
|---|---|
| sum | Сумма в рублях (целое) |
| orderid | Номер заказа |
| service_name | Описание услуги |
| client_email | Email клиента |
| client_phone | Телефон клиента |
| clientid | Имя клиента |
| sign | Подпись (SHA256) |
Поддерживаемые валюты
| Код | Валюта |
|---|---|
| RUB | Российский рубль |
Мониторинг (Zabbix)
Health check URL: https://cloud.shelter.ru/payments/
Логирование
Все события логируются в Graylog (channel: Paykeeper).
Примеры сообщений при callback
Получен callback:
Callback. OrderId:ORD-001 (cashId:100 reservationId:200 orderId: 300) Sum: 5000.00 Body: clientid=Guest&orderid=ORD-001&sum=5000&sign=abc123
Валидная подпись:
Callback: Valid
Ошибка подписи:
Callback: Invalid hash: Сформированная подпись не совпадает
Ошибка обработки:
Callback: Не заданы параметры Paykeeper
Устранение неполадок
Ошибка «Не заданы параметры Paykeeper»
Причина: Отсутствуют учётные данные для кассы.
Решение: Проверьте настройки в PrivateSettings.
Неверная подпись
Решение:
- Проверьте порядок конкатенации параметров
- Убедитесь, что сумма передаётся как целое число
- Проверьте кодировку (UTF-8)
Main cash is not found
Причина: Нет главной строки начисления.
Решение: Проверьте, что у начисления B_IsMain = 1.