Class: Multicard::Signature

Inherits:
Object
  • Object
show all
Defined in:
lib/multicard/signature.rb

Class Method Summary collapse

Class Method Details

.verify(params, secret:) ⇒ Boolean

Verify a webhook callback signature.

Parameters:

  • params (Hash)

    webhook parameters (:store_id, :invoice_id, :amount, :sign)

  • secret (String)

    application secret

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
20
21
22
# File 'lib/multicard/signature.rb', line 12

def self.verify(params, secret:)
  store_id = params[:store_id].to_s
  invoice_id = params[:invoice_id].to_s
  amount = normalize_amount(params[:amount].to_s)
  sign = params[:sign].to_s

  return false if sign.empty?

  expected = Digest::MD5.hexdigest("#{store_id}#{invoice_id}#{amount}#{secret}")
  secure_compare(expected.downcase, sign.downcase)
end