Как сформировать подпись продавца
Подпись продавца 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.
- 2.
- 3.
- 4.
Шаг 1. Сформируйте JSON-объект merchant_data
JSON-объект merchant_data включает в себя параметры платёжного окна: amount, cashback, currency, order_id и ts. Других параметров в merchant_data быть не должно.
Пример JSON-объект merchant_data
{
"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.