AxtonPay API

Document version: 0.9

Informacje ogólne

punkt końcowy API

https://mp.axtonpay.com/api/v1/private/checkout

Content-type

API akceptuje HTTP żądania z 2 typami treści: 'application/x-www-form-urlencoded', 'application/json'.

Nagłówek HTTP powinien pasować do zawartości POST ciała.

Skróty i definicje

  • {PID} - Identyfikator faktury, zazwyczaj jest to unikalny 8-znakowy ciąg alfanumeryczny.
  • Shop - Twoja strona internetowa, która akceptuje płatności przez usługę AxtonPay

Algorytm pracy z API

Zwykła kolejność działań w celu otrzymania płatności:

  • utwórz fakturę ('/api/v1/private/checkout/payment/create'), odpowiedź API zwróci adres URL faktury ('invoice_url'),
  • prześlij nabywcy tę fakturę w celu dokonania płatności,
  • czekaj na powiadomienia serwera AxtonPay, które będą przychodzić do 'server_notification_url',
  • po otrzymaniu jakiejkolwiek powiadomienia od AxtonPay, sprawdź ważność jego podpisu i najlepiej wyślij potwierdzenie odbioru do AxtonPay ('/api/v1/private/checkout/payment/confirm/{PID}'),
  • jeżeli status faktury zostanie zmieniony, wykonaj działania odpowiadające temu statusowi (np. poproś o pełne informacje dotyczące faktury, wyślij towar, utwórz zgłoszenie do zespołu wsparcia itp.).

Jeśli ustawisz pusty lub nieprawidłowy 'server_notification_url' podczas tworzenia faktury, usługa nie będzie mogła wysyłać powiadomień o zmianach statusu; w takich przypadkach powinieneś samodzielnie sprawdzać fakturę w pewnych odstępach czasu ('/api/v1/private/checkout/payment/get/{PID}').

Autoryzacja żądań

Aby autoryzować żądanie, konieczne jest obliczenie skrótu (Hash) z ciągu utworzonego w specjalny sposób. Ciąg ten jest tworzony przez łączenie (sklejanie) argumentów URL (QUERY_STRING) i treści żądania POST (REQUEST_BODY). Ważne jest, aby wszystkie składniki były użyte dokładnie w takiej formie, w jakiej będą przesyłane do serwera. Argumenty URL (QUERY_STRING) powinny być pobierane z URL w jednej linii, bez zmiany kolejności argumentów i bez pomijania jakichkolwiek elementów. Treść żądania POST (REQUEST_BODY) również powinna być użyta bez żadnych modyfikacji, w tym nie należy usuwać z niej cudzysłowów, spacji, nawiasów ani znaków końca linii.

W przypadku pustego ciała żądania POST oraz w przypadku pustych argumentów URL, ten komponent będzie po prostu pustym ciągiem znaków.

Kolejność danych w żądaniu podpisu: QUERY_STRING najpierw, potem POST dane. Nie należy wstawiać między nimi żadnych znaków łączących, tylko połączyć dwa ciągi tekstowe.

Jeszcze raz, każdy symbol jest znaczący. Nie powinieneś dodawać ani usuwać nawet spacji czy symbolu nowej linii. Używaj tylko surowych danych otrzymanych przez serwer.

Z wyniku ciągu znaków pobierany jest SHA-256 skrót z kluczem 'Secret key' i używany jako drugi argument funkcji hash_hmac().

Przekazanie parametru 'time' zawierającego bieżący POSIX timestamp (Unix time) jest obowiązkowe.

Ten podpis jest ważny przez 24 godziny. Jeśli wartość parametru 'time' różni się od bieżącego czasu serwera o więcej niż 24 godziny (czy to do przodu, czy do tyłu), żądanie zakończy się niepowodzeniem, nawet jeśli podpis został obliczony bez błędów.

Jeśli panel handlowca zaakceptuje żądanie z jakimś podpisem, ten podpis nie może być użyty ponownie, nawet do wysłania żądania z tymi samymi parametrami (obejmuje to parametr 'time').

Powstały hash jest przekazywany w nagłówku HTTP 'Sign'.

Oprócz obliczonego podpisu, żądanie musi również zawierać nagłówek 'Api-Key' zawierający użyty klucz API. Przykład:

$headers = [
      'Api-Key: ' . $the_api_key,
      'Sign: ' . $signature_sha256
    ];

Możesz podpisać żądanie wysłane do AxtonPay dowolnym ważnym kluczem należącym do tego zamówienia. Jednak AxtonPay zawsze użyje klucza, który wybrałeś w panelu sprzedawcy.

Przykład obliczania podpisu:

