Как сформировать подпись приложения
Подпиcь приложения sign передаётся как параметр в JSON-объекте params и гарантирует, что параметры платёжной формы не были подменены на стороне клиента.
sign — это MD5-хеш от конкатенации строки с параметрами платёжной формы и защищённого ключа app secure key, который уникален для каждого приложения.
Защищённый ключ приложения вы можете найти в настройках своего приложения:
- 1.Нажмите на Настройки напротив вашего мини-приложения.
- 2.В разделе Разработка выберите Ключи доступа.
- 3.В поле Защищённый ключ содержится значение
app secure key. Чтобы посмотреть значение ключа, нажмите на Показать и подтвердите действие с помощью push-сообщения или SMS на вашем мобильном устройстве.
Важно! Чтобы не скомпрометировать секретный ключ, формировать подпись приложения нужно на стороне бэкенда вашего приложения.
Чтобы сформировать подпись приложения:
- 1.
- 2.
- 3.
Шаг 1. Соберите строку в формате JSON из параметров платёжной формы
JSON-строка параметров представляет собой конкатенацию пар "параметр":"значение".
При этом нужно соблюдать следующие правила:
- 1.Названия параметров в
paramsдолжны быть отсортированы в алфавитном порядке, в том числе названия параметров внутри JSON-объектаdata. Еслиdataсодержит полеcashback, поля внутри этого объекта тоже должны быть отсортированы по алфавиту. - 2.Из строки нужно исключить параметр
action. - 3.Строковые значения нужно передавать без кавычек.
Пример 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-строки и защищённого ключа
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 среди других параметров платёжного окна.