AxtonPay API

Document version: 0.9

ਸਧਾਰਣ ਜਾਣਕਾਰੀ

ਏਪੀਆਈ ਐਂਡਪੌਇੰਟ

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

Content-type

API 2 ਸਮੱਗਰੀ ਕਿਸਮਾਂ ਵਾਲੀਆਂ HTTP ਬੇਨਤੀਆਂ ਨੂੰ ਮਨਜ਼ੂਰ ਕਰਦਾ ਹੈ: 'application/x-www-form-urlencoded', 'application/json'.

HTTP ਹੈੱਡਰ POST ਬਾਡੀ ਦੀ ਸਮੱਗਰੀ ਵਿੱਚ ਫਿੱਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।

ਛੋਟੇ ਸ਼ਬਦ ਅਤੇ ਪਰਿਭਾਸ਼ਾਵਾਂ

  • {PID} - ਚਲਾਨ ਦਾ ਆਈਡੀ, ਆਮ ਤੌਰ 'ਤੇ ਇਹ ਇੱਕ ਵਿਲੱਖਣ 8-ਅੱਖਰਾਂ ਵਾਲੀ ਅਲਫਾਨ੍ਯੂਮੈਰਿਕ ਲੜੀ ਹੁੰਦੀ ਹੈ।
  • Shop - ਤੁਹਾਡੇ ਵੈੱਬਸਾਈਟ ਜੋ AxtonPay ਸਰਵਿਸ ਦੇ ਜ਼ਰੀਏ ਭੁਗਤਾਨ ਸਵੀਕਾਰ ਕਰਦੀ ਹੈ

ਏਪੀਆਈ ਨਾਲ ਕੰਮ ਕਰਨ ਦਾ ਐਲਗੋਰਿਦਮ

