Перейти к содержанию

Аутентификация запросов в системе Moneygate

В этом разделе руководства представлены протоколы аутентификации запросов в системе Moneygate.

Предварительно выполненные действия

Мерчант зарегистрировался в системе Moneygate.

Руководство по регистрации в системе.

Общие сведения

Система Moneygate использует один из двух протоколов аутентификации, который определяется методом HTTP-запроса:

  • GET
  • POST

Оба протокола используют следующие элементы:

  1. Передача UUID-токена идентификации в HTTP-заголовке X-Auth-Token
  2. Передача электронной подписи в HTTP-заголовке X-Auth-Sign в кодировке Base64

Аутентификация POST запросов

Алгоритм аутентификации POST запросов состоит из следующих шагов:

  • Шаг 1 – Вычислить электронную подпись raw-строки тела запроса (request body) по криптографическому алгоритму SHA-256 with RSA в кодировке Base64

Пример для Linux shell

Ниже представлен пример вычисления электронной подписи тела запроса:

echo -n '{
"id": "449bc546-e589-4aca-83fd-b41c2e03fbde",
"service_id": 6001,
"data": {
    "callback_url": "https://example.merchant-side.com/send-status-here",
    "amount": 100000,
    "currency": "TRY"
    }
}' | openssl dgst -sha256 -sign moneygate.key | base64

В приведенной команде moneygate.key - файл закрытого ключа RSA системы мерчанта.

В результате выполнения команды будет выведена электронная подпись в кодировке Base64:

wK/KdRlYzTEumjQjyJBU9S0Iz2c/h+wL9YJBR9zAr4/29HgUkCb2yb7XY9SPle0NlUc+FkkjOeUx
EexONPt9ateb33LZjCNNXsQpxsMkJCv5Fqq7k2yRxgL+LegfZXrjU4xLYg88X7jvJR9CgWTkqJWn
PS3ras1H79rhlT4hV6OvvdLPH21xhkCC1QjJP3OiBkRqLEAA1nvYKHgx8Wug8VvceuQL5zKzuZdB
khKISj3mvKTxKJEl5S4Lp/RMpNibdaGICo4B2nAAwHhuMPB6o/C02Makc86NRVEPqEvQymGXUrrM
K89XYAr0xyNwiqk80juSyfz2pSfHIc9m4kHgZg==
  • Шаг 2 – Установить в заголовок X-Auth-Token токен идентификации мерчанта
  • Шаг 3 – Установить в заголовок X-Auth-Sign полученную электронную подпись

После чего HTTP-запрос готов к отправке.

Пример для Linux shell

Ниже представлен пример подписанного POST-запроса:

curl --location 'https://moneygate.master.blowfish.api4ftx.cloud/v1/host-to-host/deposit-orders/new' \
--header 'X-Auth-Token: 2817ea0c-bddf-4b7c-9e40-932a386b6b46' \
--header 'X-Auth-Sign: wK/KdRlYzTEumjQjyJBU9S0Iz2c/h+wL9YJBR9zAr4/29HgUkCb2yb7XY9SPle0NlUc+FkkjOeUxEexONPt9ateb33LZjCNNXsQpxsMkJCv5Fqq7k2yRxgL+LegfZXrjU4xLYg88X7jvJR9CgWTkqJWnPS3ras1H79rhlT4hV6OvvdLPH21xhkCC1QjJP3OiBkRqLEAA1nvYKHgx8Wug8VvceuQL5zKzuZdBkhKISj3mvKTxKJEl5S4Lp/RMpNibdaGICo4B2nAAwHhuMPB6o/C02Makc86NRVEPqEvQymGXUrrMK89XYAr0xyNwiqk80juSyfz2pSfHIc9m4kHgZg==' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"id": "449bc546-e589-4aca-83fd-b41c2e03fbde",
"service_id": 6001,
"data": {
    "callback_url": "https://example.merchant-side.com/send-status-here",
    "amount": 100000,
    "currency": "TRY"
    }
}'

Аутентификация GET запросов

Алгоритм аутентификации GET запросов состоит из следующих шагов:

  • Шаг 1 – Сгенерировать случайную строку, которая будет использоваться в качестве имитовставки запроса
  • Шаг 2 – Вычислить электронную подпись имитовставки по криптографическому алгоритму SHA-256 with RSA в кодировке Base64

Пример для Linux shell

Ниже представлен пример вычисления электронной подписи имитовставки:

echo -n '449bc546-e589-4aca-83fd-b41c2e03fbde' | openssl dgst -sha256 -sign moneygate.key | base64

В приведенной команде:

  • moneygate.key - файл закрытого ключа RSA системы мерчанта
  • 449bc546-e589-4aca-83fd-b41c2e03fbde - сгенерированная имитовставка запроса

В результате выполнения команды будет выведена электронная подпись в кодировке Base64:

