Sha256: be6251e510c9e3544fb858f2ede0f728c47e02af63700aca2e50b6ad219d5999

Contents?: true

Size: 1.91 KB

Versions: 76

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.local(*params['time'].scan(/../))
          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

76 entries across 76 versions & 21 rubygems

Version Path
johnideal-activemerchant-1.4.10 lib/active_merchant/billing/integrations/quickpay/notification.rb
johnideal-activemerchant-1.4.11 lib/active_merchant/billing/integrations/quickpay/notification.rb
johnideal-activemerchant-1.4.4 lib/active_merchant/billing/integrations/quickpay/notification.rb
johnideal-activemerchant-1.4.5 lib/active_merchant/billing/integrations/quickpay/notification.rb
johnideal-activemerchant-1.4.6 lib/active_merchant/billing/integrations/quickpay/notification.rb
johnideal-activemerchant-1.4.7 lib/active_merchant/billing/integrations/quickpay/notification.rb
johnideal-activemerchant-1.4.8 lib/active_merchant/billing/integrations/quickpay/notification.rb
mattbauer-activemerchant-1.4.2 lib/active_merchant/billing/integrations/quickpay/notification.rb
tomriley-active_merchant-1.4.2.3 lib/active_merchant/billing/integrations/quickpay/notification.rb
tomriley-active_merchant-1.4.2.4 lib/active_merchant/billing/integrations/quickpay/notification.rb
tomriley-active_merchant-1.4.2.5 lib/active_merchant/billing/integrations/quickpay/notification.rb
tomriley-active_merchant-1.4.2.6 lib/active_merchant/billing/integrations/quickpay/notification.rb
tomriley-active_merchant-1.4.2.7 lib/active_merchant/billing/integrations/quickpay/notification.rb
tomriley-active_merchant-1.4.2.8 lib/active_merchant/billing/integrations/quickpay/notification.rb
tomriley-tomriley-active_merchant-1.4.2.4 lib/active_merchant/billing/integrations/quickpay/notification.rb
goldstar-activemerchant-1.4.2.7 lib/active_merchant/billing/integrations/quickpay/notification.rb
activemerchant-abn-ideal-1.7.0c lib/active_merchant/billing/integrations/quickpay/notification.rb
activemerchant-abn-ideal-1.7.0b lib/active_merchant/billing/integrations/quickpay/notification.rb
goldstar-activemerchant-1.4.2.6 lib/active_merchant/billing/integrations/quickpay/notification.rb
johnreitano-activemerchant-1.5.11 lib/active_merchant/billing/integrations/quickpay/notification.rb