The parameters and their order to be used for the hash algorithmare as follows.invoice_id merchant_key app_secret
#!/usr/bin/env bash
generate_hash_key() {
local invoice_id="$1"
local merchant_key="$2"
local app_secret="$3"
local data="${invoice_id}|${merchant_key}"
local iv
iv=$(openssl rand -hex 16 | openssl sha1 | awk '{print $2}' | cut -c1-16)
local password
password=$(printf "%s" "$app_secret" | openssl sha1 | awk '{print $2}')
local salt
salt=$(openssl rand -hex 16 | openssl sha1 | awk '{print $2}' | cut -c1-4)
local salt_with_password
salt_with_password=$(printf "%s" "${password}${salt}" | openssl sha256 | awk '{print $2}' | cut -c1-32)
local key_hex
key_hex=$(printf "%s" "$salt_with_password" | xxd -p -c 256)
local iv_hex
iv_hex=$(printf "%s" "$iv" | xxd -p -c 256)
local encrypted_base64
encrypted_base64=$(printf "%s" "$data" | openssl enc -aes-256-cbc -K "$key_hex" -iv "$iv_hex" -base64)
local msg="${iv}:${salt}:${encrypted_base64}"
msg="${msg//\//__}"
echo "$msg"
}
invoice_id=""
merchant_key=""
app_secret=""
result=$(generate_hash_key "$invoice_id" "$merchant_key" "$app_secret")
echo "Hash Key: $result"{
"status_code": 69,
"status_description": "Oder is not processed yet!",
"transaction_status": "Pending",
"order_id": "VP17695169711851953",
"transaction_id": "VSu7l-NpEs-TC10-18309-270126",
"message": "Oder is not processed yet!",
"reason": "User did not complete the process",
"bank_status_code": "",
"bank_status_description": "",
"invoice_id": "1234tsd122349",
"total_refunded_amount": 0,
"product_price": "5",
"transaction_amount": 5,
"ref_number": "",
"transaction_type": "Auth",
"original_bank_error_code": "",
"original_bank_error_description": "",
"cc_no": "45080345****4509",
"refund_info": [],
"payment_reason_code": "",
"payment_reason_code_detail": "",
"merchant_commission": "0.10",
"user_commission": "0.00",
"settlement_date": "2026-01-27",
"installment": 1,
"card_type": "CREDIT CARD"
}