Class: WirecardCheckoutPage::ResponseChecksum
- Inherits:
-
Object
- Object
- WirecardCheckoutPage::ResponseChecksum
- Includes:
- Utils, ValueHandling
- Defined in:
- lib/wirecard_checkout_page/response_checksum.rb
Instance Attribute Summary collapse
-
#computed_fingerprint ⇒ Object
readonly
Returns the value of attribute computed_fingerprint.
-
#expected_fingerprint ⇒ Object
readonly
Returns the value of attribute expected_fingerprint.
-
#values ⇒ Object
readonly
Returns the value of attribute values.
Instance Method Summary collapse
- #fingerprint ⇒ Object
-
#initialize(values = {}) ⇒ ResponseChecksum
constructor
A new instance of ResponseChecksum.
- #valid? ⇒ Boolean
Methods included from ValueHandling
#add_missing_key, #missing_keys, #missing_keys?, #reset_missing_keys
Methods included from Utils
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_fingerprint ⇒ Object (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_fingerprint ⇒ Object (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 |
#values ⇒ Object (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
#fingerprint ⇒ Object
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
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 |