Class: AdyenHppHmacCalculator

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

Overview

Calculates merchant signature for Adyen payment serivce (www.adyen.com). It is based on documentation from: docs.adyen.com/pages/viewpage.action?pageId=5376964

Examples:

Calculating merchant signature using AdyenHppHmacCalculator::calculate:

hmac_key = "4468D9782DEF54FCD706C9100C71EC43932B1EBC2ACF6BA0560C05AAA7550C48"
params = { 
  "merchantAccount"   => "TestMerchant",
  "currencyCode"      => "EUR",
  "paymentAmount"     => "199",
  "sessionValidity"   => "2015-06-25T10:31:06Z",
  "shipBeforeDate"    => "2015-07-01",
  "shopperLocale"     => "en_GB",
  "merchantReference" => "SKINTEST-1435226439255",
  "skinCode"          => "X7hsNDWp"
}
AdyenHppHmacCalculator.calculate(hamc_key, params) #=> "GJ1asjR5VmkvihDJxCd8yE2DGYOKwWwJCBiV3R51NFg="

Defined Under Namespace

Modules: MerchantStringGenerator Classes: HmacCalculator

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hmac_key) ⇒ AdyenHppHmacCalculator

Returns a new instance of AdyenHppHmacCalculator.



21
22
23
# File 'lib/adyen_hpp_hmac_calculator.rb', line 21

def initialize hmac_key
  @hmac_key = hmac_key.clone.freeze
end

Class Method Details

.calculate(hmac_key, params) ⇒ String

Calculates merchant signatre for specified hmac key and params docs.adyen.com/pages/viewpage.action?pageId=5376964

Parameters:

  • hmac_key (String)

    key for HMAC algorithm

  • params (Hash)

    key/value pairs to calculate merchant signature

Returns:

  • (String)

    HMAC SHA-256 Base64 signature encoded



41
42
43
# File 'lib/adyen_hpp_hmac_calculator.rb', line 41

def self.calculate hmac_key, params
  self.new(hmac_key).calculate params
end

Instance Method Details

#calculate(params) ⇒ String

Calculates merchant signature for specified params using hmac key specified on initialization

Parameters:

  • params (Hash)

    key/value pairs to calculate merchant signature

Returns:

  • (String)

    HMAC SHA-256 Base64 signature encoded



29
30
31
32
33
# File 'lib/adyen_hpp_hmac_calculator.rb', line 29

def calculate params
  merchant_string = generate_merchant_string params
  hmac = hmac_calculator.calculate merchant_string
  base64_encode hmac
end