ZefirPayAPI v2
Поддержка
Разделы документации

Авторизация и подпись

API-ключ

Каждый запрос к API передаёт API-ключ в заголовке Authorization:

Authorization: Bearer zp_9fJ2kLm0QxVb7RtY4sWn1cEhUoPaZd8i

Если ключ не передан или неверен, API ответит с кодом 401:

{"error": "unauthorized", "status": 401}

Подпись запроса создания платежа

Запрос создания платежа дополнительно подписывается параметром sign. Подпись защищает от подмены суммы и подтверждает, что запрос отправил владелец магазина.

sign = sha1(currency + amount + shopId + секретный_ключ)

Значения склеиваются в указанном порядке без разделителей. Результат — строка из 40 шестнадцатеричных символов в нижнем регистре.

Пример

currencyrub
amount1500.00
shopId482193
Секретный ключs3cr3t-key
Строка для подписиrub1500.00482193s3cr3t-key
sign56ca36a52215141d58343fed155d15786508f182
Подписывайте amount ровно в том виде, в каком отправляете его в запросе. Рекомендуем всегда передавать сумму строкой с двумя знаками после точки: "1500.00".
$sign = sha1($currency . $amount . $shopId . $secretKey);
import hashlib

sign = hashlib.sha1(f"{currency}{amount}{shop_id}{secret_key}".encode()).hexdigest()
const crypto = require("crypto");

const sign = crypto
  .createHash("sha1")
  .update(`${currency}${amount}${shopId}${secretKey}`)
  .digest("hex");
sum := sha1.Sum([]byte(currency + amount + strconv.Itoa(shopID) + secretKey))
sign := hex.EncodeToString(sum[:])

Подпись уведомлений

Уведомления о платежах, которые мы отправляем на ваш сервер, подписаны тем же секретным ключом магазина (HMAC-SHA256). Как проверить подпись — в разделе Формат уведомлений.

Если ключ скомпрометирован

Если API-ключ или секретный ключ мог попасть к посторонним, напишите на support@zefirpay.com: мы выпустим новые ключи, а старые отзовём.