card_token that represents the stored card data.payByCardToken API, eliminating the need to resend sensitive card details. The service helps streamline the payment process, improves user experience for recurring transactions, and ensures that sensitive card information is handled in a secure and compliant manner.The parameters and their order to be used for the hash algorithmare as follows.merchant_key customer_number card_holder_name expiry_month expiry_year app_secret
generate_save_card_create_hash_key() {
local merchant_key="$1"
local customer_number="$2"
local card_holder_name="$3"
local card_number="$4"
local expiry_month="$5"
local expiry_year="$6"
local app_secret="$7"
local data="${merchant_key}|${customer_number}|${card_holder_name}|${card_number}|${expiry_month}|${expiry_year}"
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"
}
result=$(generate_save_card_create_hash_key \
"123456789" \
"CUST001" \
"AHMET YILMAZ" \
"4111111111111111" \
"12" \
"2028" \
"mySecretKey123")
echo "$result"{
"status_code": 100,
"status_description": "The card token saved successfully",
"card_token": "3acb729f7341c4fa4971a5b81b76189e"
}