Перейти к основному содержимому

Общие принципы

API построено на основе протокола удаленного вызова процедур JSON-RPC 2.0.

Авторизация и безопасность

Для обеспечения безопасности используется криптографический протокол TLS v1, TLS v1.1 или TLS v1.2.
Для того чтобы авторизоваться, платежный инструмент должен отправить HTTP заголовок Auth.

Структура заголовка Auth

HTTP заголовок: Auth: service_id-hash-timestamp

  • hashsha1(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
}