/* 
Imagine there is the POST request:
URI: '/api/v1/private/checkout/payment/create?time=1735084500.3561'
POST body: '[email protected]&shop_payment_id=INVOICE-1746&pms=all&amount=19.95&currency=USD'
So there are HTTP query string and request body:
*/ 
$the_query_string = 'time=1735084500.3561';
$the_request_body = '[email protected]&shop_payment_id=INVOICE-1746&pms=all&amount=19.95&currency=USD';

// • A pair of 'API key' and 'Secret key' gathered from the admin panel
$the_api_key = 'key1';
$the_api_secret = 'secret1';

// • Concatenation:
$string_for_sha = $the_query_string . $the_request_body;
// Value: '[email protected]&shop_payment_id=INVOICE-1746&pms=all&amount=19.95&currency=USD'

// • Calculating the HTTP header 'Sign'
// hash method is SHA-256
$signature_sha256 = hash_hmac("sha256", $string_for_sha, $the_api_secret); 
// '31ca271a15e45802e07b7559a5f520656c050dda79e6fa46d52a15fc51d193cd'

/* • Signed HTTP request:
  Method: POST
  URI: '/api/v1/private/checkout/payment/create?time=1735084500.3561'
  HTTP header 'Api-Key': 'key1'
  HTTP header 'Sign': '31ca271a15e45802e07b7559a5f520656c050dda79e6fa46d52a15fc51d193cd'
  POST body: '[email protected]&shop_payment_id=INVOICE-1746&pms=all&amount=19.95&currency=USD'
*/

Zwróć uwagę na białe znaki i podziały wierszy w innym przykładzie:

/* 
Imagine there is the POST request:
URI: '/api/v1/private/checkout/payment/create?shop_name=Very%20useful%20service'
POST body: '{
  "shop_user_id": "[email protected]",
  "shop_payment_id": "INVOICE-1746",
  "shop_payment_desc": "Premium service
(1 month)",

  "pms": "all",
  "amount": "19.95",
  "currency": "USD",
  "time": "1735084500.3561"
}'

Attention! It's important to keep the raw data 'as is', including all tabulations, whitespaces, and line breaks. 
For example, the signature becomes invalid if your software formats json, adds or removes spaces. 

So there are such HTTP query string and POST request body:
*/ 
$the_query_string = 'shop_name=Very%20useful%20service';
$the_request_body = '{
  "shop_user_id": "[email protected]",
  "shop_payment_id": "INVOICE-1746",
  "shop_payment_desc": "Premium service
(1 month)",

  "pms": "all",
  "amount": "19.95",
  "currency": "USD",
  "time": "1735084500.3561"
}';

// • A pair of 'API key' and 'Secret key' gathered from the merchant panel
$the_api_key = 'key1';
$the_api_secret = 'secret1';

// • Concatenation:
//
// hash method is SHA-256 (HTTP query string + request body)
$string_for_sha = $the_query_string . $the_request_body;
/* Value: 'shop_name=Very%20useful%20service{
  "shop_user_id": "[email protected]",
  "shop_payment_id": "INVOICE-1746",
  "shop_payment_desc": "Premium service
(1 month)",

  "pms": "all",
  "amount": "19.95",
  "currency": "USD",
  "time": "1735084500.3561"
}'
*/

// • Calculating the HTTP header 'Sign'

$signature_sha256 = hash_hmac("sha256", $string_for_sha, $the_api_secret); 
// 'ef15476f28b379e4b137a2dcd9ed495332e4766004ac3610bb92a69ba2303c28'

/* • Signed HTTP request:
  Method: POST
  URI: '/api/v1/private/checkout/payment/create'
  HTTP header 'Api-Key': 'key1'
  HTTP header 'Sign': 'ef15476f28b379e4b137a2dcd9ed495332e4766004ac3610bb92a69ba2303c28'
  POST body: '{
  "shop_user_id": "[email protected]",
  "shop_payment_id": "INVOICE-1746",
  "shop_payment_desc": "Premium service
(1 month)",

  "pms": "all",
  "amount": "19.95",
  "currency": "USD",
  "time": "1735084500.3561"
}' 
*/

Python przykład składania ciągu do obliczania podpisu:

string_for_hash_calculation = f'{request.query_params.urlencode()}{request.data.urlencode()}'

Parametry

API akceptuje wszystkie parametry zarówno w QUERY_STRING, jak i w ciele żądania POST.

Zmienne logiczne

API oczekuje otrzymania '0' lub '1' w zmiennych logicznych, ale z powodu niejawnej konwersji typów, każdy ciąg tekstowy będzie traktowany jako '1', nawet słowo 'false'. Dlatego, aby jawnie ustawić wartość 'FALSE' dla zmiennej logicznej, należy przekazać jej albo wartość '0', albo pusty ciąg.

