AxtonPay API

Document version: 0.9

Maklumat biasa

Titik akhir API

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

Content-type

API menerima HTTP permintaan dengan 2 jenis kandungan: 'application/x-www-form-urlencoded', 'application/json'.

Header HTTP harus sesuai dengan kandungan badan POST.

Singkatan dan definisi

  • {PID} - ID invois, biasanya ia adalah urutan alfanumerik unik 8 aksara.
  • Shop - Laman web anda yang menerima pembayaran melalui perkhidmatan AxtonPay

Algoritma bekerja dengan API

Susunan tindakan biasa untuk menerima pembayaran:

  • buat invois ('/api/v1/private/checkout/payment/create'), maklum balas API akan memulangkan URL invois ('invoice_url'),
  • hantar pembeli ke invois ini untuk membuat pembayaran,
  • tunggu untuk AxtonPay notifikasi pelayan, yang akan datang ke 'server_notification_url',
  • selepas menerima sebarang notifikasi daripada AxtonPay, periksa kesahihan tandatangannya dan sebaik-baiknya hantar pengesahan penerimaan kepada AxtonPay ('/api/v1/private/checkout/payment/confirm/{PID}'),
  • jika status invois diubah, lakukan tindakan yang sesuai dengan status ini (contohnya, minta maklumat penuh mengenai invois, hantar barang, buat tiket untuk pasukan sokongan, dan sebagainya).

Jika anda menetapkan 'server_notification_url' kosong atau tidak sah semasa membuat invois, perkhidmatan tidak dapat menghantar pemberitahuan mengenai perubahan status; dalam kes sedemikian, anda harus memeriksa invois itu sendiri pada selang tertentu ('/api/v1/private/checkout/payment/get/{PID}').

Kebenaran permintaan

Untuk membenarkan permintaan, adalah perlu untuk mengira Hash daripada satu string yang dibentuk dengan cara khas. String itu disusun dengan mencantumkan (melekatkan bersama) argumen URL (QUERY_STRING) dan badan permintaan POST (REQUEST_BODY). Adalah penting bahawa semua komponen diambil dengan tepat dalam bentuk yang akan dihantar ke pelayan. Argumen URL (QUERY_STRING) harus diambil dari URL sebagai satu baris tunggal, tanpa mengubah susunan argumen dan tanpa menghilangkan mana-mana unsur. Badan permintaan POST (REQUEST_BODY) juga harus digunakan tanpa sebarang pengubahsuaian, termasuk tidak menghapus daripada ia sebarang tanda petik, ruang, kurungan, atau jeda baris.

Dalam kes badan permintaan POST yang kosong, dan dalam kes argumen URL yang kosong, komponen itu hanya akan menjadi rentetan kosong.

Urutan data dalam permintaan tandatangan: QUERY_STRING dahulu, kemudian data POST. Anda tidak sepatutnya memasukkan sebarang tanda penyambung di antara mereka, hanya gabungkan dua rentetan teks itu.

Sekali lagi, setiap simbol adalah penting. Anda tidak seharusnya menambah atau mengurangkan walau satu ruang kosong atau simbol baris baru. Gunakan sahaja data mentah yang diterima oleh pelayan.

Sebuah SHA-256 hash dengan kekunci 'Secret key' diambil dari rentetan yang terhasil dan digunakan sebagai argumen kedua fungsi hash_hmac().

Adalah wajib untuk luluskan parameter 'time' yang mengandungi POSIX timestamp (Unix time) semasa.

Tandatangan ini sah selama 24 jam. Jika nilai parameter 'time' berbeza daripada masa pelayan semasa lebih daripada 24 jam (sama ada ke hadapan atau ke belakang), permintaan akan gagal walaupun tandatangan dikira tanpa ralat.

Jika panel peniaga telah menerima permintaan dengan beberapa tandatangan, tandatangan itu tidak boleh digunakan lagi, walaupun untuk menghantar permintaan dengan parameter yang sama (ini termasuk parameter 'time').

Hash yang terhasil dihantar dalam header HTTP 'Sign'.

