Module: Cmbpay::Sign

Defined in:
lib/cmbpay/sign.rb

Constant Summary collapse

CMBPAY_RSA_PUBLIC_KEY =
"-----BEGIN PUBLIC KEY-----\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDZs4l8Ez3F4MG0kF7RRSL+pn8M\nmxVE3nfdXzjx6d3rH8IfDbNvNRLS0X0b5iJnPyFO8sbbUo1Im4zX0M8XA0xnnviG\nyn5E6occiyUXJRgokphWb5BwaYdVhnLldctdimHoJTk3NFEQFav3guygR54i3tym\nrDc8lWtuG8EczVu8FwIDAQAB\n-----END PUBLIC KEY-----\n"

Class Method Summary collapse

Class Method Details

.generate(params, options = {}) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/cmbpay/sign.rb', line 5

def self.generate(params, options={})
  key = options.delete(:key)

  query = params.sort.map do |k, v|
    "#{k}=#{v}"
  end.compact.join('&')
  p query
  Digest::SHA256.hexdigest("#{query}&#{key || Cmbpay.key}")
end

.params_to_string(params) ⇒ Object



35
36
37
# File 'lib/cmbpay/sign.rb', line 35

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

.verify?(params, options = {}) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
27
28
29
30
31
32
33
# File 'lib/cmbpay/sign.rb', line 24

def self.verify?(params, options = {})
  params = Utils.stringify_keys(params)

  sign_type = params.delete('sign_type')
  sign = params.delete('sign')
  string = params_to_string(params['noticeData'])
  public_key = options['public_key'] || CMBPAY_RSA_PUBLIC_KEY

  RSA.verify?(public_key, string, sign)
end