Supported by CloudPay. Docs v2.0

Hashing




Below are the necessary parameters for hashing calculation and sample php code for calculation. This hashing mechanic should be re-created on your seamless side in the response code and presented to us for control. If any incorrect creation method is made in this regard, the integration test fails and you may get an error during the transaction process.


Params


ParameterTypeDescriptionRequirement
api_idintegerAPI Id for MerchantYes
api_keystringAPI Key for MerchantYes
user_idintegerUser Id that started the processYes
usernamestringUsername that started the processYes
amountdecimalTransaction AmountYes
typestringTransaction TypeYes
external_transaction_idstringUnique ID submitted by the siteNo

Example PHP Code


If an external_transaction_id is sent when you start the transaction, it must be added.


$parameters = [
    'api_id' => 1,
    'api_key' => 'x3dfjkasdo12332',
    'user_id' => 1,
    'username' => 'pay_test',
    'amount' => 200.5,
    'type' => 'withdraw', // example: deposit or withdraw
    'external_transaction_id' => '5f08479c847733826ad5e4c1'
];

$generateHash = hash("sha512", http_build_query($parameters));

echo $generateHash;

Example C# Code


If an external_transaction_id is sent when you start the transaction, it must be added.


public class paymentHash
{
    public string api_id { get; set; }
    public string api_key { get; set; }
    public string user_id { get; set; }
    public string username { get; set; }
    public string amount { get; set; }
    public string type { get; set; }
    public string external_transaction_id { get; set; }
}

var hashObj = new paymentHash()
{
    api_id = 1,
    api_key = 'x3dfjkasdo12332',
    user_id = 1,
    username = 'pay_test',
    amount = 200.5,
    type = 'withdraw', // example: deposit or withdraw
    external_transaction_id= '5f08479c847733826ad5e4c1'
};

var properties = from p in hashObj.GetType().GetProperties()
                 where p.GetValue(hashObj, null) != null
                 select p.Name + "=" + HttpUtility.UrlEncode(p.GetValue(hashObj, null).ToString());
             
string queryString = String.Join("&", properties.ToArray());

string hash = BitConverter.ToString(new SHA512CryptoServiceProvider().ComputeHash(Encoding.Default.GetBytes(queryString))).Replace("-", String.Empty).ToLower();

Example JavaScript Code


If an external_transaction_id is sent when you start the transaction, it must be added.


function sha512(str) {
  return crypto.subtle.digest("SHA-512", new TextEncoder("utf-8").encode(str)).then(buf => {
    return Array.prototype.map.call(new Uint8Array(buf), x=>(('00'+x.toString(16)).slice(-2))).join('');
  });
}

var params = {
    api_id: 1,
    api_key: 'x3dfjkasdo12332',
    user_id: 1,
    username: 'pay_test',
    amount: 200.5,
    type: 'withdraw', // example: deposit or withdraw
    external_transaction_id: '5f08479c847733826ad5e4c1'
};

var esc = encodeURIComponent;
var query = Object.keys(params)
    .map(k => esc(k) + '=' + esc(params[k]))
    .join('&');

sha512(query).then(x => console.log(x));
    
console.log(query);