Общие принципы
API построено на основе протокола удаленного вызова процедур JSON-RPC 2.0
.
Авторизация и безопасность
Для обеспечения безопасности используется криптографический протокол TLS v1, TLS v1.1 или TLS v1.2.
Для того чтобы авторизоваться, платежный инструмент должен отправить HTTP заголовок Auth
.
Структура заголовка Auth
HTTP заголовок: Auth: service_id-hash-timestamp
- hash –
sha1(secret_key + timestamp)
- timestamp - UTC Время подписания запроса в миллисекундах
- service_id – Идентификатор платежного инструмента в системе PaySys. (Выдается при регистрации платежного инструмента)
- secret_key – Ключ платежного инструмента. (Выдается при регистрации платежного инструмента)
Пример HTTP заголовка:
Auth: 05e3bab097f42yu0a62ced0b-7f420a62c22fbe3bab09ed0b57874898-1399114284039
Структура заголовка токена карты
HTTP заголовок Card-Token: token
- token – Токен карты. Выдается при регистрации карты.
Пример HTTP заголовка:
Card-Token: reethaa7ae2jooqee90t2neiloh8wai2jo
RPC Request
RPC Запрос - это JSON объект со следующими полями:
- id - Идентификатор запроса
- method - Имя метода на удаленном сервисе
- params - Необязательный объект с параметрами метода. Если в вызываемом методе нет параметров, поле можно пропустить или присвоить ему значение NULL
ВНИМАНИЕ! В отличии от оригинального стандарта JSON-RPC, поле "params" содержит только именованные параметры.
Пример RPC запроса:
{
"method": "method.name",
"params": {
"param1": "Any String",
"param2": [
"list",
"of",
"items"
]
},
"id": "744a0a7a-f33b-4aa6-a609-a8d44206b2d4"
}
RPC Response
RPC Ответ - это JSON объект со следующими полями:
- error - Объект с информацией об ошибке. Если метод выполнился без ошибок праметр будет равен NULL
- result - Объект с результатом выполнения метода
- id - Идентификатор ответа. Значение должно быть то же, что и в запросе
Пример RPC ответа:
{
"id": "744a0a7a-f33b-4aa6-a609-a8d44206b2d4",
"error": null,
"result": {
"param1": "Any String",
"param2": [
{
"id": 123,
"title": "item 123"
},
{
"id": 124,
"title": "item 124"
}
]
}
}
Пример RPC Request завершенного ошибкой
Ответ содержит:
- code - Код ошибки
- message - Описание ошибки
- data - Дополнительное поле с данными об ошибке. Может не отправляться или содержать объект с произвольными данными
{
"id": 202,
"error": {
"code": -32400,
"message": "Системная (внутренняя ошибка)",
"data": {
"error": 504,
"message": "Gateway Time Out"
}
},
"result": null
}