Подпись платежа и ошибки sign
Эта страница помогает быстро проверить формирование подписи для ссылки оплаты и избежать ошибки error sign.
Алгоритм подписи
- Возьмите параметры:
shop_id,amount,currency,order_id. - Если передаёте
test=1, добавьтеtestв подпись. - Отсортируйте по ключу (как PHP
ksort). - Соберите строку как в PHP
http_build_query. - Подпись:
md5(query + SECRET).
PHP пример (эталон)
<?php
$secret = 'YOUR_SECRET';
$data = [
'shop_id' => 'SHOP_HASH',
'amount' => '3000',
'currency' => 'RUB',
'order_id' => 'ef4c6d4e-660b-4ec8-b32a-31ea523ee758',
// 'test' => '1', // только если реально отправляете test=1
];
ksort($data);
$query = http_build_query($data);
$sign = md5($query . $secret);
?>
Python пример (совместимый с сервером)
import hashlib
from urllib.parse import urlencode
def make_sign(params: dict, secret: str) -> str:
sorted_params = dict(sorted(params.items(), key=lambda x: x[0]))
query = urlencode(sorted_params) # аналогично http_build_query для простых строк/чисел
return hashlib.md5((query + secret).encode("utf-8")).hexdigest()
Частые причины error sign
amountподписали как3000, а отправили3000.0(или наоборот).- Параметр
testучли в подписи, но не отправили в URL (или наоборот). - Подпись считается с другим секретом/магазином.
- Параметры подписаны в другом порядке.
- В подпись попали другие ключи, которые сервер не ожидает.
Быстрая проверка на проде
В админке раздела заказов доступна диагностика ошибок подписи. Там можно отфильтровать по
shop_id и увидеть последние входящие значения для проблемных запросов.
Основная документация по созданию платежа: /docs/payments/create-payment/.