class OffsitePayments::Integrations::Quickpay::Notification

Constants

MD5_CHECK_FIELDS

Public Instance Methods

acknowledge(authcode = nil) click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 199
def acknowledge(authcode = nil)
  generate_md5check == params['md5check']
end
complete?() click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 104
def complete?
  status == '000'
end
currency() click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 135
def currency
  params['currency']
end
generate_md5check() click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 195
def generate_md5check
  Digest::MD5.hexdigest(generate_md5string)
end
generate_md5string() click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 191
def generate_md5string
  MD5_CHECK_FIELDS.map { |key| params[key.to_s] } * "" + @options[:credential2].to_s
end
gross() click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 123
def gross
  "%.2f" % (gross_cents / 100.0)
end
gross_cents() click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 127
def gross_cents
  params['amount'].to_i
end
item_id() click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 108
def item_id
  params['ordernumber']
end
parse(post) click to toggle source

Take the posted data and move the relevant data into a hash

Calls superclass method OffsitePayments::Notification#parse
# File lib/offsite_payments/integrations/quickpay.rb, line 204
def parse(post)
  # 30 + 12
  #------------------------------8a827a0e6829
  #Content-Disposition: form-data; name="msgtype"
  #
  #subscribe
  #------------------------------8a827a0e6829
  #Content-Disposition: form-data; name="ordernumber"
  #
  #BILP94406

  if post =~ /-{20,40}\w{6,24}/
    @raw = post.to_s
    post.split(/-{20,40}\w{6,24}[\n\r]*/m).each do |part|
      part.scan(/([^\n\r]+)[\n\r]+([^\n\r]*)/m) do |header, value|
        if header.match(/name=["'](.*)["']/)
          params[$1] = value.strip
        end
      end
    end
  else
    super
  end
end
received_at() click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 116
def received_at
  time = params['time']
  # If time only contains 12 integers then it's pre v5 format
  time = "20#{params['time']}" if /[0-9]{12}/.match(params['time'])
  Time.parse(time)
end
status() click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 131
def status
  params['qpstat']
end
transaction_id() click to toggle source
# File lib/offsite_payments/integrations/quickpay.rb, line 112
def transaction_id
  params['transaction']
end