class AdyenHppHmacCalculator

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

@example 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="

Public Class Methods

calculate(hmac_key, params) click to toggle source

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

@param hmac_key [String] key for HMAC algorithm @param params [Hash] key/value pairs to calculate merchant signature @return [String] HMAC SHA-256 Base64 signature encoded

# File lib/adyen_hpp_hmac_calculator.rb, line 41
def self.calculate hmac_key, params
  self.new(hmac_key).calculate params
end
new(hmac_key) click to toggle source
# File lib/adyen_hpp_hmac_calculator.rb, line 21
def initialize hmac_key
  @hmac_key = hmac_key.clone.freeze
end

Public Instance Methods

calculate(params) click to toggle source

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

@param params [Hash] key/value pairs to calculate merchant signature @return [String] HMAC SHA-256 Base64 signature encoded

# 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

Private Instance Methods

base64_encode(string) click to toggle source
# File lib/adyen_hpp_hmac_calculator.rb, line 55
def base64_encode string
  Base64.strict_encode64 string
end
generate_merchant_string(params) click to toggle source
# File lib/adyen_hpp_hmac_calculator.rb, line 47
def generate_merchant_string params
  MerchantStringGenerator.generate params
end
hmac_calculator() click to toggle source
# File lib/adyen_hpp_hmac_calculator.rb, line 51
def hmac_calculator
  @hmac_calculator ||= HmacCalculator.new @hmac_key
end