class GpWebpay::Verification
Public Class Methods
new(payment_attributes, verification_attrs = nil)
click to toggle source
# File lib/gp_webpay/verification.rb, line 5 def initialize(payment_attributes, verification_attrs = nil) @payment_attributes = payment_attributes GpWebpay.logger.info "Payment Attrs: #{@payment_attributes}" @verification_attrs = verification_attrs GpWebpay.logger.info "Verification Attrs: #{@verification_attrs}" if @verification_attrs end
Public Instance Methods
digest()
click to toggle source
# File lib/gp_webpay/verification.rb, line 21 def digest sign = merchant_key.sign(OpenSSL::Digest::SHA1.new, digest_text) Base64.encode64(sign).gsub("\n", "") end
payment_attributes_with_digest()
click to toggle source
# File lib/gp_webpay/verification.rb, line 17 def payment_attributes_with_digest PaymentAttributes.map_to_keys(@payment_attributes).merge("DIGEST" => digest) end
verified_response?(params)
click to toggle source
# File lib/gp_webpay/verification.rb, line 12 def verified_response?(params) verify_digest(params["DIGEST"], digest_verification(params)) && verify_digest(params["DIGEST1"], digest1_verification(params)) end
Private Instance Methods
config()
click to toggle source
# File lib/gp_webpay/verification.rb, line 28 def config GpWebpay.config end
digest1_verification(params)
click to toggle source
# File lib/gp_webpay/verification.rb, line 40 def digest1_verification(params) digest_verification(params) + "|#{config.merchant_number}" end
digest_text()
click to toggle source
# File lib/gp_webpay/verification.rb, line 32 def digest_text @payment_attributes.values.join("|") end
digest_verification(params)
click to toggle source
# File lib/gp_webpay/verification.rb, line 36 def digest_verification(params) @verification_attrs.map { |key| params[key] }.join("|") end
gpe_key()
click to toggle source
# File lib/gp_webpay/verification.rb, line 55 def gpe_key @gpe_key ||= begin pem = File.read config.gpe_pem_path OpenSSL::X509::Certificate.new(pem).public_key end end
merchant_key()
click to toggle source
# File lib/gp_webpay/verification.rb, line 48 def merchant_key @merchant_key ||= begin pem = config.merchant_pem || File.read(config.merchant_pem_path) OpenSSL::PKey::RSA.new(pem, config.merchant_password) end end
verify_digest(signature, data)
click to toggle source
# File lib/gp_webpay/verification.rb, line 44 def verify_digest(signature, data) gpe_key.verify(OpenSSL::Digest::SHA1.new, Base64.decode64(signature), data) end