Document version: 0.9
Allgemeine Informationen
API-Endpunkt
https://mp.axtonpay.com/api/v1/private/checkout
Content-type
API akzeptiert HTTP-Anfragen mit 2 Inhaltstypen: 'application/x-www-form-urlencoded', 'application/json'.
Die HTTP Überschrift sollte zum Inhalt des POST Textes passen.
Abkürzungen und Definitionen
- {PID} - ID der Rechnung, normalerweise ist es die eindeutige 8-stellige alphanumerische Sequenz.
- Shop - Ihre Website, die Zahlungen über den AxtonPay-Dienst akzeptiert
Algorithmus zur Arbeit mit der API
Übliche Abfolge von Schritten, um die Zahlung zu erhalten:
- erstelle eine Rechnung ('/api/v1/private/checkout/payment/create'), die API-Antwort wird die Rechnungs-URL zurückgeben ('invoice_url'),
- Senden Sie den Käufer zu dieser Rechnung, um die Zahlung vorzunehmen,
- Warte auf AxtonPay Server-Benachrichtigungen, die um 'server_notification_url' kommen werden,
- Nach Erhalt einer Benachrichtigung von AxtonPay überprüfen Sie die Gültigkeit ihrer Signatur und senden Sie nach Möglichkeit eine Empfangsbestätigung an AxtonPay ('/api/v1/private/checkout/payment/confirm/{PID}'),
- Wenn der Status einer Rechnung geändert wird, führen Sie die entsprechenden Aktionen zu diesem Status aus (z. B. vollständige Informationen über die Rechnung anfordern, die Waren versenden, ein Ticket an das Support-Team erstellen usw.).
Wenn Sie beim Erstellen einer Rechnung eine leere oder ungültige 'server_notification_url' einstellen, kann der Dienst keine Benachrichtigungen über Statusänderungen senden; in solchen Fällen sollten Sie die Rechnung selbst in einem bestimmten Intervall ('/api/v1/private/checkout/payment/get/{PID}') überprüfen.
Genehmigung von Anfragen
Um eine Anfrage zu autorisieren, ist es notwendig, einen Hash aus einem auf spezielle Weise gebildeten String zu berechnen. Der String wird durch das Aneinanderhängen (Zusammenkleben) der URL-Argumente (QUERY_STRING) und dem Körper der POST-Anfrage (REQUEST_BODY) gebildet. Es ist wichtig, dass alle Komponenten genau so genommen werden, wie sie an den Server übertragen werden. Die URL-Argumente (QUERY_STRING) sollten von der URL als eine einzige Zeile genommen werden, ohne die Reihenfolge der Argumente zu ändern und ohne Elemente wegzulassen. Der Körper der POST-Anfrage (REQUEST_BODY) sollte ebenfalls ohne jegliche Änderungen verwendet werden, einschließlich dass Anführungszeichen, Leerzeichen, Klammern und Zeilenumbrüche nicht entfernt werden.
Im Falle eines leeren POST Anforderungskörpers und im Falle leerer URL-Parameter wird diese Komponente einfach eine leere Zeichenkette sein.
Die Reihenfolge der Daten in der Signieranfrage: QUERY_STRING zuerst, dann die POST Daten. Sie sollten keine verbindenden Zeichen zwischen ihnen einfügen, sondern die beiden Textzeichenketten einfach zusammenfügen.
Noch einmal, jedes Symbol ist bedeutend. Sie sollten nicht einmal ein Leerzeichen oder ein Zeilenumbruch-Symbol hinzufügen oder entfernen. Verwenden Sie einfach die vom Server empfangenen Rohdaten.
Ein SHA-256 Hash mit dem Schlüssel 'Secret key' wird aus dem resultierenden String genommen und als zweites Argument der Funktion hash_hmac() verwendet.
Es ist verpflichtend, den 'time' Parameter zu übergeben, der die aktuelle POSIX timestamp (Unix time) enthält.
Diese Signatur ist 24 Stunden gültig. Wenn der Wert des 'time' Parameters mehr als 24 Stunden von der aktuellen Serverzeit abweicht (egal, ob nach vorne oder hinten), wird die Anfrage fehlschlagen, selbst wenn die Signatur ohne Fehler berechnet wurde.
Wenn das Händlerpanel eine Anfrage mit einer Signatur akzeptiert hat, kann diese Signatur nicht erneut verwendet werden, selbst nicht, um die Anfrage mit denselben Parametern zu senden (dies schließt den Parameter 'time' ein).
Der resultierende Hash wird im HTTP Header 'Sign' übergeben.
Zusätzlich zur berechneten Signatur muss die Anfrage auch einen 'Api-Key'-Header enthalten, der den verwendeten API-Schlüssel enthält. Beispiel:
$headers = [
'Api-Key: ' . $the_api_key,
'Sign: ' . $signature_sha256
];
Sie können die an das AxtonPay gesendete Anfrage mit jedem gültigen Schlüssel signieren, der zu diesem Checkout gehört. Das AxtonPay verwendet jedoch immer den Schlüssel, den Sie im Händlerpanel ausgewählt haben.
Beispiel für die Signaturberechnung:
/* 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¤cy=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¤cy=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¤cy=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¤cy=USD' */
Achten Sie in einem anderen Beispiel auf Leerzeichen und Zeilenumbrüche:
/*
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"
}'
*/
Das Python Beispiel für das Zusammensetzen des Strings zur Signaturberechnung:
string_for_hash_calculation = f'{request.query_params.urlencode()}{request.data.urlencode()}'
Parameter
Die API akzeptiert alle Parameter sowohl in QUERY_STRING als auch im Körper der POST-Anfrage.
Boolesche Variablen
Die API erwartet, dass sie '0' oder '1' in Boolean-Variablen erhält, aber durch die implizite Typkonvertierung wird jede Textzeichenfolge als '1' behandelt, sogar das Wort 'false'. Daher müssen Sie, um explizit einen 'FALSE'-Wert für eine Boolean-Variable festzulegen, entweder den Wert '0' oder eine leere Zeichenfolge übergeben.
Dezimaltrennzeichen
Nur der Dezimalpunkt wird als Dezimaltrennzeichen in Zahlen verwendet.
Zeichenfall in Parametern
Mit wenigen Ausnahmen sind alle Parameter zwischen Groß- und Kleinschreibung unterscheidend.
Rückruff-URL
Im Admin-Panel von AxtonPay ist es auf der Seite mit den Checkout-Einstellungen möglich, Shop-URLs für den Empfang von Server-zu-Server-Benachrichtigungen von AxtonPay festzulegen, sowie URLs für die Weiterleitung des Käufers nach der Rechnungszahlung oder deren Stornierung, sowie im Fehlerfall.
Diese URLs können in der Anfrage zur Rechnungserstellung überschrieben werden.
Methoden der AxtonPay API
Rechnungserstellung: /api/v1/private/checkout/payment/create
Methode /api/v1/private/checkout/payment/create startet die Erstellung der Rechnung.
Wenn erfolgreich, gibt die Methode einen Link ('invoice_url') zurück, an den Sie den Kunden zur Zahlung weiterleiten sollten.
Eigene Rechnungsparameter:
- time (erforderlich) - POSIX timestamp (Unix time)
- amount (erforderlich) - zu zahlender Betrag (der Preis des Produkts oder der Dienstleistung, den das Geschäft erhalten möchte)
- currency (erforderlich) - 3-stelliger Währungscode gemäß ISO 4217-alpha, nicht auf Groß- und Kleinschreibung achtend
- pms (erforderlich) - Zahlungsmethoden, die auf der Rechnungsseite angezeigt werden. Wenn Sie alle Zahlungsmethoden zulassen möchten, ist der Wert 'all'; wenn Sie nur einige davon zulassen möchten, listen Sie deren durch Kommas getrennte numerische Identifikatoren auf.
- pm - Bezeichner der ausgewählten Zahlungsmethode. Es ist wichtig, dass, wenn der 'pm'-Parameter übergeben wird, die Rechnung im 'transparenten Modus' erstellt wird, d.h. der Käufer wird die Rechnungsseite nicht sehen, sondern direkt zum Zahlungssystem weitergeleitet.
- extra_data - Ein assoziatives Array, das beliebige zusätzliche Daten enthält; diese Daten werden vollständig an den Speicher zurückgegeben
- shop_user_id - Benutzerkennung im Geschäft, sie wird unverändert an das Geschäft zurückgegeben
- shop_payment_id - Zahlungskennzeichen im Geschäft, es wird in unveränderter Form an das Geschäft zurückgegeben
- shop_name - Geschäftsname (auf der Rechnungsseite angezeigt)
- shop_payment_desc - Bestellbeschreibung (auf der Rechnungseite angezeigt)
- shop_payment_remark - Ihre Notizen zu dieser Zahlung (dies ist ein Feld für alle Notizen, die Sie zu der Zahlung haben, die AxtonPay nirgendwohin weitergibt; es ist nur in der Liste der Zahlungen sichtbar; es geht nicht zurück zum Geschäft)
- valid_time - der Zeitintervall, in dem die Rechnung bezahlt werden kann; in Sekunden
- view_time - Zeitintervall, während dem die Rechnung über einen externen Link angezeigt werden kann; in Sekunden; der Countdown beginnt, nachdem der 'valid_time' Zeitraum endet
- server_notification_method - Methode zum Senden von Server-zu-Server-Benachrichtigungen über Zahlungsstatus an den Shop; gültige Werte: POST, GET
Einige Einstellungen für die Rechnung werden auf der Seite mit den Checkout-Einstellungen vorgenommen. Aber die im Request übermittelten Werte haben Vorrang vor diesen Einstellungen.
Kassenparameter, die für diese Rechnung überschrieben werden können:
- customer_success_url - ein Link, zu dem der Käufer weitergeleitet wird, wenn die Rechnung erfolgreich bezahlt wurde (d. h. wenn der Rechnungsstatus 'paid' oder 'overpaid' ist).
- customer_cancel_url - ein Link, zu dem der Käufer weitergeleitet wird, wenn die Zahlung storniert wird
- customer_fail_url - ein Link, zu dem der Käufer weitergeleitet wird, wenn die Zahlung mit einem Fehler endet
- server_notification_url - Link zum Senden von Server-zu-Server-Benachrichtigungen über Zahlungsstatus an den Shop
Hinweis: Um den eigenen Datenschutzbestimmungen zu entsprechen, ist es normalerweise nicht notwendig, die personenbezogenen Daten Ihres Kunden in den Rechnungseigenschaften anzugeben. Zum Beispiel ist es beim "shop_user_id"-Parameter besser, eine abstrakte Kunden-ID anzugeben, anstatt deren E-Mail oder Telefonnummer. Auch im "shop_payment_desc" ist es besser, überhaupt keine Kundendaten einzufügen, da sie bereits alles über sich selbst wissen; stattdessen können Sie einige Informationen über die bezahlten Waren oder Dienstleistungen schreiben oder sogar nur die Art der Handlung angeben, zum Beispiel "Kauf" oder "Guthaben aufladen".
Alle Verweise werden notwendigerweise mit dem Protokoll übermittelt.
Beispiel für eine Anfrage:
<?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);
?>
Beispiel für eine erfolgreiche Antwort bei der Anforderung zur Erstellung einer Rechnung:
{
"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"
}
Abrufen von Rechnungsinformationen: /api/v1/private/checkout/payment/get/{PID}
Um die Informationen zu erhalten, müssen Sie die Methode /api/v1/private/checkout/payment/get/{PID} aufrufen, indem Sie die PID der Rechnung am Ende der URL angeben.
Abfrageparameter:
- time (erforderlich) - POSIX timestamp (Unix time)
Beispiel einer Zeile zum Erstellen einer Unterschrift:
// Full URL: https://mp.axtonpay.com/api/v1/private/checkout/payment/get/GIKR3XPY?time=1766837343 // String for signature calculation: time=1766837343
Beispiel einer Antwort:
{
"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"
}
}
Vergleich zwischen angeforderter und gezahlter Summe
Die Antwort enthält mehrere verschiedene Beträge (in der Währung, in der die Rechnung ausgestellt wurde):
- "amount" - berechneter Betrag,
- "filled" - teilweise die Rechnung bezahlt,
- "total_filled" - wie viel der Kunde insgesamt bezahlt hat, einschließlich Provisionen.
Wenn "filled = amount", dann wird es genau so viel bezahlt, wie nötig ist.
Wenn "filled > amount", gibt es eine Überzahlung.
Wenn "filled < amount", wurde die Rechnung nicht vollständig bezahlt (Unterzahlung).
Rechnung: Bearbeitung der Benachrichtigung von AxtonPay über Statusänderung
Jedes Mal, wenn sich der Status einer Rechnung ändert, sendet AxtonPay eine Benachrichtigung an server_notification_url (unter Verwendung des server_notification_method)
Beispieldaten:
{
"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"
}
Als Antwort auf diese Benachrichtigung erwartet AxtonPay den Empfang von HTTP code 200, was den erfolgreichen Empfang bestätigt. Andernfalls wird AxtonPay 12 weitere Male in zunehmend längeren Abständen versuchen, die Benachrichtigung zu senden, und dann ändert sich der Benachrichtigungsstatus zu 'error' (dies wirkt sich jedoch nicht auf den Status der Rechnung selbst aus).
Mögliche Statuswerte:
- 0 - pending
- 1 - paid
- 2 - error
- 3 - cancelled by customer
- 4 - underpaid
- 5 - overpaid
- 8 - expired
Erfolgreiche Zahlungsstatus sind 1 (paid) und 5 (overpaid); im Falle ihres Eingangs können Sie den bezahlten Kauf an den Kunden übertragen oder das Guthaben aufladen. Bei Zahlungen mit dem Status 5 (overpaid) können Sie im Falle der Guthabenaufladung das Guthaben um den tatsächlich erhaltenen Zahlungsbetrag aufladen, aber im Falle eines Waren-/Dienstleistungsverkaufs und eines erheblichen Überzahlungsbetrags ist es ratsam, den Zahlenden zu kontaktieren und mit ihm zu entscheiden, wie mit der Überzahlung umgegangen werden soll.
Teilweise erfolgreicher Status ist 4 (underpaid); im Falle des Erhalts dieses Status ist es möglich, das Guthaben um den tatsächlich erhaltenen Zahlungsbetrag aufzuladen. Dieser Status kann jedoch nicht als erfolgreich für den Verkauf von Waren/Dienstleistungen angesehen werden.
Alle anderen Status - 0 (pending), 2 (error), 3 (canceled by customer) bedeuten vollständige Abwesenheit einer Zahlung; im Falle ihres Eingangs sollten keine Maßnahmen zur Aufladung des Kontostands oder zum Verkauf von Waren/Dienstleistungen durchgeführt werden.
Signaturprüfung
Um sicherzustellen, dass die Benachrichtigung genau von AxtonPay gesendet wird, ist es notwendig, die Signatur der empfangenen Benachrichtigung zu überprüfen, bevor man ihr vertraut. Die Überprüfung ist ähnlich wie das Signieren Ihrer eigenen Anfragen, nur dass der letzte Schritt hinzugefügt wird, bei dem Sie die berechnete Signatur mit dem empfangenen HTTP-Header 'Sign' vergleichen sollten.
Die Hauptschritte nach Erhalt der Benachrichtigung über den geänderten Zahlungsstatus sind folgende:
- nehme die gesamte Zeichenkette der Argumente (QUERY_STRING) aus der erhaltenen Benachrichtigung,
- Nehmen Sie die ganze POST data (REQUEST_BODY) aus der erhaltenen Benachrichtigung,
- berechne die Signatur mit diesen QUERY_STRING + REQUEST_BODY und dem entsprechenden 'Secret key',
- die berechnete Signatur mit der im HTTP-Header empfangenen vergleichen 'Sign',
- wenn die Unterschriften gleich sind, kam die Benachrichtigung wirklich von AxtonPay;
- Wenn die Unterschriften unterschiedlich sind, könnte es ein Versuch des Zahlenden sein zu betrügen.
Beispiel einer Zeile zur Signaturerstellung:
// 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¤cy=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¤cy=RDD&test=0
Bestätigung, dass das Geschäft die Zahlungsinformationen verarbeitet hat: /api/v1/private/checkout/payment/confirm/{PID}
Diese Anfrage wird an AxtonPay gesendet als Antwort auf eine von ihm empfangene Benachrichtigung. Funktional ist es eine Bestätigung, dass der Store die empfangene Benachrichtigung erfolgreich erhalten und verarbeitet hat.
Um eine Anfrage zu senden, rufen Sie die Methode /api/v1/private/checkout/payment/confirm/{PID} auf, indem Sie am Ende der URL die PID der Rechnung angeben.
Anforderungsparameter:
- time (erforderlich) - POSIX timestamp (Unix time)
- status (erforderlich, Ganzzahl) - Zahlungsstatusnummer, für die das Geschäft eine Bestätigung sendet
Wenn der übermittelte Status mit dem aktuellen Status dieser Rechnung im System übereinstimmt, wird AxtonPay mit 'OK' antworten, und wenn er nicht übereinstimmt, wird er mit einem Fehler antworten.
Beispiel einer Zeile zur Signaturerstellung:
// 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"}
Beispiel für eine Antwort, wenn der aktuelle Zahlungsstatus derselbe ist:
{
"status": "ok",
"data": "\"Paid\" status notification is confirmed"
}
Beispiel für eine Antwort, wenn der aktuelle Zahlungsstatus von dem in der Anfrage übermittelten abweicht:
{
"status": "error",
"message": "Something went wrong"
}
Währungscodes
Die Währungen, die für die Erstellung einer Rechnung verwendet werden können.
Die meisten verwendeten Währungscodes gehören zu Fiat-Währungen, und sie sind gleich dem ISO 4217. Die Liste enthält auch mehrere Kryptowährungen.
| Code | Name | Dezimalziffern | Typ |
| BCH | Bitcoin Cash | 8 | Kryptowährung |
| BLK | Blackcoin | 8 | Kryptowährung |
| BNB | Binancecoin | 18 | Kryptowährung |
| BTC | Bitcoin | 8 | Kryptowährung |
| BTT | BitTorrent | 18 | Kryptomünze |
| BUSD | Binance USD | 18 | Kryptomünze |
| DAI | Dai | 18 | Kryptomünze |
| DASH | Dash | 8 | Kryptowährung |
| DOGE | Dogecoin | 8 | Kryptowährung |
| ETC | Ethereum Classic | 18 | Kryptowährung |
| ETH | Ethereum | 18 | Kryptowährung |
| LTC | Litecoin | 8 | Kryptowährung |
| NLG | Gulden | 8 | Kryptowährung |
| RDD | ReddCoin | 8 | Kryptowährung |
| TRX | Tron | 6 | Kryptowährung |
| USDC | USD Coin | 6 | Kryptomünze |
| USDD | Decentralized USD | 18 | Kryptomünze |
| USDT | Tether USDT | 6 | Kryptomünze |
| VTC | Vertcoin | 8 | Kryptowährung |
| XVG | Verge | 8 | Kryptowährung |
| AED | United Arab Emirates dirham | 2 | Fiatgeld |
| AFN | Afghan afghani | 2 | Fiatgeld |
| ALL | Albanian lek | 2 | Fiatgeld |
| AMD | Armenian dram | 2 | Fiatgeld |
| ANG | Netherlands Antillean guilder | 2 | Fiatgeld |
| AOA | Angolan kwanza | 2 | Fiatgeld |
| ARS | Argentine peso | 2 | Fiatgeld |
| AUD | Australian dollar | 2 | Fiatgeld |
| AWG | Aruban florin | 2 | Fiatgeld |
| AZN | Azerbaijani manat | 2 | Fiatgeld |
| BAM | Bosnia and Herzegovina convertible mark | 2 | Fiatgeld |
| BBD | Barbados dollar | 2 | Fiatgeld |
| BDT | Bangladeshi taka | 2 | Fiatgeld |
| BGN | Bulgarian lev | 2 | Fiatgeld |
| BHD | Bahraini dinar | 3 | Fiatgeld |
| BIF | Burundian franc | 2 | Fiatgeld |
| BMD | Bermudian dollar | 2 | Fiatgeld |
| BND | Brunei dollar | 2 | Fiatgeld |
| BOB | Boliviano | 2 | Fiatgeld |
| BRL | Brazilian real | 2 | Fiatgeld |
| BSD | Bahamian dollar | 2 | Fiatgeld |
| BTN | Bhutanese ngultrum | 2 | Fiatgeld |
| BWP | Botswana pula | 2 | Fiatgeld |
| BYN | Belarusian ruble | 2 | Fiatgeld |
| BZD | Belize dollar | 2 | Fiatgeld |
| CAD | Canadian dollar | 2 | Fiatgeld |
| CDF | Congolese franc | 2 | Fiatgeld |
| CHF | Swiss franc | 2 | Fiatgeld |
| CLP | Chilean peso | 2 | Fiatgeld |
| CNY | Renminbi (Chinese) yuan | 2 | Fiatgeld |
| COP | Colombian peso | 2 | Fiatgeld |
| CRC | Costa Rican colon | 2 | Fiatgeld |
| CUC | Cuban convertible peso | 2 | Fiatgeld |
| CUP | Cuban peso | 2 | Fiatgeld |
| CVE | Cape Verde escudo | 2 | Fiatgeld |
| CZK | Czech koruna | 2 | Fiatgeld |
| DJF | Djiboutian franc | 2 | Fiatgeld |
| DKK | Danish krone | 2 | Fiatgeld |
| DOP | Dominican peso | 2 | Fiatgeld |
| DZD | Algerian dinar | 2 | Fiatgeld |
| EGP | Egyptian pound | 2 | Fiatgeld |
| ERN | Eritrean nakfa | 2 | Fiatgeld |
| ETB | Ethiopian birr | 2 | Fiatgeld |
| EUR | Euro | 2 | Fiatgeld |
| FJD | Fiji dollar | 2 | Fiatgeld |
| FKP | Falkland Islands pound | 2 | Fiatgeld |
| GBP | Pound sterling | 2 | Fiatgeld |
| GEL | Georgian lari | 2 | Fiatgeld |
| GHS | Ghanaian cedi | 2 | Fiatgeld |
| GIP | Gibraltar pound | 2 | Fiatgeld |
| GMD | Gambian dalasi | 2 | Fiatgeld |
| GNF | Guinean franc | 0 | Fiatgeld |
| GTQ | Guatemalan quetzal | 2 | Fiatgeld |
| GYD | Guyanese dollar | 2 | Fiatgeld |
| HKD | Hong Kong dollar | 2 | Fiatgeld |
| HNL | Honduran lempira | 2 | Fiatgeld |
| HRK | Croatian kuna | 2 | Fiatgeld |
| HTG | Haitian gourde | 2 | Fiatgeld |
| HUF | Hungarian forint | 2 | Fiatgeld |
| IDR | Indonesian rupiah | 2 | Fiatgeld |
| ILS | Israeli new shekel | 2 | Fiatgeld |
| INR | Indian rupee | 2 | Fiatgeld |
| IQD | Iraqi dinar | 3 | Fiatgeld |
| IRR | Iranian rial | 2 | Fiatgeld |
| ISK | Icelandic krona | 2 | Fiatgeld |
| JMD | Jamaican dollar | 2 | Fiatgeld |
| JOD | Jordanian dinar | 3 | Fiatgeld |
| JPY | Japanese yen | 3 | Fiatgeld |
| KES | Kenyan shilling | 2 | Fiatgeld |
| KGS | Kyrgyzstani som | 2 | Fiatgeld |
| KHR | Cambodian riel | 2 | Fiatgeld |
| KMF | Comoro franc | 2 | Fiatgeld |
| KPW | North Korean won | 2 | Fiatgeld |
| KRW | South Korean won | 2 | Fiatgeld |
| KWD | Kuwaiti dinar | 3 | Fiatgeld |
| KYD | Cayman Islands dollar | 2 | Fiatgeld |
| KZT | Kazakhstani tenge | 2 | Fiatgeld |
| LAK | Lao kip | 2 | Fiatgeld |
| LBP | Lebanese pound | 2 | Fiatgeld |
| LKR | Sri Lankan rupee | 2 | Fiatgeld |
| LRD | Liberian dollar | 2 | Fiatgeld |
| LSL | Lesotho loti | 2 | Fiatgeld |
| LYD | Libyan dinar | 3 | Fiatgeld |
| MAD | Moroccan dirham | 2 | Fiatgeld |
| MDL | Moldovan leu | 2 | Fiatgeld |
| MGA | Malagasy ariary | 2 | Fiatgeld |
| MKD | Macedonian denar | 2 | Fiatgeld |
| MMK | Myanmar kyat | 2 | Fiatgeld |
| MNT | Mongolian togrog | 2 | Fiatgeld |
| MOP | Macanese pataca | 2 | Fiatgeld |
| MRU | Mauritanian ouguiya | 2 | Fiatgeld |
| MUR | Mauritian rupee | 2 | Fiatgeld |
| MVR | Maldivian rufiyaa | 2 | Fiatgeld |
| MWK | Malawian kwacha | 2 | Fiatgeld |
| MXN | Mexican peso | 2 | Fiatgeld |
| MYR | Malaysian ringgit | 2 | Fiatgeld |
| MZN | Mozambican metical | 2 | Fiatgeld |
| NAD | Namibian dollar | 2 | Fiatgeld |
| NGN | Nigerian naira | 2 | Fiatgeld |
| NIO | Nicaraguan cordoba | 2 | Fiatgeld |
| NOK | Norwegian krone | 2 | Fiatgeld |
| NPR | Nepalese rupee | 2 | Fiatgeld |
| NZD | New Zealand dollar | 2 | Fiatgeld |
| OMR | Omani rial | 3 | Fiatgeld |
| PAB | Panamanian balboa | 2 | Fiatgeld |
| PEN | Peruvian sol | 2 | Fiatgeld |
| PGK | Papua New Guinean kina | 2 | Fiatgeld |
| PHP | Philippine peso | 2 | Fiatgeld |
| PKR | Pakistani rupee | 2 | Fiatgeld |
| PLN | Polish zloty | 2 | Fiatgeld |
| PYG | Paraguayan guarani | 2 | Fiatgeld |
| QAR | Qatari riyal | 2 | Fiatgeld |
| RON | Romanian leu | 2 | Fiatgeld |
| RSD | Serbian dinar | 2 | Fiatgeld |
| RUB | Russian ruble | 2 | Fiatgeld |
| RWF | Rwandan franc | 2 | Fiatgeld |
| SAR | Saudi riyal | 2 | Fiatgeld |
| SBD | Solomon Islands dollar | 2 | Fiatgeld |
| SCR | Seychelles rupee | 2 | Fiatgeld |
| SDG | Sudanese pound | 2 | Fiatgeld |
| SEK | Swedish krona/kronor | 2 | Fiatgeld |
| SGD | Singapore dollar | 2 | Fiatgeld |
| SHP | Saint Helena pound | 2 | Fiatgeld |
| SLL | Sierra Leonean leone | 2 | Fiatgeld |
| SOS | Somali shilling | 2 | Fiatgeld |
| SRD | Surinamese dollar | 2 | Fiatgeld |
| SSP | South Sudanese pound | 2 | Fiatgeld |
| STN | Sao Tome and Pricipe dobra | 2 | Fiatgeld |
| SVC | Salvadoran colon | 2 | Fiatgeld |
| SYP | Syrian pound | 2 | Fiatgeld |
| SZL | Swazi lilangeni | 2 | Fiatgeld |
| THB | Thai baht | 2 | Fiatgeld |
| TJS | Tajikistani somoni | 2 | Fiatgeld |
| TMT | Turkmenistan manat | 2 | Fiatgeld |
| TND | Tunisian dinar | 3 | Fiatgeld |
| TOP | Tongan paanga | 2 | Fiatgeld |
| TRY | Turkish lira | 2 | Fiatgeld |
| TTD | Trinidad and Tobago dollar | 2 | Fiatgeld |
| TWD | New Taiwan dollar | 2 | Fiatgeld |
| TZS | Tanzanian shilling | 2 | Fiatgeld |
| UAH | Ukrainian hryvnia | 2 | Fiatgeld |
| UGX | Ugandan shilling | 0 | Fiatgeld |
| USD | United States dollar | 2 | Fiatgeld |
| UYU | Uruguayan peso | 2 | Fiatgeld |
| UZS | Uzbekistan som | 2 | Fiatgeld |
| VES | Venezuelan bolivar soberano | 2 | Fiatgeld |
| VND | Vietnamese dong | 2 | Fiatgeld |
| VUV | Vanuatu vatu | 0 | Fiatgeld |
| WST | Samoan tala | 2 | Fiatgeld |
| XAF | CFA franc BEAC | 3 | Fiatgeld |
| XCD | East Caribbean dollar | 2 | Fiatgeld |
| XOF | CFA franc BCEAO | 2 | Fiatgeld |
| XPF | CFP franc (franc Pacifique) | 3 | Fiatgeld |
| XTS | Codes, die speziell für Testzwecke reserviert sind | 2 | Reservierter Code |
| XXX | Die Codes, die für Transaktionen zugewiesen werden, bei denen keine Währung beteiligt ist | 2 | Reservierter Code |
| YER | Yemeni rial | 2 | Fiatgeld |
| ZAR | South African rand | 2 | Fiatgeld |
| ZMW | Zambian kwacha | 2 | Fiatgeld |
| ZWL | Zimbabwean dollar | 2 | Fiatgeld |
