Sha256: ce3e4028b4e106aa85e0e1559d1095734be54b2ef8316aab14d6d7b3922986eb

Contents?: true

Size: 1.91 KB

Versions: 10

Compression:

Stored size: 1.91 KB

Contents

require 'net/http'

module ActiveMerchant #:nodoc:
  module Billing #:nodoc:
    module Integrations #:nodoc:
      module Quickpay
        class Notification < ActiveMerchant::Billing::Integrations::Notification
          def complete?
            status == '000'
          end 

          def item_id
            params['ordernumber']
          end

          def transaction_id
            params['transaction']
          end

          def received_at
            Time.parse("20#{params['time']}")
          end

          def gross
            "%.2f" % (gross_cents / 100.0)
          end

          def gross_cents
            params['amount'].to_i
          end

          def test?
            params['testmode'] == 'Yes'
          end

          def status
            params['qpstat']
          end

          def currency
            params['currency']
          end
          
          # Provide access to raw fields from quickpay
          %w(msgtype ordernumber state chstat chstatmsg qpstat qpstatmsg merchant merchantemail cardtype cardnumber).each do |attr|
            define_method(attr) do
              params[attr]
            end
          end

          MD5_CHECK_FIELDS = [
            :msgtype, :ordernumber, :amount, :currency, :time, :state,
            :chstat, :chstatmsg, :qpstat, :qpstatmsg, :merchant, :merchantemail,
            :transaction, :cardtype, :cardnumber, :testmode
          ]

          def generate_md5string
            MD5_CHECK_FIELDS.map { |key| params[key.to_s] } * "" + @options[:md5secret]
          end
          
          def generate_md5check
            Digest::MD5.hexdigest(generate_md5string)
          end
          
          # Quickpay doesn't do acknowledgements of callback notifications
          # Instead it uses and MD5 hash of all parameters
          def acknowledge      
            generate_md5check == params['md5check']
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 3 rubygems

Version Path
activemerchant-1.12.1 lib/active_merchant/billing/integrations/quickpay/notification.rb
activemerchant-1.12.0 lib/active_merchant/billing/integrations/quickpay/notification.rb
activemerchant-1.11.0 lib/active_merchant/billing/integrations/quickpay/notification.rb
activemerchant-1.10.0 lib/active_merchant/billing/integrations/quickpay/notification.rb
activemerchant-1.9.4 lib/active_merchant/billing/integrations/quickpay/notification.rb
activemerchant-1.9.3 lib/active_merchant/billing/integrations/quickpay/notification.rb
activemerchant-1.9.2 lib/active_merchant/billing/integrations/quickpay/notification.rb
n8_activemerchant-1.9.3 lib/active_merchant/billing/integrations/quickpay/notification.rb
maedana-activemerchant-1.9.1.1 lib/active_merchant/billing/integrations/quickpay/notification.rb
activemerchant-1.9.1 lib/active_merchant/billing/integrations/quickpay/notification.rb