Sha256: 5d3abfba5e657d5bfe187906b486b06ce06aebc4ef63ed2051908b6ead79e0ca
Contents?: true
Size: 1.52 KB
Versions: 2
Compression:
Stored size: 1.52 KB
Contents
module Monri class ValidateCallback # @return [Monri::Config] attr_accessor :config # @param [String] header # @param [String] body # @param [Hash] options # @return [Hash{Symbol->String | TrueClass | FalseClass}] def validate(header, body, options = {}) unless header.is_a?(String) raise Monri::Errors::InvalidArgumentsError.new('First parameter - authorization header, should be a String') end unless body.is_a?(String) raise Monri::Errors::InvalidArgumentsError.new('Second parameter - body, should be a String') end unless options.is_a?(Hash) raise Monri::Errors::InvalidArgumentsError.new('Third parameter - options, should be a Hash') end version = options.delete(:version) || '2' if version == 'v2' expected_digest = Digest::SHA512.hexdigest("#{config.merchant_key}#{body}") elsif version == '1' unless options.has_key?(:order_number) raise Monri::Errors::InvalidArgumentsError.new('For version=1 provide order-number') end order_number = options.delete(:order_number) expected_digest = Digest::SHA1.hexdigest("#{config.merchant_key}#{order_number}") else raise Monri::Errors::InvalidArgumentsError.new("Version option, value='#{version}' is not supported") end expected_header = "WP3-callback #{expected_digest}" { header: header, expected_header: expected_header, valid: header == expected_header } end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
monri-0.3.0 | lib/monri/validate_callback.rb |
monri-0.2.0 | lib/monri/validate_callback.rb |