Separator dziesiętny

Tylko kropka dziesiętna jest używana jako separator dziesiętny w liczbach.

Wielkość liter w parametrach

Z nielicznymi wyjątkami, wszystkie parametry rozróżniają wielkość liter.

Adres URL wywołania zwrotnego

W panelu administracyjnym AxtonPay, na stronie ustawień kasy, możliwe jest ustawienie adresów URL sklepu do odbierania powiadomień serwer-serwer od AxtonPay, a także adresów URL do przekierowania kupującego po opłaceniu faktury lub jej anulowaniu, a także w przypadku błędu.

Te adresy URL mogą zostać zastąpione w żądaniu tworzenia faktury.

Metody AxtonPay API

Tworzenie faktury: /api/v1/private/checkout/payment/create

Metoda /api/v1/private/checkout/payment/create inicjuje tworzenie faktury.

Jeśli operacja zakończy się powodzeniem, metoda zwraca link ('invoice_url'), na który należy odesłać klienta w celu dokonania płatności.

Własne parametry faktury:

  • time (wymagane) - POSIX timestamp (Unix time)
  • amount (wymagane) - kwota do zapłaty (cena produktu lub usługi, którą sklep chce otrzymać)
  • currency (wymagane) - Trzyliterowy kod waluty zgodnie z ISO 4217-alpha, bez rozróżniania wielkości liter
  • pms (wymagane) - metody płatności wyświetlane na stronie faktury. Jeśli chcesz zezwolić na wszystkie metody płatności, wartość to 'all'; jeśli chcesz zezwolić tylko na niektóre z nich, wymień ich oddzielone przecinkami numeryczne identyfikatory.
  • pm - identyfikator wybranej metody płatności. Ważne jest, że jeśli zostanie przekazany parametr 'pm', faktura zostanie utworzona w 'trybie przejrzystym', tj. kupujący nie zobaczy strony faktury, lecz przejdzie od razu do systemu płatności.
  • extra_data - tablica asocjacyjna zawierająca wszelkie dodatkowe dane; te dane są zwracane do magazynu w całości
  • shop_user_id - identyfikator użytkownika w sklepie, jest zwracany do sklepu w niezmienionej formie
  • shop_payment_id - identyfikator płatności w sklepie, jest zwracany do sklepu w niezmienionej formie
  • shop_name - nazwa sklepu (wyświetlana na stronie faktury)
  • shop_payment_desc - opis zamówienia (wyświetlany na stronie faktury)
  • shop_payment_remark - twoje notatki dotyczące tej płatności (to pole na wszelkie notatki dotyczące płatności, które AxtonPay nigdzie nie przekazuje; jest widoczne tylko na liście płatności; nie trafia z powrotem do sklepu)
  • valid_time - przedział czasowy, w którym faktura może zostać opłacona; w sekundach
  • view_time - okres czasu, w którym faktura jest dostępna do przeglądania za pomocą zewnętrznego linku; w sekundach; odliczanie rozpoczyna się po zakończeniu okresu 'valid_time'
  • server_notification_method - metoda wysyłania powiadomień serwer-serwer o statusach płatności do sklepu; ważne wartości: POST, GET

Niektóre ustawienia faktury są ustawione na stronie ustawień kasy. Jednak wartości przekazane w żądaniu będą miały pierwszeństwo przed tymi ustawieniami.

Parametry realizacji zamówienia, które można nadpisać dla tej faktury:

  • customer_success_url - link, na który kupujący zostanie przekierowany, jeśli faktura zostanie pomyślnie opłacona (tj. jeśli status faktury to 'paid' lub 'overpaid').
  • customer_cancel_url - link, na który kupujący zostanie przekierowany, jeśli płatność zostanie anulowana
  • customer_fail_url - link, na który kupujący zostanie przekierowany, jeśli płatność zakończy się błędem
  • server_notification_url - link do wysyłania powiadomień serwer-serwer o statusach płatności do sklepu

Uwaga: Aby przestrzegać własnej polityki prywatności, zazwyczaj nie jest konieczne umieszczanie danych osobowych klienta w właściwościach faktury. Na przykład w parametrze "shop_user_id" lepiej jest określić abstrakcyjne ID klienta zamiast jego adresu e-mail lub numeru telefonu. Również w "shop_payment_desc" lepiej w ogóle nie umieszczać danych klienta, ponieważ oni już wszystko o sobie wiedzą; zamiast tego można napisać jakieś informacje o opłaconych towarach lub usługach, albo nawet po prostu wskazać rodzaj działania, na przykład „Zakup” lub „Doładowanie salda”.

Wszystkie odniesienia są niezbędnie przesyłane wraz z protokołem.

