Module: MandarinPay::SignatureGenerator

Included in:
Notification, PaymentInterface
Defined in:
lib/mandarin_pay/signature_generator.rb

Instance Method Summary collapse

Instance Method Details

#custom_paramsObject



19
20
21
22
23
24
# File 'lib/mandarin_pay/signature_generator.rb', line 19

def custom_params
  (@params[:params] || {}).sort.each_with_object([]) do |result, element|
    result << element.join("=")
    result
  end
end

#generate_signature_for(kind, extra_params = {}) ⇒ Object



3
4
5
6
7
8
# File 'lib/mandarin_pay/signature_generator.rb', line 3

def generate_signature_for(kind, extra_params = {})
  unless [:card_binding, :payment, :transaction].include? kind
    raise ArgumentError, "Available kinds are only :payment, :card_binding or :transaction"
  end
  Digest::SHA256.hexdigest(params_string(kind, extra_params))
end

#params_string(kind, extra_params) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/mandarin_pay/signature_generator.rb', line 10

def params_string(kind, extra_params)
  case kind
  when :payment
    Hash[conformity_params(extra_params).sort_by { |(key, _v)| key }].values.join("-") + "-" + MandarinPay.sharedsec
  else
    Hash[@params.except("sign").sort_by { |(key, _v)| key }].values.join("-") + "-" + MandarinPay.sharedsec
  end
end