Request Hash Test (hashDataV2)
You must create and send the relevant hash with every request you send to paynkolay. The hash is calculated using the methods below. You can get your unique sx and merchantSecretKey information from your panel.
Hash Test Form
Section titled “Hash Test Form”You can test the hash calculation process using the form below:
Creating Hash for Common Payment and APIs
Section titled “Creating Hash for Common Payment and APIs”When you post the hash value to us along with other parameters, we hash the same values. If the hash you send matches the hash we generate, we confirm that the request came from you.
$hashstr = $sx."|".$clientRefCode."|".$amount."|".$successUrl."|".$failUrl."|".$rnd."|".$customerKey."|".$merchantSecretKey;$hash = mb_convert_encoding($hashstr, 'UTF-8');$hashedBytes = hash("sha512", $hash, true);$HashDatav2 = base64_encode($hashedBytes);
var raw = $"{Sx}|{ClientRefCode}|{Amount}|{SuccessUrl}|{FailUrl}|{Rnd}|{CustomerKey}|{merchantSecretKey}";using var sha512 = SHA512.Create();HashDatav2 = Convert.ToBase64String(sha512.ComputeHash(Encoding.UTF8.GetBytes(raw)));
import hashlibimport base64
# Assuming these variables are defined elsewhere in your coderaw = f"{sx}|{full_name}|{email}|{gsm}|{amount}|{link_expiration_time}|{merchantSecretKey}"sha512 = hashlib.sha512()sha512.update(raw.encode('utf-8'))HashDatav2 = base64.b64encode(sha512.digest()).decode('utf-8')
const crypto = require('crypto');
// Assuming these variables are defined elsewhere in your codeconst raw = `${sx}|${full_name}|${email}|${gsm}|${amount}|${link_expiration_time}|${merchantSecretKey}`;const hash = crypto.createHash('sha512');hash.update(raw, 'utf8');const HashDatav2 = hash.digest('base64');
Creating Hash for Cancel-Refund Service
Section titled “Creating Hash for Cancel-Refund Service”$hashstr = $sx."|".$referenceCode."|".$type."|".$amount."|".$trxDate."|".$merchantSecretKey;$hash = mb_convert_encoding($hashstr, 'UTF-8');$hashedBytes = hash("sha512", $hash, true);$HashDatav2 = base64_encode($hashedBytes);
var raw = $"{sx}|{referenceCode}|{type}|{amount}|{trxDate}|{merchantSecretKey}";using var sha512 = SHA512.Create();HashDatav2 = Convert.ToBase64String(sha512.ComputeHash(Encoding.UTF8.GetBytes(raw)));
import hashlibimport base64
# Assuming these variables are defined elsewhere in your codehashstr = f"{sx}|{referenceCode}|{type}|{amount}|{trxDate}|{merchantSecretKey}"hash_bytes = hashstr.encode('utf-8')hashedBytes = hashlib.sha512(hash_bytes).digest()HashDatav2 = base64.b64encode(hashedBytes).decode('utf-8')
const crypto = require('crypto');
// Assuming these variables are defined elsewhere in your codeconst raw = `${sx}|${referenceCode}|${type}|${amount}|${trxDate}|${merchantSecretKey}`;const hash = crypto.createHash('sha512');hash.update(raw, 'utf8');const HashDatav2 = hash.digest('base64');
Creating Hash for Reporting Service
Section titled “Creating Hash for Reporting Service”$hashstr = $sx."|".$startDate."|".$endDate."|".$clientRefCode."|".$merchantSecretKey;$hash = mb_convert_encoding($hashstr, 'UTF-8');$hashedBytes = hash("sha512", $hash, true);$HashDatav2 = base64_encode($hashedBytes);
var raw = $"{sx}|{startDate}|{endDate}|{clientRefCode}|{merchantSecretKey}";using var sha512 = SHA512.Create();HashDatav2 = Convert.ToBase64String(sha512.ComputeHash(Encoding.UTF8.GetBytes(raw)));
import hashlibimport base64
# Assuming these variables are defined elsewhere in your coderaw = f"{sx}|{startDate}|{endDate}|{clientRefCode}|{merchantSecretKey}"sha512 = hashlib.sha512()sha512.update(raw.encode('utf-8'))HashDatav2 = base64.b64encode(sha512.digest()).decode('utf-8')
const crypto = require('crypto');
// Assuming these variables are defined elsewhere in your codeconst raw = `${sx}|${startDate}|${endDate}|${clientRefCode}|${merchantSecretKey}`;const hash = crypto.createHash('sha512');hash.update(raw, 'utf8');const HashDatav2 = hash.digest('base64');
Creating Hash for Pay By Link
Section titled “Creating Hash for Pay By Link”$hashstr = $sx."|".$full_name."|".$email."|".$gsm."|".$amount."|".$link_expiration_time."|".$merchantSecretKey;$hash = mb_convert_encoding($hashstr, 'UTF-8');$hashedBytes = hash("sha512", $hash, true);$HashDatav2 = base64_encode($hashedBytes);
var raw = $"{sx}|{full_name}|{email}|{gsm}|{amount}|{link_expiration_time}|{merchantSecretKey}";using var sha512 = SHA512.Create();HashDatav2 = Convert.ToBase64String(sha512.ComputeHash(Encoding.UTF8.GetBytes(raw)));
import hashlibimport base64
# Assuming these variables are defined elsewhere in your coderaw = f"{sx}|{startDate}|{endDate}|{clientRefCode}|{merchantSecretKey}"sha512 = hashlib.sha512()sha512.update(raw.encode('utf-8'))HashDatav2 = base64.b64encode(sha512.digest()).decode('utf-8')
const crypto = require('crypto');
// Assuming these variables are defined elsewhere in your codeconst raw = `${sx}|${startDate}|${endDate}|${clientRefCode}|${merchantSecretKey}`;const hash = crypto.createHash('sha512');hash.update(raw, 'utf8');const HashDatav2 = hash.digest('base64');
Creating Hash for Recurring Payment
Section titled “Creating Hash for Recurring Payment”$hashstr = $sx."|".$gsm."|".$amount."|".$clientRefCode."|".$merchantSecretKey;$hash = mb_convert_encoding($hashstr, 'UTF-8');$hashedBytes = hash("sha512", $hash, true);$HashDatav2 = base64_encode($hashedBytes);
var raw = $"{sx}|{gsm}|{amount}|{clientRefCode}|{merchantSecretKey}";using var sha512 = SHA512.Create();HashDatav2 = Convert.ToBase64String(sha512.ComputeHash(Encoding.UTF8.GetBytes(raw)));
import hashlibimport base64
# Assuming these variables are defined elsewhere in your coderaw = f"{sx}|{gsm}|{amount}|{clientRefCode}|{merchantSecretKey}"sha512 = hashlib.sha512()sha512.update(raw.encode('utf-8'))HashDatav2 = base64.b64encode(sha512.digest()).decode('utf-8')
const crypto = require('crypto');
// Assuming these variables are defined elsewhere in your codeconst raw = `${sx}|${gsm}|${amount}|${clientRefCode}|${merchantSecretKey}`;const hash = crypto.createHash('sha512');hash.update(raw, 'utf8');const HashDatav2 = hash.digest('base64');
Creating Hash for Recurring Payment Cancellation
Section titled “Creating Hash for Recurring Payment Cancellation”$hashstr = $sx."|".$InstructionNumber."|".$merchantSecretKey;$hash = mb_convert_encoding($hashstr, 'UTF-8');$hashedBytes = hash("sha512", $hash, true);$HashDatav2 = base64_encode($hashedBytes);
string hashStr = $"{sx}|{instructionNumber}|{merchantSecretKey}";using var sha512 = SHA512.Create();HashDatav2 = Convert.ToBase64String(sha512.ComputeHash(Encoding.UTF8.GetBytes(hashStr)));
import hashlibimport base64
# Assuming these variables are defined elsewhere in your coderaw = f"{sx}|{InstructionNumber}|{merchantSecretKey}"sha512 = hashlib.sha512()sha512.update(raw.encode('utf-8'))HashDatav2 = base64.b64encode(sha512.digest()).decode('utf-8')
const crypto = require('crypto');
// Assuming these variables are defined elsewhere in your codeconst raw = `${sx}|${InstructionNumber}|${merchantSecretKey}`;const hash = crypto.createHash('sha512');hash.update(raw, 'utf8');const HashDatav2 = hash.digest('base64');
Creating HashDatav2 for Saved Cards
Section titled “Creating HashDatav2 for Saved Cards”Saving a Card:
$hashstr = $sx."|".$cardNumber."|".$cvv."|".$merchantSecretKey;
Listing Saved Cards:
$hashstr = $sx."|".$customerKey."|".$merchantSecretKey;
Deleting Saved Cards:
$hashstr = $sx."|".$customerKey."|".$tranId."|".$token."|".$merchantSecretKey;
Processing Payment from Saved Card:
$hashstr = $sx."|".$clientRefCode."|".$amount."|".$successUrl."|".$failUrl."|".$rnd."|".$csCustomerKey."|".$merchantSecretKey;