Selain daripada tandatangan yang dikira, permintaan itu juga mesti mengandungi header 'Api-Key' yang mengandungi kunci API yang digunakan. Contoh:

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

Anda boleh menandatangani permintaan yang dihantar pada AxtonPay dengan mana-mana kunci sah yang dimiliki oleh pembayaran ini. Walau bagaimanapun, AxtonPay sentiasa menggunakan kunci yang telah anda pilih dalam panel pedagang.

Contoh pengiraan tandatangan:

/* 
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'
*/

Perhatikan ruang putih dan baris baru dalam contoh lain:

/* 
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"
}' 
*/

Contoh Python untuk menyusun rentetan bagi pengiraan tandatangan:

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

Parameter

API menerima semua parameter sama ada dalam QUERY_STRING dan dalam badan permintaan POST.

Pembolehubah Boolean

API menjangka untuk menerima '0' atau '1' dalam pemboleh ubah Boolean, tetapi kerana penukaran jenis secara tersirat, mana-mana rentetan teks akan dianggap sebagai '1', walaupun perkataan 'false'. Oleh itu, untuk menetapkan secara jelas nilai 'FALSE' untuk pemboleh ubah Boolean, anda perlu memberikannya sama ada nilai '0' atau rentetan kosong.

Pemisah perpuluhan

Hanya titik perpuluhan digunakan sebagai pemisah perpuluhan dalam nombor.

Huruf besar dan kecil dalam parameter

Dengan beberapa pengecualian, semua parameter adalah sensitif huruf besar/kecil.

URL Panggilan Balik

Dalam panel pentadbir AxtonPay, di halaman tetapan pembayaran, adalah mungkin untuk menetapkan URL kedai untuk menerima pemberitahuan server-server daripada AxtonPay, serta URL untuk mengalihkan pembeli selepas pembayaran invois atau pembatalannya, serta sekiranya berlaku ralat.

URL ini boleh ditimpa dalam permintaan penciptaan invois.

Kaedah AxtonPay API

Penciptaan invois: /api/v1/private/checkout/payment/create

Kaedah /api/v1/private/checkout/payment/create memulakan penciptaan invois.

Jika berjaya, kaedah ini akan mengembalikan pautan ('invoice_url') yang patut anda hantar kepada pelanggan untuk pembayaran.

Parameter invois sendiri:

  • time (diperlukan) - POSIX timestamp (Unix time)
  • amount (diperlukan) - jumlah yang perlu dibayar (harga produk atau perkhidmatan yang ingin diterima oleh kedai)
  • currency (diperlukan) - Kod mata wang 3 huruf mengikut ISO 4217-alpha, tidak mengira huruf besar atau kecil
  • pms (diperlukan) - kaedah pembayaran yang dipaparkan di halaman invois. Jika anda ingin membenarkan semua kaedah pembayaran, nilainya adalah 'all'; jika anda hanya ingin membenarkan sebahagiannya, senaraikan pengecam nombor mereka yang dipisahkan dengan koma.
  • pm - pengenal bagi kaedah pembayaran yang dipilih. Adalah penting bahawa jika parameter 'pm' dihantar, invois akan dibuat dalam 'mod telus', iaitu pembeli tidak akan melihat halaman invois, tetapi akan terus ke sistem pembayaran.
  • extra_data - sebuah array berasosiasi yang mengandungi sebarang data tambahan; data ini dikembalikan kepada stor secara keseluruhan
  • shop_user_id - pengenal pengguna di kedai, ia dikembalikan ke kedai dalam bentuk yang tidak berubah
  • shop_payment_id - pengesah pembayaran di kedai, ia dikembalikan ke kedai dalam bentuk tidak berubah
  • shop_name - nama kedai (dipaparkan di halaman invois)
  • shop_payment_desc - penerangan pesanan (dipaparkan di halaman invois)
  • shop_payment_remark - nota anda mengenai pembayaran ini (ini adalah ruangan untuk sebarang nota yang anda ada mengenai pembayaran, yang AxtonPay tidak dihantar ke mana-mana; ia hanya kelihatan dalam senarai pembayaran; ia tidak dikembalikan ke kedai)
  • valid_time - selang masa di mana invois boleh dibayar; dalam saat
  • view_time - selang masa di mana invois tersedia untuk dilihat melalui pautan luar; dalam saat; kira detik bermula selepas tempoh 'valid_time' berakhir
  • server_notification_method - kaedah menghantar notifikasi pelayan-ke-pelayan mengenai status pembayaran kepada kedai; nilai sah: POST, GET

