Module: AlipayGlobal::Sign

Defined in:
lib/alipay_global/sign.rb,
lib/alipay_global/sign/dsa.rb,
lib/alipay_global/sign/md5.rb,
lib/alipay_global/sign/rsa.rb

Defined Under Namespace

Classes: DSA, MD5, RSA

Class Method Summary collapse

Class Method Details

.generate(params) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/alipay_global/sign.rb', line 5

def self.generate(params)
  params = Utils.stringify_keys(params)
  sign_type = AlipayGlobal.sign_type.upcase
  key = AlipayGlobal.api_secret_key
  string = params_to_string(params)

  case sign_type
  when 'MD5'
    MD5.sign(string, key)
  when 'RSA'
    RSA.sign(string)
  when 'DSA'
    DSA.sign(string, key)
  else
    raise ArgumentError, "invalid sign_type #{sign_type}, allow value: 'MD5', 'RSA', 'DSA'"
  end
end

.params_to_string(params) ⇒ Object



43
44
45
# File 'lib/alipay_global/sign.rb', line 43

def self.params_to_string(params)
  params.sort.map { |item| item.join('=') }.join('&')
end

.verify?(params) ⇒ Boolean

Returns:

  • (Boolean)


23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/alipay_global/sign.rb', line 23

def self.verify?(params)
  params = Utils.stringify_keys(params)

  sign_type = params.delete('sign_type')
  signature = params.delete('sign')
  string = params_to_string(params)

  case sign_type
  when 'MD5'
    key = AlipayGlobal.api_secret_key
    MD5.verify?(string, key, signature)
  when 'RSA'
    RSA.verify?(string, @alipay_rsa_public_key, signature)
  when 'DSA'
    DSA.verify?(string, signature)
  else
    false
  end
end