Module: Alipay::App::Sign

Defined in:
lib/alipay/app/sign.rb

Constant Summary collapse

ALIPAY_RSA_PUBLIC_KEY =
<<-EOF
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDDI6d306Q8fIfCOaTXyiUeJHkr
IvYISRcc73s3vF1ZT7XN8RNPwJxo8pWaJMmvyTn9N4HQ632qJBVHf8sxHi/fEsra
prwCtzvzQETrNRwVxLO5jVmRGi60j8Ue1efIlzPXV9je9mkjzOmdssymZkh2QhUr
CmZYI/FCEa3/cNMW0QIDAQAB
-----END PUBLIC KEY-----
EOF

Class Method Summary collapse

Class Method Details

.params_to_encoded_string(params) ⇒ Object



34
35
36
# File 'lib/alipay/app/sign.rb', line 34

def self.params_to_encoded_string(params)
  params.sort.map { |key, value| %Q(#{key}=#{ERB::Util.url_encode(value.to_s)}) }.join('&')
end

.params_to_sorted_string(params) ⇒ Object



30
31
32
# File 'lib/alipay/app/sign.rb', line 30

def self.params_to_sorted_string(params)
  params.sort.map { |key, value| %Q(#{key}=#{value.to_s}) }.join('&')
end

.verify?(params) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/alipay/app/sign.rb', line 15

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

  sign_type = params.delete('sign_type')
  sign = params.delete('sign')
  string = ::Alipay::Sign.params_to_string(params)

  case sign_type
  when 'RSA'
    ::Alipay::Sign::RSA.verify?(ALIPAY_RSA_PUBLIC_KEY, string, sign)
  else
    false
  end
end