Module: Bayarcash::CallbackVerifications
- Included in:
- Client
- Defined in:
- lib/bayarcash/callback_verifications.rb
Overview
Callback verification, one verifier per callback type.
Each verifier reconstructs the exact payload the gateway signs, computes the
HMAC-SHA256 checksum and compares it against the supplied checksum using a
constant-time comparison (see SecurityUtils.secure_compare).
Instance Method Summary collapse
-
#verify_direct_debit_authorization_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a direct-debit authorization callback.
-
#verify_direct_debit_bank_approval_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a direct-debit bank-approval callback.
-
#verify_direct_debit_transaction_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a direct-debit transaction callback.
-
#verify_pre_transaction_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a pre-transaction callback (sent before the transaction record).
-
#verify_return_url_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a return-url callback (payer redirect).
-
#verify_transaction_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a transaction callback (sent to your callback_url).
Instance Method Details
#verify_direct_debit_authorization_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a direct-debit authorization callback.
NOTE: this payload MUST include application_type (the gateway signs it);
omitting it causes every genuine authorization callback to fail verification.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/bayarcash/callback_verifications.rb', line 40 def (callback_data, secret_key) payload = { "record_type" => cb(callback_data, "record_type"), "transaction_id" => cb(callback_data, "transaction_id"), "mandate_id" => cb(callback_data, "mandate_id"), "application_type" => cb(callback_data, "application_type"), "exchange_reference_number" => cb(callback_data, "exchange_reference_number"), "exchange_transaction_id" => cb(callback_data, "exchange_transaction_id"), "order_number" => cb(callback_data, "order_number"), "currency" => cb(callback_data, "currency"), "amount" => cb(callback_data, "amount"), "payer_name" => cb(callback_data, "payer_name"), "payer_email" => cb(callback_data, "payer_email"), "payer_bank_name" => cb(callback_data, "payer_bank_name"), "status" => cb(callback_data, "status"), "status_description" => cb(callback_data, "status_description"), "datetime" => cb(callback_data, "datetime") } verify_callback(callback_data, payload, secret_key) end |
#verify_direct_debit_bank_approval_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a direct-debit bank-approval callback.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/bayarcash/callback_verifications.rb', line 15 def verify_direct_debit_bank_approval_callback_data(callback_data, secret_key) payload = { "record_type" => cb(callback_data, "record_type"), "approval_date" => cb(callback_data, "approval_date"), "approval_status" => cb(callback_data, "approval_status"), "mandate_id" => cb(callback_data, "mandate_id"), "mandate_reference_number" => cb(callback_data, "mandate_reference_number"), "order_number" => cb(callback_data, "order_number"), "payer_bank_code_hashed" => cb(callback_data, "payer_bank_code_hashed"), "payer_bank_code" => cb(callback_data, "payer_bank_code"), "payer_bank_account_no" => cb(callback_data, "payer_bank_account_no"), "application_type" => cb(callback_data, "application_type") } verify_callback(callback_data, payload, secret_key) end |
#verify_direct_debit_transaction_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a direct-debit transaction callback.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/bayarcash/callback_verifications.rb', line 67 def verify_direct_debit_transaction_callback_data(callback_data, secret_key) payload = { "record_type" => cb(callback_data, "record_type"), "batch_number" => cb(callback_data, "batch_number"), "mandate_id" => cb(callback_data, "mandate_id"), "mandate_reference_number" => cb(callback_data, "mandate_reference_number"), "transaction_id" => cb(callback_data, "transaction_id"), "datetime" => cb(callback_data, "datetime"), "reference_number" => cb(callback_data, "reference_number"), "amount" => cb(callback_data, "amount"), "status" => cb(callback_data, "status"), "status_description" => cb(callback_data, "status_description"), "cycle" => cb(callback_data, "cycle") } verify_callback(callback_data, payload, secret_key) end |
#verify_pre_transaction_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a pre-transaction callback (sent before the transaction record).
136 137 138 139 140 141 142 143 144 |
# File 'lib/bayarcash/callback_verifications.rb', line 136 def verify_pre_transaction_callback_data(callback_data, secret_key) payload = { "record_type" => cb(callback_data, "record_type"), "exchange_reference_number" => cb(callback_data, "exchange_reference_number"), "order_number" => cb(callback_data, "order_number") } verify_callback(callback_data, payload, secret_key) end |
#verify_return_url_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a return-url callback (payer redirect).
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/bayarcash/callback_verifications.rb', line 115 def verify_return_url_callback_data(callback_data, secret_key) payload = { "transaction_id" => cb(callback_data, "transaction_id"), "exchange_reference_number" => cb(callback_data, "exchange_reference_number"), "exchange_transaction_id" => cb(callback_data, "exchange_transaction_id"), "order_number" => cb(callback_data, "order_number"), "currency" => cb(callback_data, "currency"), "amount" => cb(callback_data, "amount"), "payer_bank_name" => cb(callback_data, "payer_bank_name"), "status" => cb(callback_data, "status"), "status_description" => cb(callback_data, "status_description") } verify_callback(callback_data, payload, secret_key) end |
#verify_transaction_callback_data(callback_data, secret_key) ⇒ Boolean
Verify a transaction callback (sent to your callback_url).
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/bayarcash/callback_verifications.rb', line 90 def verify_transaction_callback_data(callback_data, secret_key) payload = { "record_type" => cb(callback_data, "record_type"), "transaction_id" => cb(callback_data, "transaction_id"), "exchange_reference_number" => cb(callback_data, "exchange_reference_number"), "exchange_transaction_id" => cb(callback_data, "exchange_transaction_id"), "order_number" => cb(callback_data, "order_number"), "currency" => cb(callback_data, "currency"), "amount" => cb(callback_data, "amount"), "payer_name" => cb(callback_data, "payer_name"), "payer_email" => cb(callback_data, "payer_email"), "payer_bank_name" => cb(callback_data, "payer_bank_name"), "status" => cb(callback_data, "status"), "status_description" => cb(callback_data, "status_description"), "datetime" => cb(callback_data, "datetime") } verify_callback(callback_data, payload, secret_key) end |