Bayarcash
Bayarcash
  • Welcome
  • Bank List
    • FPX
    • DuitNow Online Banking/Wallets
  • Portal
    • Portal List
    • Create Portal
  • Payment
    • Payment Channel
    • Payment Intent
    • Payment Intent ID
  • Transaction
    • Callback
    • Transaction ID
    • All Transactions
  • Checksum
    • Checksum Validation
    • Payment Intent
    • Transaction Callback
  • Direct Debit
    • e-Mandate Enrollment
    • e-Mandate Maintenance
    • e-Mandate Termination
    • Callback
    • Mandate ID
    • Mandate Transaction ID
  • Enterprise Partner
    • Merchant Registration
    • Payout Bank List
    • Merchant Status
    • Merchant Payout ID
    • All Merchant Payouts
  • Sitelink
    • GitHub @webimpian
Powered by GitBook
On this page
  1. Checksum

Transaction Callback


Sample code using PHP to validate transaction callback checksum.

This example is tailored for the v2 endpoint (console.bayar.cash/api/v2) and can be used to validate data received via the return_url.

If you’re using the v3 endpoint (api.console.bayar.cash/v3), the same logic applies for validating payload data received from the callback_url.

<?php
    $secretKey = 'xxxxx';  // Your API secret key obtain from Bayarcash portal
    
    $callbackChecksum = $callbackData['checksum'];
    
    $payloadData = [
        "record_type"               => $callbackData['record_type'],
        "transaction_id"            => $callbackData['transaction_id'],
        "exchange_reference_number" => $callbackData['exchange_reference_number'],
        "exchange_transaction_id"   => $callbackData['exchange_transaction_id'],
        "order_number"              => $callbackData['order_number'],
        "currency"                  => $callbackData['currency'],
        "amount"                    => $callbackData['amount'],
        "payer_name"                => $callbackData['payer_name'],
        "payer_email"               => $callbackData['payer_email'],
        "payer_bank_name"           => $callbackData['payer_bank_name'],
        "status"                    => $callbackData['status'],
        "status_description"        => $callbackData['status_description'],
        "datetime"                  => $callbackData['datetime'],
    ];
    
    ksort($payloadData);  // Sort the payload data by key
    $payloadString = implode('|', $payloadData);  // Concatenate values with '|'
    
    $validResponse = hash_hmac('sha256', $payloadString, $secretKey) === $callbackChecksum;  // Validate checksum

For v3 endpoint (api.console.bayar.cash/v3), below are example with payload data from return_url.

<?php
    $secretKey = 'xxxxx';  // Your API secret key obtain from Bayarcash portal
    
    $callbackChecksum = $callbackData['checksum'];
    
    $payloadData = [
        'transaction_id'            => $callbackData['transaction_id'],
        'exchange_reference_number' => $callbackData['exchange_reference_number'],
        'exchange_transaction_id'   => $callbackData['exchange_transaction_id'],
        'order_number'              => $callbackData['order_number'],
        'currency'                  => $callbackData['currency'],
        'amount'                    => $callbackData['amount'],
        'payer_bank_name'           => $callbackData['payer_bank_name'],
        'status'                    => $callbackData['status'],
        'status_description'        => $callbackData['status_description'],
    ];
    
    ksort($payloadData);  // Sort the payload data by key
    $payloadString = implode('|', $payloadData);  // Concatenate values with '|'
    
    $validResponse = hash_hmac('sha256', $payloadString, $secretKey) === $callbackChecksum;  // Validate checksum
PreviousPayment IntentNexte-Mandate Enrollment

Last updated 4 months ago