ਭੁਗਤਾਨ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਆਮ ਕਾਰਵਾਈ ਕ੍ਰਮ:

  • ਇਨਵੌਇਸ ਬਣਾਓ ('/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 arguments ਦੇ ਮਾਮਲੇ ਵਿੱਚ, ਉਹ ਕੰਪੋਨੈਂਟ ਸਿਰਫ ਖਾਲੀ ਸਤਰ ਹੋਵੇਗਾ।

ਸਾਈਨਿੰਗ ਬੇਨਤੀ ਵਿੱਚ ਡੇਟਾ ਦਾ ਕ੍ਰਮ: QUERY_STRING ਪਹਿਲਾਂ, ਫਿਰ POST ਡੇਟਾ। ਤੁਹਾਨੂੰ ਇਨ੍ਹਾਂ ਦੇ ਵਿਚਕਾਰ ਕੋਈ ਜੋੜਨ ਵਾਲੇ ਨਿਸ਼ਾਨ ਨਹੀਂ ਪਾਉਣੇ, ਸਿਰਫ਼ ਦੋ ਟੈਕਸਟ ਸਟਰਿੰਗਾਂ ਨੂੰ ਜੋੜੋ।

ਫਿਰ ਇੱਕ ਵਾਰੀ, ਹਰ ਚਿੰਨ੍ਹ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਤੁਹਾਨੂੰ ਕਿਸੇ ਵੀ ਵਾਈਟਸਪੇਸ ਜਾਂ ਨਵੀਂ ਲਾਈਨ ਦੇ ਚਿੰਨ੍ਹ ਨੂੰ ਵੀ ਜੋੜਨਾ ਜਾਂ ਹਟਾਉਣਾ ਨਹੀਂ ਚਾਹੀਦਾ। ਸਿਰਫ ਸਰਵਰ ਵੱਲੋਂ ਪ੍ਰਾਪਤ ਕੱਚਾ ਡੇਟਾ ਹੀ ਵਰਤੋ।

ਨਤੀਜੇ ਵਾਲੀ ਸਤਰ ਤੋਂ ਕੁੰਜੀ 'Secret key' ਨਾਲ ਇੱਕ SHA-256 ਹੈਸ਼ ਲਈ ਜਾਂਦੀ ਹੈ ਅਤੇ ਫੰਕਸ਼ਨ hash_hmac() ਦੇ ਦੂਜੇ ਤਰਕ ਵਜੋਂ ਵਰਤੀ ਜਾਂਦੀ ਹੈ।

ਮੌਜੂਦਾ POSIX timestamp (Unix time) ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਵਾਲੇ 'time' ਪੈਰਾਮੀਟਰ ਨੂੰ ਭੇਜਣਾ ਲਾਜ਼ਮੀ ਹੈ।

ਇਹ ਦਸਤਖਤ 24 ਘੰਟਿਆਂ ਲਈ ਵੈਧ ਹੈ। ਜੇ 'time' ਪੈਰਾਮੀਟਰ ਦਾ ਮੂਲ੍ਹ ਮੌਜੂਦਾ ਸਰਵਰ ਸਮੇਂ ਨਾਲ 24 ਘੰਟਿਆਂ ਤੋਂ ਵੱਧ ਫਰਕ ਰੱਖਦਾ ਹੈ (ਚਾਹੇ ਅੱਗੇ ਹੋਵੇ ਜਾਂ ਪਿੱਛੇ), ਤਾਂ ਬੇਨਤੀ ਫੇਲ ਹੋ ਜਾਏਗੀ ਭਾਵੇਂ ਦਸਤਖਤ ਵਿੱਚ ਕੋਈ ਗਲਤੀ ਨਾ ਹੋਵੇ।

ਜੇ ਵਿਕਰੇਤਾ ਪੈਨਲ ਨੇ ਕਿਸੇ ਦਸਤਖਤ ਨਾਲ ਬੇਨਤੀ ਸਵੀਕਾਰ ਕਰ ਲਈ ਹੈ, ਤਾਂ ਉਸ ਦਸਤਖਤ ਨੂੰ ਮੁੜ ਵਰਤਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ, ਇੱਥੋਂ ਤੱਕ ਕਿ ਇੱਕੋ ਹੀ ਪੈਰਾਮੀਟਰਾਂ ਨਾਲ ਬੇਨਤੀ ਭੇਜਣ ਲਈ ਵੀ (ਇਸ ਵਿੱਚ ਪੈਰਾਮੀਟਰ 'time' ਸ਼ਾਮਲ ਹੈ)।

ਪੈਦਾ ਹੋਏ ਹੈਸ਼ ਨੂੰ HTTP ਹੈਡਰ 'Sign' ਵਿੱਚ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।

ਗਣਿਤ ਕੀਤੀ ਗਈ ਦਸਤਖਤ ਦੇ ਇਲਾਵਾ, ਬੇਨਤੀ ਵਿੱਚ ਉਹ 'Api-Key' ਹੈਡਰ ਵੀ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਵਰਤੀ ਗਈ API ਚਾਵੀ ਹੋਵੇ। ਉਦਾਹਰਣ:

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

ਤੁਸੀਂ AxtonPay ਨੂੰ ਭੇਜੇ ਗਏ ਬੇਨਤੀ 'ਤੇ ਇਸ ਚੈੱਕਆਊਟ ਨਾਲ ਸਬੰਧਤ ਕਿਸੇ ਵੀ ਵੈਧ ਕੁੰਜੀ ਨਾਲ ਦਸਤਖਤ ਕਰ ਸਕਦੇ ਹੋ। ਹਾਲਾਂਕਿ 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()}'

ਪੈਰਾਮੀਟਰ

ਏਪੀਆਈ ਸਭ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਦੋਹਾਂ QUERY_STRING ਅਤੇ POST ਬੇਨਤੀ ਦੇ ਬਾਡੀ ਵਿੱਚ قبول ਕਰਦਾ ਹੈ।

ਬੂਲੀਅਨ ਵੇਰੀਏਬਲ

API ਉਮੀਦ ਕਰਦੀ ਹੈ ਕਿ ਬੂਲੀਅਨ ਵੈਰੀਏਬਲ ਵਿੱਚ '0' ਜਾਂ '1' ਮਿਲੇ, ਪਰ ਨਿਰਯਾਤ ਟਾਈਪ ਰੂਪਾਂਤਰਣ ਦੇ ਕਾਰਨ, ਕੋਈ ਵੀ ਲਿਖਤੀ ਸਤਰ ਨੂੰ '1' ਵਜੋਂ ਮੰਨਿਆ ਜਾਵੇਗਾ, ਇਨਾਂ ਤੇ ਸ਼ਬਦ 'false' ਵੀ ਸ਼ਾਮਲ ਹੈ। ਇਸ ਲਈ, ਬੂਲੀਅਨ ਵੈਰੀਏਬਲ ਲਈ 'FALSE' ਮੁੱਲ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਸੈੱਟ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ ਇਸ ਵਿੱਚ ਜਾਂ ਤਾਂ ਮੁੱਲ '0' ਜਾਂ ਖਾਲੀ ਸਤਰ ਭੇਜਣੀ ਪਵੇਗੀ।

ਦਸ਼ਮਲਵ ਵਿਚਕਾਰਨ ਚਿੰਨ੍ਹ

ਸੰਖਿਆਂ ਵਿੱਚ ਦਸ਼ਮਲਵ ਵਿਬਾਜਕ ਵਜੋਂ ਸਿਰਫ ਦਸ਼ਮਲਵ ਬਿੰਦੂ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।

ਪੈਰਾਮੀਟਰਾਂ ਵਿੱਚ ਅੱਖਰਾਂ ਦਾ ਕੇਸ

ਕੁਝ ਬਰਖ਼ਾਸਤਾਂ ਦੇ ਇਲਾਵਾ, ਸਾਰੇ ਪੈਰਾਮੀਟਰ ਕੇਸ-ਸੰਵੇਦਨਸ਼ੀਲ ਹਨ।

ਕਾਲਬੈਕ URL

AxtonPay ਦੇ ਐਡਮਿਨ ਪੈਨਲ ਵਿੱਚ, ਚੈੱਕਆਉਟ ਸੈਟਿੰਗ ਪੇਜ 'ਤੇ, AxtonPay ਤੋਂ ਸਰਵਰ-ਸਰਵਰ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਸਟੋਰ URLs ਸੈਟ ਕਰਨਾ ਸੰਭਵ ਹੈ, ਨਾਲ ਹੀ ਇਨਵੌਇਸ ਦੀ ਭੁਗਤਾਨ ਜਾਂ ਇਸ ਦੀ ਰੱਦਗੀ ਦੇ ਬਾਅਦ ਖਰੀਦਦਾਰ ਨੂੰ ਰੀਡਾਇਰੈਕਟ ਕਰਨ ਲਈ URLs, ਅਤੇ ਗਲਤੀ ਹੋਣ ਦੀ ਸੂਰਤ ਵਿੱਚ ਵੀ।

ਇਹ URL ਇਨਵੌਇਸ ਬਣਾਉਣ ਦੀ ਬੇਨਤੀ ਵਿੱਚ ਓਵਰਰਾਈਡ ਕੀਤੇ ਜਾ ਸਕਦੇ ਹਨ।

AxtonPay ਏਪੀਆਈ ਦੇ ਤਰੀਕੇ

ਚਲਾਨ ਬਣਾਉਣਾ: /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" ਪੈਰਾਮੀਟਰ ਵਿੱਚ, ਗਾਹਕ ਦੇ ਈਮੇਲ ਜਾਂ ਫ਼ੋਨ ਨੰਬਰ ਦੀ ਥਾਂ ਇੱਕ ਸਰਗਰਮ ਗਾਹਕ ਆਈਡੀ ਦਿਓਣਾ ਬਿਹਤਰ ਹੈ। ਇਸ ਦੇ ਨਾਲ ਹੀ, "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}

ਉਹ ਜਾਣਕਾਰੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ, ਤੁਹਾਨੂੰ /api/v1/private/checkout/payment/get/{PID} ਮੇਥਡ ਨੂੰ ਕਾਲ ਕਰਨਾ ਹੋਵੇਗਾ, URL ਦੇ ਅਖੀਰ 'ਤੇ ਇਨਵਾਇਸ ਦਾ 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"
    }
}

ਮੰਗੀ ਗਈ ਰਕਮ ਅਤੇ ਭੁਗਤਾਨ ਕੀਤੀ ਗਈ ਰਕਮ ਦੀ ਤੁਲਨਾ

ਜਵਾਬ ਵਿੱਚ ਕਈ ਵakhਰੇ ਵakhਰੇ ਰਕਮਾਂ ਸ਼ਾਮਲ ਹਨ (ਉਸ ਮੁਦਰਾ ਵਿੱਚ ਜਿਸ ਵਿੱਚ ਇਨਵਾਇਸ ਜਾਰੀ ਕੀਤਾ ਗਿਆ ਸੀ):

  • "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) ਦਾ ਮਤਲਬ ਭੁਗਤਾਨ ਦੀ ਪੂਰੀ ਗੈਰਹਾਜ਼ਰੀ ਹੈ; ਜੇ ਇਹ ਮਿਲਦੇ ਹਨ ਤਾਂ ਬੈਲੈਂਸ ਭਰਨ ਜਾਂ ਮਾਲ/ਸੇਵਾਵਾਂ ਦੀ ਵਿਕਰੀ 'ਤੇ ਕੋਈ ਕਾਰਵਾਈ ਨਹੀਂ ਕੀਤੀ ਜaani ਚਾਹੀਦੀ।

ਦਸਤਖਤ ਦੀ ਜਾਂਚ

ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਸੂਚਨਾ 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 ਨੂੰ ਭੇਜੀ ਜਾਂਦੀ ਹੈ ਉਸ ਤੋਂ ਪ੍ਰਾਪਤ ਸੂਚਨਾ ਦੇ ਜਵਾਬ ਵਿੱਚ। ਕਾਰਜਕਾਰੀ ਤੌਰ 'ਤੇ, ਇਹ ਇੱਕ ਪੁਸ਼ਟੀ ਹੈ ਕਿ ਸਟੋਰ ਨੇ ਪ੍ਰਾਪਤ ਸੂਚਨਾ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਪ੍ਰਾਪਤ ਅਤੇ ਪ੍ਰਕਿਰਿਆਤਮਕ ਕੀਤਾ ਹੈ।

ਇੱਕ ਬੇਨਤੀ ਭੇਜਣ ਲਈ, ਮੈਥਡ /api/v1/private/checkout/payment/confirm/{PID} ਨੂੰ ਕਾਲ ਕਰੋ, URL ਦੇ ਅਖੀਰ ਵਿੱਚ ਇਨਵੌਇਸ ਦਾ 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 ਫਿਆਟ ਕਰੰਸੀ