Beberapa tetapan untuk invois ditetapkan di halaman tetapan pembayaran. Tetapi nilai yang dihantar dalam permintaan akan diutamakan berbanding tetapan ini.

Parameter checkout yang boleh ditindih untuk invois ini:

  • customer_success_url - pautan yang akan dialihkan kepada pembeli jika invois berjaya dibayar (iaitu jika status invois adalah 'paid' atau 'overpaid').
  • customer_cancel_url - pautan yang mana pembeli akan diarahkan semula jika pembayaran dibatalkan
  • customer_fail_url - pautan yang akan diarahkan kepada pembeli jika pembayaran berakhir dengan ralat
  • server_notification_url - pautan untuk menghantar pemberitahuan status pembayaran server-ke-server ke kedai

Nota: Untuk mematuhi polisi privasi anda sendiri, biasanya tidak perlu memasukkan data peribadi pelanggan anda dalam sifat invois. Contohnya, dalam parameter "shop_user_id", adalah lebih baik untuk menyatakan ID pelanggan yang abstrak daripada emel atau nombor telefon mereka. Juga dalam "shop_payment_desc", adalah lebih baik untuk tidak memasukkan data pelanggan langsung, kerana mereka sudah mengetahui segala-galanya tentang diri mereka; sebaliknya, anda boleh menulis sedikit maklumat tentang barang atau perkhidmatan yang dibayar, atau hanya menulis jenis tindakan, contohnya, "Pembelian" atau "Tambah baki".

Semua rujukan perlu disampaikan bersama protokol.

Contoh permintaan:

<?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);
?>

Contoh tindak balas yang berjaya apabila meminta penciptaan invois:

{
    "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"
}

Mendapatkan maklumat invois: /api/v1/private/checkout/payment/get/{PID}

Untuk mendapatkan maklumat yang anda perlukan, panggil kaedah /api/v1/private/checkout/payment/get/{PID}, dengan menyatakan PID invois di hujung URL.

Parameter permintaan:

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

Contoh baris untuk menulis tandatangan:

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

// String for signature calculation: 
time=1766837343

Contoh jawapan:

{
    "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"
    }
}

Perbandingan jumlah yang diminta dan jumlah yang dibayar

Respons itu mengandungi beberapa jumlah berbeza (dalam mata wang di mana invois dikeluarkan):

  • "amount" - jumlah yang ditagih,
  • "filled" - membayar sebahagian daripada invois,
  • "total_filled" - jumlah yang dibayar oleh pelanggan secara keseluruhan, termasuk komisen.

Jika "filled = amount", maka ia dibayar dengan tepat sebanyak yang diperlukan.

Jika "filled > amount", terdapat bayaran berlebihan.

Jika "filled < amount", invois belum dibayar sepenuhnya (bayaran kurang).

Invois: pemprosesan pemberitahuan dari AxtonPay mengenai perubahan status

Setiap kali status invois diubah, AxtonPay menghantar pemberitahuan kepada server_notification_url (menggunakan server_notification_method)

Data contoh:

{
    "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"
}

Sebagai tindak balas kepada pemberitahuan ini AxtonPay dijangka akan menerima HTTP code 200, yang mengesahkan penerimaan yang berjaya. Jika tidak, AxtonPay akan mencuba semula 12 kali lagi pada selang masa yang semakin meningkat, dan kemudian status pemberitahuan berubah kepada 'error' (tetapi ini tidak menjejaskan status invois itu sendiri).

