Mechanizm autoryzacji zapytań w systemie Zonda Pay jest dokładnie taki sam, jak w przypadku giełdy Zonda.

By korzystać z dostępnych metod (punktów końcowych) należy utworzyć parę kluczy umożliwiających autoryzację tworzonej aplikacji. Można to zrobić przechodząc do zakładki Strony pod sekcją Zarządzanie, a następnie kliknąć w Dodaj sklep.
Wygenerowana para kluczy będzie obsługiwać tylko konkretny sklep i dla każdego ze sklepów, należy wygenerować je osobno.
Parametry muszą zostać wysłane w formacie JSON, który umożliwia wygenerowanie hasza.

Aby prawidłowo wykonać zapytanie do dowolnej metody, w nagłówku muszą znaleźć się następujące parametry autoryzacyjne:

Nagłówek

Opis

API-Key

Klucz publiczny w jawnej formie.

API-Hash

HMAC("SHA512", klucz_publiczny + aktualny_timestamp + parametry_metody_JSON, klucz prywatny)

operation-id

Jednorazowy, losowo wygenerowany UUID operacji.

Request-Timestamp

Aktualny czas w formacie UNIX Timestamp. Ta sama wartość musi zostać użyta do wygenerowania hasza.

Content-Type

Dwuczęściowy identyfikator formatu plików, domyślnie: application/json.

Wartość API-Hash jest wygenerowaną wartością HMAC przy użyciu funkcji haszującej algorytmem SHA512 dla następujących danych:

  • Klucz publiczny
  • Aktualny czas w formacie UNIX Timestamp
  • Dane, które zostały przesłane w formacie JSON
  • Klucz prywatny (w niektórych bibliotekach podawany jest on jako osobny parametr będący kluczem szyfrowania)

Przykładowe nagłówki autoryzacyjne oraz gotowa metoda w NodeJS:

API-Key: 12345f6f-1b1d-1234-a973-a10b1bdba1a1
API-Hash:
8892f16e0713c5f3e3d7e9fa26c5a5f2817b09fc48fece72ed5712ae33547c92e91e735b
1818397136beea760efae61d1449a93e48ee2f80789dfa24830ef720
operation-id: 78539fe0-e9b0-4e4e-8c86-70b36aa93d4f
Request-Timestamp: 1529897422
Content-Type: application/json
'use strict'
const​ uuidv4 = ​ require​ ( ​ 'uuid/v4'​ );
const​ crypto = r
​ equire​ ( ​ 'crypto'​ );
const​ apiKey = ​ '48249e33-fbad-4805-a752-a82fe216e933'​ ;
const​ apiSecret = ​ '12cd3901-1d4f-4b24-82ef-fbbc36638b7c'​ ;
var​ body = ​ null​ ;
function​ ​ getHash​ (apiKey, timestamp, apiSecret, body) {
​ const​ hmac = crypto.createHmac(​ 'sha512'​ , apiSecret);
​ if​ (body)
hmac.update(apiKey + timestamp + ​ JSON​ .stringify(body));
​ else
hmac.update(apiKey + timestamp);
​ return​ hmac.digest(​ 'hex'​ );
};
let​ timestamp = ​ Date​ .now();
var​ headers = {
​ 'API-Key'​ : apiKey,
​ 'API-Hash'​ : getHash(apiKey, timestamp, apiSecret, body),
​ 'operation-id'​ : uuidv4(),
​ 'Request-Timestamp'​ : timestamp,
​ 'Content-Type'​ : ​ 'application/json'
};