Przykład prośby:

<?php
// API credentials - get it from settings of the checkout
$api_key = 'API_KEY';
$api_secret = 'API_SECRET';
// API endpoint
$api_endpoint = 'https://mp.axtonpay.com/api/v1/private/checkout';
// Current POSIX timestamp
$time = time();
// API method URL
$api_url = $api_endpoint . '/payment/create';

// Prepare POST parameters
$post_data = [
    'amount' => 4.99,
    'currency' => 'USD',
    'pms' => 'all', // visible payment methods; either 'all' or comma-separated list of selected GUIDs
    // 'pm' => '92807385', // define the certain payment method if you do not want payer to see the list of all possible payment methods

    // Below parameters are optional
    'extra_data' => ['param1'=>'value 1', 'param2'=>'value 2'],

    'shop_user_id' => '[email protected]',
    'shop_payment_id' => 'TEST-333-' . $time,
    'shop_name' => 'TEST-333 web shop',
    'shop_payment_desc' => 'TEST-333 payment description visible to payer',
    'shop_payment_remark' => 'TEST-333 payment remark for admin',

    'customer_success_url' => 'https://example.com/?status=paid-or-overpaid&once=TEST-333-' . $time, 
    'customer_cancel_url' => 'https://example.com/?status=cancelled-by-payer&once=TEST-333-' . $time,
    'customer_fail_url' => 'https://example.com/?status=error&once=TEST-333-' . $time,
    'server_notification_url' => 'https://example.com/?for=server-to-server-notificataions',
    'server_notification_method' => 'POST',
	
    'valid_time' => 60*60*24*7, // seconds
    'view_time'  => 60*60*24*21, // seconds, clock starts after ending of 'valid_time' period
];

// Prepare GET parameters
$query_string = 'time=' . $time;

// Build the request body
$request_body = json_encode($post_data); // Encode as JSON
// $request_body = http_build_query($post_data);

// Concatenate QUERY_STRING and REQUEST_BODY
$string_for_sha = $query_string . $request_body;

// Calculate the signature
$signature = hash_hmac('sha256', $string_for_sha, $api_secret);

// Prepare HTTP headers
$headers = [
    'Api-Key: ' . $api_key,
    'Sign: ' . $signature,
    'Content-Type: application/json'
];

// Initialize cURL
$ch = curl_init($api_url . '?' . $query_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request_body);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// Execute the request
$response = curl_exec($ch);

// Close cURL
curl_close($ch);
?>

Przykład udanej odpowiedzi przy żądaniu wystawienia faktury:

{
    "status": "ok",
    "data": "invoice created",
    "pid": "HNQ5CAHM",
    "test": false,
    "created_at": "2025-12-27T08:14:55.000000Z",
    "invoice_url": "https:\/\/27375212.b88pay.com\/i\/HNQ5CAHM"
}

Uzyskiwanie informacji o fakturze: /api/v1/private/checkout/payment/get/{PID}

Aby uzyskać potrzebne informacje, należy wywołać metodę /api/v1/private/checkout/payment/get/{PID}, podając PID faktury na końcu adresu URL.

Parametry zapytania:

  • time (wymagane) - POSIX timestamp (Unix time)

Przykład linijki do tworzenia podpisu:

// Full URL:
https://mp.axtonpay.com/api/v1/private/checkout/payment/get/GIKR3XPY?time=1766837343

// String for signature calculation: 
time=1766837343

Przykład odpowiedzi:

