Как сформировать подпись продавца

Подпись продавца merchant_sign передаётся как параметр внутри JSON-объекта data и гарантирует, что платёжное окно было сформировано с ведома продавца и он готов к получению платежа с указанной суммой и номером заказа, а также к начислению кешбэка в указанное время и в указанном размере.

merchant_sign — это SHA256-хеш от конкатенации строк merchant_data и merchant_private_key, где:

  • merchant_private_key — приватный ключ продавца, который вы получаете после заключения договора с платёжной системой;
  • merchant_data — BASE64-строка от JSON-объекта, который включает в себя параметры платёжного окна.
$merchant_sign = sha256($merchant_data.$merchant_private_key)

Чтобы сформировать подпись продавца:

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

Шаг 1. Сформируйте JSON-объект merchant_data

JSON-объект merchant_data включает в себя параметры платёжного окна: amount, cashback, currency, order_id и ts. Других параметров в merchant_data быть не должно.

Пример JSON-объект merchant_data

JSON
{ "order_id": "1554384451.84747666", "cashback": { "pay_time": 1554384571, "amount_percent": "30" }, "ts": 1554384451, "amount": "1", "currency": "RUB" }

Шаг 2. Закодируйте сформированный объект поле merchant_data в BASE64-строку

Пример поля merchant_data, закодированного в BASE64-строку

eyJvcmRlcl9pZCI6IjE1NTQzODQ0NTEuODQ3NDc2NjYiLCJjYXNoYmFjayI6eyJwYXlfdGltZSI6MTU1NDM4NDU3MSwiYW1vdW50X3BlcmNlbnQiOiIzMCJ9LCJ0cyI6MTU1NDM4NDQ1MSwiYW1vdW50IjoiMSIsImN1cnJlbmN5IjoiUlVCIn0=

Шаг 3. Сконкатенируйте полученную на предыдущем шаге BASE64-строку с приватным ключом продавца

Приватный ключ продавца merchant_private_key: 627fdbfa24232a5b62f9c295baa93f7db9752873.

Пример конкатенации поля data и приватного ключа

eyJvcmRlcl9pZCI6IjE1NTQzODQ0NTEuODQ3NDc2NjYiLCJjYXNoYmFjayI6eyJwYXlfdGltZSI6MTU1NDM4NDU3MSwiYW1vdW50X3BlcmNlbnQiOiIzMCJ9LCJ0cyI6MTU1NDM4NDQ1MSwiYW1vdW50IjoiMSIsImN1cnJlbmN5IjoiUlVCIn0=627fdbfa24232a5b62f9c295baa93f7db9752873

Шаг 4. От полученной после объединения строки вычислите криптографический хеш SHA256 в HEX-представлении

86ebbd9e89f81e62db6e724707ace59b27fc4756

Готово! Используйте полученное значение при отправке запроса в параметре params.data.merchant_sign.