API для платежных терминалов: відмінності між версіями
Sv (обговорення | внесок) |
Sv (обговорення | внесок) |
||
(Не показано 5 проміжних версій цього користувача) | |||
Рядок 20: | Рядок 20: | ||
* необходимо отсортировать по именам все посылаемые параметры и объединить символом '|' (вертикальная черта): параметр|значение|параметр|значение | * необходимо отсортировать по именам все посылаемые параметры и объединить символом '|' (вертикальная черта): параметр|значение|параметр|значение | ||
* к полученной строке добавить символ '|' и пароль к API NoDeny | * к полученной строке добавить символ '|' и пароль к API NoDeny | ||
* получить | * получить md5 хеш от полученной строки | ||
Например, терминал посылает на API следующие данные: | Например, терминал посылает на API следующие данные: | ||
Рядок 39: | Рядок 39: | ||
<pre> | <pre> | ||
$signature = Digest::MD5->new->add($string.'|'.$api_password)->hexdigest; | $signature = Digest::MD5->new->add($string.'|'.$api_password)->hexdigest; | ||
</pre> | |||
Пример на bash: | |||
<pre> | |||
echo -n 'account|5982|command|info|hardpassword' | md5sum | |||
</pre> | </pre> | ||
Рядок 71: | Рядок 76: | ||
==Попросить NoDeny залогировать информацию== | ==Попросить NoDeny залогировать информацию== | ||
<pre> | |||
command = message | command = message | ||
message = какой-либо текст | message = какой-либо текст | ||
terminal = идентификатор терминала (необязательный параметр) | terminal = идентификатор терминала (необязательный параметр) | ||
</pre> | |||
Это можно использовать, например, для регистрации какого-либо события не связанного с завершением пополнения счета. Скажем, клиент ввел свой логин, получил информацию, вставил поддельную купюру или забыл получить сдачу | |||
==Ограничения== | ==Ограничения== |
Поточна версія на 10:13, 23 вересня 2020
Общая информация
API запросы выполняются по http(s)-протоколу, в ответ приходит json. В ключе error - код ошибки (0 - отсутствие ошибки)
Тестировать API можно с консоли, например:
curl 'https://app.nodeny-plus.com.ua/cgi-bin/api.pl'
Опрос урла без каких-либо параметров должен возвращать result = 0:
{"error":0}
Это можно использовать для тестирования доступности и работоспособности API
Подписывание данных
Вместе с данными, терминал должен прислать в параметре signature строку, которая вычисляется по следующей формуле:
- необходимо отсортировать по именам все посылаемые параметры и объединить символом '|' (вертикальная черта): параметр|значение|параметр|значение
- к полученной строке добавить символ '|' и пароль к API NoDeny
- получить md5 хеш от полученной строки
Например, терминал посылает на API следующие данные:
command = info account = 5982
После сортировки и конкатенации получаем строку: account|5982|command|info
После добавления к полученной строке |пароль_от_api получаем account|5982|command|info|пароль_от_api
Далее применяем алгоритм md5 и получаем результат: 3eb6d78df0be8d54e170b15d596c7706
Пример на языке perl:
$signature = Digest::MD5->new->add($string.'|'.$api_password)->hexdigest;
Пример на bash:
echo -n 'account|5982|command|info|hardpassword' | md5sum
Итоговый запрос будет следующим:
https://app.nodeny-plus.com.ua/cgi-bin/api.pl?command=info&account=5982&signature=3eb6d78df0be8d54e170b15d596c7706
Получение информации об абоненте
command = info account = персональный платежный код абонента
Создать платеж
command = pay account = персональный платежный код абонента amount = денежная сумма order_id = уникальный id платежа terminal = идентификатор терминала (необязательный параметр)
amount - число с плавающей запятой, разделитель точка, 2 знака после запятой.
При посылке запроса с тем же order_id, который был послан ранее, платеж не создается, но при этом возвращается error = 0.
Попросить NoDeny залогировать информацию
command = message message = какой-либо текст terminal = идентификатор терминала (необязательный параметр)
Это можно использовать, например, для регистрации какого-либо события не связанного с завершением пополнения счета. Скажем, клиент ввел свой логин, получил информацию, вставил поддельную купюру или забыл получить сдачу
Ограничения
- В данных запрещен символ '|' (вертикальная черта)
- В параметре order_id и terminal не рекомендуется использовать символ двоеточия
Коды ошибок
1 | Проблема на стороне NoDeny. Возможно следует повторить запрос через время |
2 | API NoDeny отключено |
10 | Со стороны терминала присланы некорректные данные. Если терминал пошлет эти же самые данные - будет возвращена ошибка |
11 | Аккаунт в NoDeny не найден |
12 | Не задана команда |
13 | Неверно задана денежная сумма |
14 | Неверный order id |