class QiwiPay::Signature
Qiwi payment signature calculator
Public Class Methods
new(params, secret)
click to toggle source
@param params [Hash] request parameters @param secret [String] secret key for signature
# File lib/qiwi-pay/signature.rb, line 10 def initialize(params, secret) @params = params.dup.tap do |hs| hs.delete :sign hs.delete 'sign' end @secret = secret.to_s end
Public Instance Methods
sign()
click to toggle source
Calculates signature @return [String] params signature
# File lib/qiwi-pay/signature.rb, line 20 def sign digest = OpenSSL::Digest.new('sha256') OpenSSL::HMAC.hexdigest(digest, @secret, build_params_string) end
Private Instance Methods
build_params_string()
click to toggle source
# File lib/qiwi-pay/signature.rb, line 27 def build_params_string map_sorted(@params) { |_k, v| v }.reject(&:nil?) .map(&:to_s) .reject(&:empty?) .join('|') end
map_sorted(hash) { |k, hash| ... }
click to toggle source
Maps hash yielding key-value pairs ordered by key
# File lib/qiwi-pay/signature.rb, line 35 def map_sorted(hash) hash.keys .sort_by(&:to_sym) .map { |k| yield k, hash[k] } end