Module: MandarinPay::SignatureGenerator
- Included in:
- Notification, PaymentInterface
- Defined in:
- lib/mandarin_pay/signature_generator.rb
Instance Method Summary collapse
- #custom_params ⇒ Object
- #generate_signature_for(kind, extra_params = {}) ⇒ Object
- #params_string(kind, extra_params) ⇒ Object
Instance Method Details
#custom_params ⇒ Object
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 |