Nilai status yang mungkin:

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

Status pembayaran yang berjaya adalah 1 (paid) dan 5 (overpaid); sekiranya diterima, anda boleh memindahkan pembelian yang telah dibayar kepada pelanggan atau menambah baki. Untuk pembayaran dengan status 5 (overpaid), sekiranya menambah baki, anda boleh menambah baki dengan jumlah pembayaran yang sebenarnya diterima, tetapi sekiranya penjualan barangan/perkhidmatan dan jumlah lebihan pembayaran yang ketara, adalah disyorkan untuk menghubungi pembayar dan membuat keputusan bersama tentang cara mengurus lebihan pembayaran tersebut.

Status separa berjaya adalah 4 (underpaid); sekiranya menerima status ini, adalah mungkin untuk menambah baki dengan jumlah pembayaran yang sebenarnya diterima. Walau bagaimanapun, status ini tidak boleh dianggap berjaya untuk penjualan barangan/perkhidmatan.

Semua status lain - 0 (pending), 2 (error), 3 (canceled by customer) bermaksud ketiadaan pembayaran sepenuhnya; sekiranya diterima, tiada tindakan untuk pengisian baki atau penjualan barang/perkhidmatan harus dilakukan.

Pemeriksaan tandatangan

Untuk memastikan pemberitahuan itu dihantar oleh AxtonPay dengan tepat, adalah perlu untuk mengesahkan tandatangan pemberitahuan yang diterima sebelum mempercayainya. Pengesahan adalah serupa dengan menandatangani permintaan anda sendiri, cuma langkah terakhir ditambah, apabila anda perlu membandingkan tandatangan yang dikira dengan header HTTP yang diterima 'Sign'.

Langkah utama selepas menerima pemberitahuan mengenai status pembayaran yang telah berubah adalah seperti berikut:

  • ambil keseluruhan rentetan hujah (QUERY_STRING) daripada pemberitahuan yang diterima,
  • ambil seluruh POST data (REQUEST_BODY) daripada pemberitahuan yang diterima,
  • hitung tandatangan menggunakan QUERY_STRING + REQUEST_BODY itu dan 'Secret key' yang sesuai,
  • bandingkan tandatangan yang dikira dengan yang diterima dalam pengepala HTTP 'Sign',
  • jika tandatangan itu sama, pemberitahuan itu benar-benar datang dari AxtonPay;
  • jika tandatangan berbeza, ia mungkin merupakan percubaan untuk menipu oleh pembayar.

Contoh baris untuk penjanaan tandatangan:

// 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

Pengesahan bahawa kedai telah memproses maklumat pembayaran: /api/v1/private/checkout/payment/confirm/{PID}

Permintaan ini dihantar kepada AxtonPay sebagai tindak balas kepada pemberitahuan yang diterimanya. Dari segi fungsinya, ia adalah pengesahan bahawa kedai telah berjaya menerima dan memproses pemberitahuan yang diterima.

Untuk menghantar permintaan, panggil kaedah /api/v1/private/checkout/payment/confirm/{PID}, dengan menyatakan pid invois di hujung URL.

Parameter permintaan:

  • time (diperlukan) - POSIX timestamp (Unix time)
  • status (diperlukan, nombor bulat) - nombor status pembayaran yang dihantar pengesahan oleh kedai

Jika status yang dihantar sepadan dengan status semasa invois ini dalam sistem, AxtonPay akan memberi respons dengan 'OK' dan jika ia tidak sepadan, ia akan memberi respons dengan ralat.

Contoh baris untuk penjanaan tandatangan:

// 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"}

Contoh jawapan jika status pembayaran semasa adalah sama:

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

Contoh jawapan jika status pembayaran semasa berbeza daripada yang dihantar dalam permintaan:

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

Kod mata wang

Mata wang yang boleh digunakan untuk penciptaan invois.

Kebanyakan kod mata wang yang digunakan adalah milik mata wang fiat, dan ia adalah sama dengan ISO 4217. Senarai itu juga mengandungi beberapa mata wang kripto.

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