Как сформировать подпись приложения

Подпиcь приложения sign передаётся как параметр в JSON-объекте params и гарантирует, что параметры платёжной формы не были подменены на стороне клиента.

sign — это MD5-хеш от конкатенации строки с параметрами платёжной формы и защищённого ключа app secure key, который уникален для каждого приложения.

Защищённый ключ приложения вы можете найти в настройках своего приложения:

  1. 1.
    Нажмите на Настройки напротив вашего мини-приложения.
  2. 2.
    В разделе Разработка выберите Ключи доступа.
  3. 3.
    В поле Защищённый ключ содержится значение app secure key. Чтобы посмотреть значение ключа, нажмите на Показать и подтвердите действие с помощью push-сообщения или SMS на вашем мобильном устройстве.

Важно! Чтобы не скомпрометировать секретный ключ, формировать подпись приложения нужно на стороне бэкенда вашего приложения.

Чтобы сформировать подпись приложения:

  1. 1.
  2. 2.
  3. 3.

Шаг 1. Соберите строку в формате JSON из параметров платёжной формы

JSON-строка параметров представляет собой конкатенацию пар "параметр":"значение".

При этом нужно соблюдать следующие правила:

  1. 1.
    Названия параметров в params должны быть отсортированы в алфавитном порядке, в том числе названия параметров внутри JSON-объекта data. Если data содержит поле cashback, поля внутри этого объекта тоже должны быть отсортированы по алфавиту.
  2. 2.
    Из строки нужно исключить параметр action.
  3. 3.
    Строковые значения нужно передавать без кавычек.

Пример JSON-строки параметров для подписи приложения

JSON
amount=1.5data={"currency":"RUB","merchant_data":"eyJvcmRlcl9pZCI6IjI1NTMxIiwidHMiOiIxNTM5MzI5NzcwIiwiYW1vdW50IjoxLjUsImN1cnJlbmN5IjoiUlVCIn0=","merchant_sign":"63d5dce9d2c9d29198ba12ba3f8e270e6606a221","order_id":"25531","ts":"1539329770"}description=Test Paymentmerchant_id=617001version=2

Важно! Скорее всего, вам не нужно реализовывать свой алгоритм сериализации для canonical JSON. Для многих языков уже есть соответствующие инструменты.

Шаг 2. Сконкатенируйте полученную строку с защищённым ключом вашего приложения app secure key

В примере app secure key = 2ug3CQvCkfRyI6svLVpC.

Пример конкатенации JSON-строки и защищённого ключа

JSON
amount=1.5data={"currency":"RUB","merchant_data":"eyJvcmRlcl9pZCI6IjI1NTMxIiwidHMiOiIxNTM5MzI5NzcwIiwiYW1vdW50IjoxLjUsImN1cnJlbmN5IjoiUlVCIn0=","merchant_sign":"63d5dce9d2c9d29198ba12ba3f8e270e6606a221","order_id":"25531","ts":"1539329770"}description=Test Paymentmerchant_id=617001version=2ug3CQvCkfRyI6svLVpC

Шаг 3. Закодируйте результат конкатенации с помощью алгоритма хеширования MD5

818964335a550e39d9a1dd0d752e60ab

Готово! Используйте полученное значение при отправке запроса в параметре params.sign среди других параметров платёжного окна.