Module: Qpay

Defined in:
lib/qpay.rb,
lib/qpay/sign.rb,
lib/qpay/client.rb,
lib/qpay/config.rb,
lib/qpay/version.rb

Defined Under Namespace

Classes: Client, Config

Constant Summary collapse

VERSION =
'1.6.0'

Class Method Summary collapse

Class Method Details

.params_with_sign(params, config) ⇒ Object



21
22
23
24
# File 'lib/qpay/sign.rb', line 21

def params_with_sign(params, config)
  params_dup = preprocess_params(params)
  params_dup.merge('sign' => Qpay.sign(params, config))
end

.sign(params, config) ⇒ Object



3
4
5
# File 'lib/qpay/sign.rb', line 3

def sign(params, config)
  Digest::MD5.hexdigest(string_params_without_sign(params, config)).upcase
end

.sign_app(params, config) ⇒ Object



8
9
10
11
12
13
14
# File 'lib/qpay/sign.rb', line 8

def sign_app(params, config)
  key = "#{config.app_key}&"
  data = preprocess_params(params, keep_blank: true).sort_by { |k, _| k }.map { |x| x.join('=') }.join('&')
  digest = OpenSSL::Digest.new('sha1')
  hmac = OpenSSL::HMAC.digest(digest, key, data)
  Base64.encode64(hmac).strip
end

.string_params_without_sign(params, config) ⇒ Object



16
17
18
19
# File 'lib/qpay/sign.rb', line 16

def string_params_without_sign(params, config)
  sorted_params = preprocess_params(params).sort_by { |k, _| k }
  (sorted_params << ['key', config.api_key]).map { |x| x.join('=') }.join('&')
end