ZqSncJY4WOWNYUU2DV5iwPeEwe16l0DPUlQZDU47wNxFS+yOhwr/hWzdk5jt9xdxfC8+5FZ/8O8p
5GoWGzXUooO3KWoSDCcdjzjiwd0wHev0oQfnasGCLyD2nCoXT8ozSDvF/n74RAWNNuXztN6f62cv
V42GP/uwUfKioTSvy451l9P+c3rOgILs0X5zX7NEYZ09SOy3fVg73lyPaJ5ohpVDOb3yaIupIEBz
hSOyLqx+g/wxnda9hIkxX1MlmqZk36nbH7x/OMvLiVrh14fFNj6bgQHDU6qh9lGXeej6J0XJ055g
FI9Yl8rmfPfY6qc6vEHy+OaX10y4EO042BXdiw==
  • Шаг 3 – Установить в заголовок X-Auth-Token токен идентификации мерчанта
  • Шаг 4 – Установить в заголовок X-Request-ID имитовставку запроса
  • Шаг 5 – Установить в заголовок X-Auth-Sign электронную подпись

После чего HTTP-запрос готов к отправке.

Пример для Linux shell

Ниже представлен пример подписанного GET-запроса:

curl --location 'https://moneygate.master.blowfish.api4ftx.cloud/v1/balance' \
--header 'X-Auth-Token: 2817ea0c-bddf-4b7c-9e40-932a386b6b46' \
--header 'X-Request-ID: 449bc546-e589-4aca-83fd-b41c2e03fbde' \
--header 'X-Auth-Sign: ZqSncJY4WOWNYUU2DV5iwPeEwe16l0DPUlQZDU47wNxFS+yOhwr/hWzdk5jt9xdxfC8+5FZ/8O8p5GoWGzXUooO3KWoSDCcdjzjiwd0wHev0oQfnasGCLyD2nCoXT8ozSDvF/n74RAWNNuXztN6f62cvV42GP/uwUfKioTSvy451l9P+c3rOgILs0X5zX7NEYZ09SOy3fVg73lyPaJ5ohpVDOb3yaIupIEBzhSOyLqx+g/wxnda9hIkxX1MlmqZk36nbH7x/OMvLiVrh14fFNj6bgQHDU6qh9lGXeej6J0XJ055gFI9Yl8rmfPfY6qc6vEHy+OaX10y4EO042BXdiw==' \
--header 'Accept: application/json'

Аутентификация webhook-запросов

Система Moneygate посылает в систему мерчанта webhook-запросы (обратные вызовы) по методу POST. При этом для аутентификации такого запроса используется единственный элемент – электронная подпись в HTTP-заголовке X-Auth-Sign в кодировке Base64. В остальном протокол аналогичен протоколу аутентификации POST-запросов.

  • Шаг 1 – Вычислить электронную подпись raw-строки тела запроса (request body) по криптографическому алгоритму SHA-256 with RSA в кодировке Base64
  • Шаг 2 – Установить в заголовок X-Auth-Sign электронную подпись

После чего HTTP-запрос отправляется в систему мерчанта.

Пример для Linux shell

Ниже представлен пример подписанного webhook-запроса:

curl --location 'https://example.merchant-side.com/send-status-here' \
--header 'X-Auth-Sign: v2KAtlX9WLlrr3vaWfVG1dFdevZ9tlar7me1nFVIdV+WzT7PWqIu5J+6MZw9OZTw9qahPUeomDECHrBOVCZ5QHEfyALDoqfQ7+f4OSLhMB5/6GZWeU3JCNGlqq6HdM2G2tRgVtL8koYiwIQU3SUTi7/i3CVCRKC9AerGrtm7Df3Fn8WgI3ay3P/gCnEH1hMYQYGlg7illyhIEYLg84z9zbTs22nRSkLHHsXGlGAMbQvdB4cbnzewudlVog0844SepT/170TxXp51q6L4vM4Gqr72AMDp2i5VG52fOAZLYfTrMeBIGzbsDgVD/6yB8Wu1Q6bzaW4G+HlSEhYe0KgQ==' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"id": "449bc546-e589-4aca-83fd-197890679617",
"status": "В ожидании",
"status_code": 2
}'

Верификация электронной подписи webhook-запросов

Пример для Linux shell

Ниже представлен пример верификации тела webhook-запроса:

# Запись тела запроса в файл request_body.raw
echo -n '{
"id": "449bc546-e589-4aca-83fd-197890679617",
"status": "В ожидании",
"status_code": 2
}' > request_body.raw
# Вычисление электронной подписи тела запросе закодированной Base64
# с последующей записью в файл signature.sha256
openssl dgst -sha256 -sign moneygate.key request_body.raw | base64 > signature.sha256
# Декодирование электронной подписи в двоичный вид
# с последующей записью в файл signature.sha256.bin
base64 --decode signature.sha256 > signature.sha256.bin
# Верификация электронной подписи тела запроса
openssl dgst -sha256 -verify moneygate.key.pub -signature signature.sha256.bin request_body.raw

Результат успешной верификации электронной подписи:

Verified OK

В приведенных командах: