Sha256: 1e13fbee36f65444501d24b0e7854968060a8a51ac14180ac6b977e36e2b7bcd

Contents?: true

Size: 1.11 KB

Versions: 3

Compression:

Stored size: 1.11 KB

Contents

require 'digest/md5'

module Payanyway
  module Helpers
    class SignatureGenerate
      BASE_KEYS = %w(
        MNT_TRANSACTION_ID
        MNT_OPERATION_ID
        MNT_AMOUNT
        MNT_CURRENCY_CODE
        MNT_SUBSCRIBER_ID
        MNT_TEST_MODE
      )

      KEYS = {
        pay: BASE_KEYS,
        url: BASE_KEYS - [ 'MNT_OPERATION_ID' ],
        check: [ 'MNT_COMMAND' ] + BASE_KEYS,
        check_response:  %w(MNT_RESULT_CODE MNT_ID MNT_TRANSACTION_ID)
      }

      KEYS.each do |key_name, keys|
        define_singleton_method("for_#{ key_name }") do |params|
          generate_by(params, keys)
        end
      end

      class << self
        private

        def generate_by(params, keys)
          values = keys.map { |key| get_value(params, key) }.join

          md5(Payanyway::Gateway.config['moneta_id'].to_s + values + Payanyway::Gateway.config['token'])
        end

        def get_value(params, key)
          (key == 'MNT_AMOUNT' && params[key].present?) ? '%.2f' % params[key] : params[key]
        end

        def md5(str)
          Digest::MD5.hexdigest(str).downcase
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
payanyway-1.2.2 lib/payanyway/helpers/signature_generator.rb
payanyway-1.2.1 lib/payanyway/helpers/signature_generator.rb
payanyway-1.2.0 lib/payanyway/helpers/signature_generator.rb