module Cmbpay::Sign

Constants

CMBPAY_RSA_PUBLIC_KEY

Public Class Methods

generate(params, options={}) click to toggle source
# 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) click to toggle source
# File lib/cmbpay/sign.rb, line 35
def self.params_to_string(params)
  params.sort.map { |item| item.join('=') }.join('&')
end
verify?(params, options = {}) click to toggle source
# 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