AxtonPay API

Document version: 0.9

공통 정보

API 엔드포인트

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

Content-type

API는 2가지 콘텐츠 유형의 HTTP 요청을 허용합니다: 'application/x-www-form-urlencoded', 'application/json'.

HTTP 헤더는 POST 본문의 내용에 맞아야 합니다.

약어와 정의

  • {PID} - 청구서의 ID로, 보통 고유한 8자리 영숫자 문자열입니다.
  • Shop - AxtonPay 서비스를 통해 결제를 받는 귀하의 웹사이트

API 작업 알고리즘

결제를 받기 위한 일반적인 절차:

  • 송장('/api/v1/private/checkout/payment/create')을 생성하면, API 응답이 송장 URL('invoice_url')을 반환합니다.
  • 구매자가 결제를 하기 위해 이 송장으로 보내십시오.
  • AxtonPay 서버 알림을 기다리세요, 그것은 'server_notification_url'로 올 것입니다,
  • AxtonPay로부터 알림을 받으면, 해당 서명의 유효성을 확인하고 가능한 경우 수신 확인을 AxtonPay('/api/v1/private/checkout/payment/confirm/{PID}')에게 보내십시오,
  • 송장 상태가 변경되면, 이 상태에 해당하는 작업을 수행하십시오(예: 송장에 대한 전체 정보를 요청, 상품 배송, 지원 팀에 티켓 생성 등).

청구서를 생성할 때 비어 있거나 잘못된 'server_notification_url'를 설정하면 서비스가 상태 변경에 대한 알림을 보낼 수 없습니다. 이러한 경우에는 일정한 간격으로 직접 청구서를 확인해야 합니다 ('/api/v1/private/checkout/payment/get/{PID}').

요청 승인

요청을 승인하려면 특별한 방식으로 형성된 문자열에서 해시를 계산해야 합니다. 이 문자열은 URL 매개변수(QUERY_STRING)와 POST 요청 본문(REQUEST_BODY)을 연결(붙여서)하여 구성됩니다. 모든 구성 요소는 서버로 전송될 형태 그대로 가져오는 것이 중요합니다. URL 매개변수(QUERY_STRING)는 URL에서 한 줄로 가져와야 하며, 매개변수 순서를 변경하거나 어떤 요소도 생략하지 않아야 합니다. POST 요청 본문(REQUEST_BODY)도 변경 없이 사용해야 하며, 따옴표, 공백, 괄호, 줄바꿈 등을 제거하지 않아야 합니다.

빈 POST 요청 본문의 경우와 빈 URL 인수의 경우, 해당 구성 요소는 단순히 빈 문자열이 됩니다.

서명 요청의 데이터 순서: QUERY_STRING 먼저, 그 다음 POST 데이터. 이들 사이에 어떤 연결 기호도 삽입하지 말고, 두 텍스트 문자열을 단순히 이어 붙이세요.

다시 말하지만, 모든 기호는 중요합니다. 공백이나 줄 바꿈 기호도 추가하거나 제거하면 안 됩니다. 서버에서 받은 원시 데이터를 그대로 사용해야 합니다.

결과 문자열에서 키 'Secret key'를 가진 SHA-256 해시가 가져와지고 함수 hash_hmac()의 두 번째 인수로 사용됩니다.

현재 POSIX timestamp (Unix time)를 포함하는 'time' 매개변수를 전달하는 것은 필수입니다.

이 서명은 24시간 동안 유효합니다. 'time' 매개변수의 값이 현재 서버 시간과 24시간 이상 차이가 나면(앞이나 뒤 모두 포함), 서명이 오류 없이 계산되었더라도 요청이 실패합니다.

상인 패널이 어떤 서명이 있는 요청을 수락했다면, 그 서명은 동일한 매개변수로 요청을 보내는 데에도 다시 사용할 수 없습니다(이에는 매개변수 'time'가 포함됩니다).

생성된 해시는 HTTP 헤더 'Sign'에 전달됩니다.

계산된 서명 외에도 요청에는 사용된 API 키를 포함하는 'Api-Key' 헤더도 포함되어야 합니다. 예시:

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

이 결제 요청에는 이 체크아웃에 속한 유효한 키를 사용하여 서명할 수 있습니다. 그러나 AxtonPay는 항상 판매자 패널에서 선택한 키를 사용합니다.

서명 계산 예:

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

다른 예제에서 공백과 줄 바꿈에 주의하세요:

/* 
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 예:

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

매개변수

API는 모든 매개변수를 QUERY_STRING와 POST 요청의 본문에서 모두 허용합니다.

불리언 변수

API는 Boolean 변수에서 '0' 또는 '1'를 받기를 기대하지만, 암시적 타입 변환 때문에 모든 텍스트 문자열은 'false'라는 단어조차도 '1'로 처리됩니다. 따라서 Boolean 변수에 명시적으로 'FALSE' 값을 설정하려면, 해당 값으로 '0' 또는 빈 문자열을 전달해야 합니다.

소수점 구분자

숫자에서 소수점 구분 기호로는 소수점만 사용됩니다.

매개변수의 문자 대소문자

몇 가지 예외를 제외하고, 모든 매개변수는 대소문자를 구분합니다.

콜백 URL

AxtonPay의 관리자 패널에서, 결제 설정 페이지에서 AxtonPay로부터 서버 간 알림을 받기 위한 스토어 URL과 청구서 결제 후 또는 취소 시, 그리고 오류 발생 시 구매자를 리디렉션할 URL을 설정할 수 있습니다.

이 URL들은 청구서 생성 요청에서 덮어쓸 수 있습니다.

AxtonPay API 방법

송장 작성: /api/v1/private/checkout/payment/create

메서드 /api/v1/private/checkout/payment/create 가 송장 생성을 시작합니다.

성공하면, 이 방법은 고객이 결제를 진행할 수 있도록 전달해야 하는 링크('invoice_url')를 반환합니다.

자체 인보이스 매개변수:

  • time (필수) - POSIX timestamp (Unix time)
  • amount (필수) - 지불할 금액(상점이 받고자 하는 상품 또는 서비스의 가격)
  • currency (필수) - ISO 4217-alpha에 따른 3자리 통화 코드, 대소문자 구분 없음
  • pms (필수) - 송장 페이지에 표시된 결제 수단. 모든 결제 수단을 허용하려면 값은 'all'이며, 일부만 허용하려면 쉼표로 구분된 숫자 식별자를 나열하십시오.
  • pm - 선택한 결제 수단의 식별자입니다. 'pm' 매개변수가 전달되면 청구서가 '투명 모드'로 생성된다는 점이 중요합니다. 즉, 구매자는 청구서 페이지를 보지 않고 바로 결제 시스템으로 이동합니다.
  • extra_data - 추가 데이터를 포함하는 연관 배열; 이 데이터는 전체 그대로 스토어에 반환됩니다
  • shop_user_id - 스토어의 사용자 식별자는 변경되지 않은 형태로 스토어에 반환됩니다
  • shop_payment_id - 상점의 결제 식별자는 변경되지 않은 형태로 상점에 반환됩니다
  • shop_name - 매장 이름(청구서 페이지에 표시됨)
  • shop_payment_desc - 주문 설명(청구서 페이지에 표시됨)
  • shop_payment_remark - 이 결제에 대한 귀하의 메모(이 필드는 결제에 대한 귀하의 메모를 위한 것이며, AxtonPay 는 이를 어디에도 전달하지 않습니다; 결제 목록에서만 볼 수 있으며, 매장으로 되돌아가지 않습니다)
  • valid_time - 청구서를 지불할 수 있는 시간 간격; 초 단위
  • view_time - 외부 링크를 통해 송장을 확인할 수 있는 시간 간격; 단위: 초; 카운트다운은 'valid_time' 기간 종료 후 시작됨
  • server_notification_method - 결제 상태에 대한 서버-서버 알림을 상점에 보내는 방법; 유효한 값: POST, GET

인보이스에 대한 일부 설정은 결제 설정 페이지에서 설정됩니다. 그러나 요청에서 전달된 값이 이러한 설정보다 우선합니다.

이 송장에 대해 재정의할 수 있는 체크아웃 매개변수:

  • customer_success_url - 청구서가 성공적으로 결제된 경우 구매자가 리디렉션될 링크(즉, 청구서 상태가 'paid' 또는 'overpaid'인 경우).
  • customer_cancel_url - 결제가 취소되면 구매자가 리디렉션될 링크
  • customer_fail_url - 결제가 오류로 끝날 경우 구매자가 리디렉션될 링크
  • server_notification_url - 결제 상태에 대한 서버 간 알림을 상점으로 보내는 링크

참고: 귀하의 개인정보 보호정책을 준수하기 위해 일반적으로 고객의 개인 데이터를 인보이스 속성에 포함할 필요는 없습니다. 예를 들어, "shop_user_id" 매개변수에는 고객의 이메일이나 전화번호보다는 추상적인 고객 ID를 지정하는 것이 좋습니다. 또한 "shop_payment_desc"에서는 고객이 이미 자신에 대한 모든 정보를 알고 있기 때문에 고객 데이터를 전혀 포함하지 않는 것이 좋습니다. 대신 결제한 상품이나 서비스에 대한 정보나, 심지어 '구매' 또는 '잔액 충전'과 같은 행동 유형만 작성할 수도 있습니다.

모든 참조는 반드시 프로토콜과 함께 전송됩니다.

요청 예시:

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

청구서 생성을 요청할 때 성공적인 응답의 예:

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

송장 정보 얻기: /api/v1/private/checkout/payment/get/{PID}

URL 끝에 송장 PID을 지정하여 메서드 /api/v1/private/checkout/payment/get/{PID}를 호출하면 필요한 정보를 얻을 수 있습니다.

요청 매개변수:

  • time (필수) - POSIX timestamp (Unix time)

서명을 작성하기 위한 문장의 예:

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

// String for signature calculation: 
time=1766837343

답변 예시:

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

청구 금액과 지급 금액 비교

응답에는 여러 다른 금액이 포함되어 있습니다(청구서가 발행된 통화로):

  • "amount" - 청구 금액,
  • "filled" - 청구서의 일부를 지불했다,
  • "total_filled" - 수수료를 포함하여 고객이 총 얼마를 지불했는지.

만약 "filled = amount"라면, 그것은 필요한 만큼 정확히 지불됩니다.

"filled > amount"이면, 과지급이 있습니다.

만약 "filled < amount"이면, 송장이 전액 지불되지 않았습니다(과소 지불).

송장: AxtonPay로부터 상태 변경 알림 처리

청구서의 상태가 변경될 때마다, AxtonPay는 server_notification_url에게 server_notification_method를 사용하여 알림을 보냅니다

예시 데이터:

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

이 알림에 대한 응답으로 AxtonPay 은 HTTP code 200 을 수신할 것으로 예상하며, 이는 성공적으로 수신되었음을 확인합니다. 그렇지 않으면 AxtonPay 은 점점 증가하는 간격으로 12번 더 재시도하며, 이후 알림 상태는 'error' 로 변경됩니다(하지만 이는 청구서 자체의 상태에는 영향을 미치지 않습니다).

가능한 상태 값:

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

성공적인 결제 상태는 1 (paid)와 5 (overpaid)입니다; 해당 상태를 받은 경우 결제된 구매를 고객에게 이전하거나 잔액을 충전할 수 있습니다. 상태가 5 (overpaid)인 결제의 경우, 잔액 충전 시 실제로 수령된 결제 금액만큼 잔액을 충전할 수 있지만, 상품/서비스 판매 시 과다 결제가 발생한 경우에는 지불자에게 연락하여 과다 결제 처리 방법을 함께 결정하는 것이 좋습니다.

부분적으로 성공한 상태는 4 (underpaid)입니다; 이 상태를 받은 경우 실제로 받은 금액만큼 잔액을 충전할 수 있습니다. 그러나 이 상태는 상품/서비스 판매에 대해 성공적인 것으로 간주될 수 없습니다.

다른 모든 상태 - 0 (pending), 2 (error), 3 (canceled by customer) 는 지급이 전혀 이루어지지 않았음을 의미합니다; 이러한 상태를 받은 경우, 잔액 충전이나 상품/서비스 판매에 대한 어떤 조치도 수행해서는 안 됩니다.

서명 확인

알림이 정확히 AxtonPay에 의해 전송되었는지 확인하려면, 신뢰하기 전에 수신된 알림의 서명을 검증하는 것이 필요합니다. 검증 과정은 자신의 요청에 서명하는 것과 유사하지만, 마지막 단계에서 계산된 서명과 수신된 HTTP 헤더 'Sign'를 비교해야 합니다.

변경된 결제 상태에 대한 알림을 받은 후의 주요 단계는 다음과 같습니다:

  • 받은 알림에서 전체 인수 문자열(QUERY_STRING)을 가져옵니다,
  • 받은 알림에서 전체 POST data (REQUEST_BODY)를 가져오세요,
  • 해당 QUERY_STRING + REQUEST_BODY와 적절한 'Secret key'를 사용하여 서명을 계산하세요,
  • 계산된 서명을 HTTP 헤더에서 수신된 서명과 비교 'Sign',
  • 서명이 같다면, 알림은 정말 AxtonPay에서 온 것입니다;
  • 서명이 다르다면, 이는 지불자가 속이려고 시도하는 것일 수 있습니다.

서명 생성을 위한 한 줄 예시:

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

매장이 결제 정보를 처리했음을 확인: /api/v1/private/checkout/payment/confirm/{PID}

이 요청은 AxtonPay로부터 받은 알림에 대한 응답으로 전송됩니다. 기능적으로, 이는 상점이 수신된 알림을 성공적으로 받았고 처리했음을 확인하는 것입니다.

요청을 보내려면, URL 끝에 송장 pid를 지정하여 /api/v1/private/checkout/payment/confirm/{PID} 메서드를 호출하세요.

요청 매개변수:

  • time (필수) - POSIX timestamp (Unix time)
  • status (필수, 정수) - 매장이 확인을 보내는 결제 상태 번호

전송된 상태가 시스템의 이 송장 현재 상태와 일치하면 AxtonPay는 'OK'로 응답하고, 일치하지 않으면 오류로 응답합니다.

서명 생성을 위한 한 줄 예시:

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

현재 결제 상태가 동일한 경우의 응답 예:

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

요청에 전송된 것과 현재 결제 상태가 다른 경우의 응답 예:

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

통화 코드

송장 생성에 사용할 수 있는 통화.

사용되는 대부분의 통화 코드는 법정 화폐에 속하며, 그것들은 ISO 4217와 같습니다. 또한 목록에는 몇 가지 암호화폐도 포함되어 있습니다.

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