Class: WirecardCheckoutPage::ResponseChecksum

Inherits:
Object
  • Object
show all
Includes:
Utils, ValueHandling
Defined in:
lib/wirecard_checkout_page/response_checksum.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from ValueHandling

#add_missing_key, #missing_keys, #missing_keys?, #reset_missing_keys

Methods included from Utils

#stringify_keys

Constructor Details

#initialize(values = {}) ⇒ ResponseChecksum

Returns a new instance of ResponseChecksum.



10
11
12
13
14
15
16
17
18
19
20
# File 'lib/wirecard_checkout_page/response_checksum.rb', line 10

def initialize(values = {})
  @values = stringify_keys(values)
  @secret = @values.delete('secret') or
    raise WirecardCheckoutPage::ValueMissing, 'value "secret" is missing'
  # This rails form value is escaped as an html entity by
  # WirecardCheckoutPage, so set it back to the original UTF-8 here if it
  # exists:
  @values['utf8'] and @values['utf8'] = ''
  @values.freeze
  reset_missing_keys
end

Instance Attribute Details

#computed_fingerprintObject (readonly)

Returns the value of attribute computed_fingerprint.



26
27
28
# File 'lib/wirecard_checkout_page/response_checksum.rb', line 26

def computed_fingerprint
  @computed_fingerprint
end

#expected_fingerprintObject (readonly)

Returns the value of attribute expected_fingerprint.



24
25
26
# File 'lib/wirecard_checkout_page/response_checksum.rb', line 24

def expected_fingerprint
  @expected_fingerprint
end

#valuesObject (readonly)

Returns the value of attribute values.



22
23
24
# File 'lib/wirecard_checkout_page/response_checksum.rb', line 22

def values
  @values
end

Instance Method Details

#fingerprintObject



28
29
30
31
32
33
34
# File 'lib/wirecard_checkout_page/response_checksum.rb', line 28

def fingerprint
  values = @values.dup
  values['secret'] ||= @secret
  if seed = responseFingerprintSeed(responseFingerprintOrder(values), values)
    Digest::MD5.hexdigest seed
  end
end

#valid?Boolean

Returns:

  • (Boolean)


36
37
38
39
40
41
42
43
# File 'lib/wirecard_checkout_page/response_checksum.rb', line 36

def valid?
  reset_missing_keys
  @expected_fingerprint = values.fetch('responseFingerprint') do |k|
    add_missing_key k
  end
  @computed_fingerprint = fingerprint
  !missing_keys? && computed_fingerprint == @expected_fingerprint
end