{
    "status": "ok",
    "data": {
        "pid": "HNQ5CAHM",
        "checkout_guid": 34677320,
        "created_at": "2025-12-27 12:07:21",
        "updated_at": "2025-12-27 12:07:34",
        "data": {
            "ip": "1.2.3.4",
            "pms": "all",
            "extra_data": {
                "param1": "val1",
                "param2": "val2",
                "server_notification_url": "https:\/\/example.com\/?for=server-to-server-notificataions"
            },
            "redirect_url": "\/wait\/HNQ5CAHM",
            "customer_fail_url": "https:\/\/example.com\/?status=error&id=TEST-333-1766837240",
            "allow_change_amount": false,
            "customer_cancel_url": "https:\/\/example.com\/?status=cancelled-by-payer&id=TEST-333-1766837240",
            "customer_success_url": "https:\/\/example.com\/?status=paid-or-overpaid&id=TEST-333-1766837240"
        },
        "payment_status": 0,
        "amount": "4.99",
        "filled": "0.00",
        "currency_id": 5,
        "transparent": 1,
        "expires_at": "2026-01-03 12:07:21",
        "invisible_at": "2026-01-26 12:07:21",
        "paid_at": null,
        "confirmed_at": null,
        "shop_name": "TEST-333 web shop",
        "shop_user_id": "[email protected]",
        "shop_payment_id": "TEST-333-1766837240",
        "shop_payment_desc": "TEST-333 payment description visible to payer",
        "shop_payment_remark": "TEST-333 payment remark for merchant",
        "payment_method_id": 92807385,
        "gateway_id": 40056646,
        "payment_option_id": 297,
        "txid": null,
        "account_from": null,
        "account_to": "TEnYvbfg9YqJeaVtVHAwEvG2kmAJcTzxTh",
        "payment_option_amount": "17.865973",
        "payment_option_filled": "0.000000",
        "payment_option_currency_id": 317,
        "exchange_rates_expires_at": "2025-12-27 12:27:33",
        "test": false,
        "initiator": "api",
        "initiator_info": null,
        "payment_option": {
            "id": 297,
            "gateway_id": 40056646,
            "pm": "trx",
            "currency_id": 317,
            "name": "Tron",
            "icon": "crypto\/tron.png",
            "min_invoice": null,
            "max_invoice": null
        },
        "payment_option_currency": {
            "id": 317,
            "name": "Tron",
            "code": "TRX",
            "minor_unit": 6
        },
        "currency": {
            "id": 5,
            "name": "United States dollar",
            "code": "USD",
            "minor_unit": 2
        },
        "invoice_url": "https:\/\/27375212.b88pay.com\/i\/HNQ5CAHM"
    }
}

Porównanie żądanej kwoty i wpłaconej kwoty

Odpowiedź zawiera kilka różnych kwot (w walucie, w której wystawiono fakturę):

  • "amount" - kwota faktury
  • "filled" - zapłacił część faktury,
  • "total_filled" - ile klient zapłacił łącznie, wliczając prowizje.

Jeśli "filled = amount", to jest zapłacone dokładnie tyle, ile trzeba.

Jeżeli "filled > amount", występuje nadpłata.

Jeśli "filled < amount", faktura nie została opłacona w całości (niedopłata).

Faktura: przetwarzanie powiadomienia od AxtonPay o zmianie statusu

Za każdym razem, gdy status faktury zostanie zmieniony, AxtonPay wysyła powiadomienie do server_notification_url (korzystając z server_notification_method)

Przykładowe dane:

{
    "pid": "U5IB4WIO",
    "status": "3",
    "shop_user_id": "3q23g",
    "shop_payment_id": "h76r5",
    "amount": "240.00000000",
    "filled": "0.00000000",
    "fee": "0",
    "total_filled": "0.00000000",
    "currency": "DASH",
    "test": "0"
}

W odpowiedzi na to powiadomienie AxtonPay oczekuje na otrzymanie HTTP code 200, co potwierdza jego pomyślne odebranie. W przeciwnym razie AxtonPay podejmie 12 kolejnych prób w coraz dłuższych odstępach czasu, a następnie status powiadomienia zmieni się na 'error' (jednak nie wpływa to na status samej faktury).

Możliwe wartości statusu:

  • 0 - pending
  • 1 - paid
  • 2 - error
  • 3 - cancelled by customer
  • 4 - underpaid
  • 5 - overpaid
  • 8 - expired

Statusy udanych płatności to 1 (paid) i 5 (overpaid); w przypadku ich otrzymania możesz przelać opłaconą zakupioną rzecz klientowi lub zasilić saldo. W przypadku płatności ze statusem 5 (overpaid), w przypadku zasilenia salda możesz zasilić saldo kwotą faktycznie otrzymanej płatności, ale w przypadku sprzedaży towarów/usług i znacznej nadpłaty zaleca się skontaktowanie się z płatnikiem i ustalenie z nim, jak postąpić z nadpłatą.

Status częściowo udany to 4 (underpaid); w przypadku otrzymania tego statusu możliwe jest doładowanie salda kwotą faktycznie otrzymanej płatności. Jednakże ten status nie może być uznany za pomyślny przy sprzedaży towarów/usług.

Wszystkie inne statusy - 0 (pending), 2 (error), 3 (canceled by customer) oznaczają całkowity brak płatności; w przypadku ich otrzymania nie należy podejmować działań w zakresie uzupełniania salda ani sprzedaży towarów/usług.

Sprawdzanie podpisu

Aby mieć pewność, że powiadomienie zostało wysłane dokładnie przez AxtonPay, konieczne jest zweryfikowanie podpisu otrzymanego powiadomienia przed jego zaufaniem. Weryfikacja jest podobna do podpisywania własnych żądań, tylko dodany jest ostatni krok, w którym należy porównać obliczony podpis z otrzymanym nagłówkiem HTTP 'Sign'.

