Sha256: f2b1fc801024901aeb5a3ff9fcab4fb101d96e4fd9bef1a3f798b5bec5445698

Contents?: true

Size: 461 Bytes

Versions: 11

Compression:

Stored size: 461 Bytes

Contents

require 'digest/md5'

module WxPay
  module Sign
    def self.generate(params)
      key = params.delete(:key)

      query = params.sort.map do |k, v|
        "#{k}=#{v}" if v.to_s != ''
      end.compact.join('&')

      Digest::MD5.hexdigest("#{query}&key=#{key || WxPay.key}").upcase
    end

    def self.verify?(params)
      params = params.dup
      sign = params.delete('sign') || params.delete(:sign)

      generate(params) == sign
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
wx_pay-0.15.0 lib/wx_pay/sign.rb
wx_pay-0.14.2 lib/wx_pay/sign.rb
wx_pay-0.14.1 lib/wx_pay/sign.rb
wx_pay-0.14.0 lib/wx_pay/sign.rb
wx_pay-0.13.0 lib/wx_pay/sign.rb
wx_pay-0.12.0 lib/wx_pay/sign.rb
wx_pay-0.11.0 lib/wx_pay/sign.rb
wx_pay-0.10 lib/wx_pay/sign.rb
wx_pay-0.9.1 lib/wx_pay/sign.rb
wx_pay-0.9.0 lib/wx_pay/sign.rb
wx_pay-0.8.1 lib/wx_pay/sign.rb