Общие правила формирования запросов

Требования к запросам в рамках API

Заголовки

Все передаваемые от Cardsmobile запросы будут содержать заголовок x-cm-consumer-language в формате ISO 639-1 (двухбуквенный код языка). Значение этого заголовка используется для выбора нужного языка при передаче сообщения от эмитента пользователю. В случае необходимости передачи сообщения от эмитента к пользователю, заголовки ответного сообщения должны содержать это значение, соответствующее языку сообщения.

Любой HTTP-запрос в рамках API должен содержать заголовок:

Content-Type: application/json; charset=utf-8;

Требования к кодировкам

Двоичные данные в запросах (например, криптограммы, значения хеш-функций) передаются в виде hex-строк. Как в запросах, так и в ответах используется кодировка UTF-8.

Требования к телу запросов

Тело HTTP-сообщений должно соответствовать требованиям, указанным в описании соответствующего запроса. В случае ошибки необходимо вернуть JSON-объект ErrorDescription.

Требования к статусам HTTP

Коды HTTP-ответов:

Код

Назначение

200

Возвращается в случае успешного выполнения запроса к API

422

Возвращается в случае любой ошибки выполнения запроса

Шифрование данных

Чувствительные данные подвергаются шифрованию при передаче. Используемые алгоритмы шифрования:

  • AES / CBC / PKCS7Padding – шифрование данных одноразовым случайным ключом (Random Generated Key — RGK) на основе инициализационного вектора (Initialisation Vector — IV). Размер ключа — 128 бит.

  • RSA / ECB / OAEPWithSHA512AndMGF1Padding — шифрование использованного RGK открытым ключом получателя. Размер ключа — 2048 бит.

Используется следующий принцип шифрования. Сторона, отправляющая данные:

  1. Используя алгоритм AES, формирует RGK и IV.

  2. Шифрует отправляемые данные, используя RGK.

  3. Шифрует RGK открытым ключом получателя сообщения, используя алгоритм RSA.

  4. Формирует хеш открытого ключа получателя, используя алгоритм SHA-1.

  5. Полученные значения формируют объект EncryptedPayload, отправляемый получателю.