Główne kroki po otrzymaniu powiadomienia o zmienionym statusie płatności są następujące:

  • wez cały ciąg argumentów (QUERY_STRING) z otrzymanego powiadomienia,
  • weź cały POST data (REQUEST_BODY) z otrzymanego powiadomienia,
  • oblicz podpis używając tych QUERY_STRING + REQUEST_BODY i odpowiedniego 'Secret key',
  • porównaj obliczony podpis z tym, który został otrzymany w nagłówku HTTP 'Sign',
  • jeśli podpisy są takie same, powiadomienie naprawdę pochodziło od AxtonPay;
  • Jeśli podpisy są różne, może to być próba oszustwa ze strony płatnika.

Przykład linii do generowania podpisu:

// Full URL:
https://EXAMPLE.COM?time=1737027838.1237

// POST body: 
pid=ABCD5678&status=1&shop_user_id=&shop_payment_id=&amount=25.00000000&filled=25.00000000&fee=0&total_filled=25.00000000&currency=RDD&test=0

// String for signature calculation: 
time=1737027838.1237pid=ABCD5678&status=1&shop_user_id=&shop_payment_id=&amount=25.00000000&filled=25.00000000&fee=0&total_filled=25.00000000&currency=RDD&test=0

Potwierdzenie, że sklep przetworzył informacje o płatności: /api/v1/private/checkout/payment/confirm/{PID}

To żądanie jest wysyłane do AxtonPay w odpowiedzi na powiadomienie otrzymane od niego. Funkcjonalnie jest to potwierdzenie, że sklep pomyślnie odebrał i przetworzył otrzymane powiadomienie.

Aby wysłać żądanie, wywołaj metodę /api/v1/private/checkout/payment/confirm/{PID}, podając pid faktury na końcu adresu URL.

Parametry żądania:

  • time (wymagane) - POSIX timestamp (Unix time)
  • status (wymagane, liczba całkowita) - numer statusu płatności, dla którego sklep wysyła potwierdzenie

Jeśli przesłany status zgadza się z aktualnym statusem tej faktury w systemie, AxtonPay odpowie za pomocą 'OK', a jeśli się nie zgadza, odpowie błędem.

Przykład linii do generowania podpisu:

// Full URL:
https://mp.axtonpay.com/api/v1/private/checkout/payment/confirm/ABCD5678?time=1737011414

// POST body: 
{"status":"1"}

// String for signature calculation:
time=1737011414{"status":"1"}

Przykład odpowiedzi, jeśli aktualny status płatności jest taki sam:

{
    "status": "ok",
    "data": "\"Paid\" status notification is confirmed"
}

Przykład odpowiedzi, jeśli aktualny status płatności różni się od tego przesłanego w żądaniu:

{
    "status": "error",
    "message": "Something went wrong"
}

Kody walut

Waluty, które można wykorzystać do wystawienia faktury.

Większość używanych kodów walut należy do walut fiducjarnych i są one równe ISO 4217. Lista zawiera również kilka kryptowalut.

Kod Imię Cyfry dziesiętne Typ
BCH Bitcoin Cash 8 Kryptowaluta
BLK Blackcoin 8 Kryptowaluta
BNB Binancecoin 18 Kryptowaluta
BTC Bitcoin 8 Kryptowaluta
BTT BitTorrent 18 Token kryptograficzny
BUSD Binance USD 18 Token kryptograficzny
DAI Dai 18 Token kryptograficzny
DASH Dash 8 Kryptowaluta
DOGE Dogecoin 8 Kryptowaluta
ETC Ethereum Classic 18 Kryptowaluta
ETH Ethereum 18 Kryptowaluta
LTC Litecoin 8 Kryptowaluta
NLG Gulden 8 Kryptowaluta
RDD ReddCoin 8 Kryptowaluta
TRX Tron 6 Kryptowaluta
USDC USD Coin 6 Token kryptograficzny
USDD Decentralized USD 18 Token kryptograficzny
USDT Tether USDT 6 Token kryptograficzny
VTC Vertcoin 8 Kryptowaluta
XVG Verge 8 Kryptowaluta
AED United Arab Emirates dirham 2 Waluta fiducjarna
AFN Afghan afghani 2 Waluta fiducjarna
ALL Albanian lek 2 Waluta fiducjarna
AMD Armenian dram 2 Waluta fiducjarna
ANG Netherlands Antillean guilder 2 Waluta fiducjarna
AOA Angolan kwanza 2 Waluta fiducjarna
ARS Argentine peso 2 Waluta fiducjarna
AUD Australian dollar 2 Waluta fiducjarna
AWG Aruban florin 2 Waluta fiducjarna
AZN Azerbaijani manat 2 Waluta fiducjarna
BAM Bosnia and Herzegovina convertible mark 2 Waluta fiducjarna
BBD Barbados dollar 2 Waluta fiducjarna
BDT Bangladeshi taka 2 Waluta fiducjarna
BGN Bulgarian lev 2 Waluta fiducjarna
BHD Bahraini dinar 3 Waluta fiducjarna
BIF Burundian franc 2 Waluta fiducjarna
BMD Bermudian dollar 2 Waluta fiducjarna
BND Brunei dollar 2 Waluta fiducjarna
BOB Boliviano 2 Waluta fiducjarna
BRL Brazilian real 2 Waluta fiducjarna
BSD Bahamian dollar 2 Waluta fiducjarna
BTN Bhutanese ngultrum 2 Waluta fiducjarna
BWP Botswana pula 2 Waluta fiducjarna
BYN Belarusian ruble 2 Waluta fiducjarna
BZD Belize dollar 2 Waluta fiducjarna
CAD Canadian dollar 2 Waluta fiducjarna
CDF Congolese franc 2 Waluta fiducjarna
CHF Swiss franc 2 Waluta fiducjarna
CLP Chilean peso 2 Waluta fiducjarna
CNY Renminbi (Chinese) yuan 2 Waluta fiducjarna
COP Colombian peso 2 Waluta fiducjarna
CRC Costa Rican colon 2 Waluta fiducjarna
CUC Cuban convertible peso 2 Waluta fiducjarna
CUP Cuban peso 2 Waluta fiducjarna
CVE Cape Verde escudo 2 Waluta fiducjarna
CZK Czech koruna 2 Waluta fiducjarna
DJF Djiboutian franc 2 Waluta fiducjarna
DKK Danish krone 2 Waluta fiducjarna
DOP Dominican peso 2 Waluta fiducjarna
DZD Algerian dinar 2 Waluta fiducjarna
EGP Egyptian pound 2 Waluta fiducjarna
ERN Eritrean nakfa 2 Waluta fiducjarna
ETB Ethiopian birr 2 Waluta fiducjarna
EUR Euro 2 Waluta fiducjarna
FJD Fiji dollar 2 Waluta fiducjarna
FKP Falkland Islands pound 2 Waluta fiducjarna
GBP Pound sterling 2 Waluta fiducjarna
GEL Georgian lari 2 Waluta fiducjarna
GHS Ghanaian cedi 2 Waluta fiducjarna
GIP Gibraltar pound 2 Waluta fiducjarna
GMD Gambian dalasi 2 Waluta fiducjarna
GNF Guinean franc 0 Waluta fiducjarna
GTQ Guatemalan quetzal 2 Waluta fiducjarna
GYD Guyanese dollar 2 Waluta fiducjarna
HKD Hong Kong dollar 2 Waluta fiducjarna
HNL Honduran lempira 2 Waluta fiducjarna
HRK Croatian kuna 2 Waluta fiducjarna
HTG Haitian gourde 2 Waluta fiducjarna
HUF Hungarian forint 2 Waluta fiducjarna
IDR Indonesian rupiah 2 Waluta fiducjarna
ILS Israeli new shekel 2 Waluta fiducjarna
INR Indian rupee 2 Waluta fiducjarna
IQD Iraqi dinar 3 Waluta fiducjarna
IRR Iranian rial 2 Waluta fiducjarna
ISK Icelandic krona 2 Waluta fiducjarna
JMD Jamaican dollar 2 Waluta fiducjarna
JOD Jordanian dinar 3 Waluta fiducjarna
JPY Japanese yen 3 Waluta fiducjarna
KES Kenyan shilling 2 Waluta fiducjarna
KGS Kyrgyzstani som 2 Waluta fiducjarna
KHR Cambodian riel 2 Waluta fiducjarna
KMF Comoro franc 2 Waluta fiducjarna
KPW North Korean won 2 Waluta fiducjarna
KRW South Korean won 2 Waluta fiducjarna
KWD Kuwaiti dinar 3 Waluta fiducjarna
KYD Cayman Islands dollar 2 Waluta fiducjarna
KZT Kazakhstani tenge 2 Waluta fiducjarna
LAK Lao kip 2 Waluta fiducjarna
LBP Lebanese pound 2 Waluta fiducjarna
LKR Sri Lankan rupee 2 Waluta fiducjarna
LRD Liberian dollar 2 Waluta fiducjarna
LSL Lesotho loti 2 Waluta fiducjarna
LYD Libyan dinar 3 Waluta fiducjarna
MAD Moroccan dirham 2 Waluta fiducjarna
MDL Moldovan leu 2 Waluta fiducjarna
MGA Malagasy ariary 2 Waluta fiducjarna
MKD Macedonian denar 2 Waluta fiducjarna
MMK Myanmar kyat 2 Waluta fiducjarna
MNT Mongolian togrog 2 Waluta fiducjarna
MOP Macanese pataca 2 Waluta fiducjarna
MRU Mauritanian ouguiya 2 Waluta fiducjarna
MUR Mauritian rupee 2 Waluta fiducjarna
MVR Maldivian rufiyaa 2 Waluta fiducjarna
MWK Malawian kwacha 2 Waluta fiducjarna
MXN Mexican peso 2 Waluta fiducjarna
MYR Malaysian ringgit 2 Waluta fiducjarna
MZN Mozambican metical 2 Waluta fiducjarna
NAD Namibian dollar 2 Waluta fiducjarna
NGN Nigerian naira 2 Waluta fiducjarna
NIO Nicaraguan cordoba 2 Waluta fiducjarna
NOK Norwegian krone 2 Waluta fiducjarna
NPR Nepalese rupee 2 Waluta fiducjarna
NZD New Zealand dollar 2 Waluta fiducjarna
OMR Omani rial 3 Waluta fiducjarna
PAB Panamanian balboa 2 Waluta fiducjarna
PEN Peruvian sol 2 Waluta fiducjarna
PGK Papua New Guinean kina 2 Waluta fiducjarna
PHP Philippine peso 2 Waluta fiducjarna
PKR Pakistani rupee 2 Waluta fiducjarna
PLN Polish zloty 2 Waluta fiducjarna
PYG Paraguayan guarani 2 Waluta fiducjarna
QAR Qatari riyal 2 Waluta fiducjarna
RON Romanian leu 2 Waluta fiducjarna
RSD Serbian dinar 2 Waluta fiducjarna
RUB Russian ruble 2 Waluta fiducjarna
RWF Rwandan franc 2 Waluta fiducjarna
SAR Saudi riyal 2 Waluta fiducjarna
SBD Solomon Islands dollar 2 Waluta fiducjarna
SCR Seychelles rupee 2 Waluta fiducjarna
SDG Sudanese pound 2 Waluta fiducjarna
SEK Swedish krona/kronor 2 Waluta fiducjarna
SGD Singapore dollar 2 Waluta fiducjarna
SHP Saint Helena pound 2 Waluta fiducjarna
SLL Sierra Leonean leone 2 Waluta fiducjarna
SOS Somali shilling 2 Waluta fiducjarna
SRD Surinamese dollar 2 Waluta fiducjarna
SSP South Sudanese pound 2 Waluta fiducjarna
STN Sao Tome and Pricipe dobra 2 Waluta fiducjarna
SVC Salvadoran colon 2 Waluta fiducjarna
SYP Syrian pound 2 Waluta fiducjarna
SZL Swazi lilangeni 2 Waluta fiducjarna
THB Thai baht 2 Waluta fiducjarna
TJS Tajikistani somoni 2 Waluta fiducjarna
TMT Turkmenistan manat 2 Waluta fiducjarna
TND Tunisian dinar 3 Waluta fiducjarna
TOP Tongan paanga 2 Waluta fiducjarna
TRY Turkish lira 2 Waluta fiducjarna
TTD Trinidad and Tobago dollar 2 Waluta fiducjarna
TWD New Taiwan dollar 2 Waluta fiducjarna
TZS Tanzanian shilling 2 Waluta fiducjarna
UAH Ukrainian hryvnia 2 Waluta fiducjarna
UGX Ugandan shilling 0 Waluta fiducjarna
USD United States dollar 2 Waluta fiducjarna
UYU Uruguayan peso 2 Waluta fiducjarna
UZS Uzbekistan som 2 Waluta fiducjarna
VES Venezuelan bolivar soberano 2 Waluta fiducjarna
VND Vietnamese dong 2 Waluta fiducjarna
VUV Vanuatu vatu 0 Waluta fiducjarna
WST Samoan tala 2 Waluta fiducjarna
XAF CFA franc BEAC 3 Waluta fiducjarna
XCD East Caribbean dollar 2 Waluta fiducjarna
XOF CFA franc BCEAO 2 Waluta fiducjarna
XPF CFP franc (franc Pacifique) 3 Waluta fiducjarna
XTS Kody zarezerwowane specjalnie do celów testowych 2 Zarezerwowany kod
XXX Kody przypisane do transakcji, w których nie jest zaangażowana żadna waluta 2 Zarezerwowany kod
YER Yemeni rial 2 Waluta fiducjarna
ZAR South African rand 2 Waluta fiducjarna
ZMW Zambian kwacha 2 Waluta fiducjarna
ZWL Zimbabwean dollar 2 Waluta fiducjarna