class OffsitePayments::Integrations::Latipay::QueryInterface

Public Class Methods

url(merchant_reference) click to toggle source
# File lib/offsite_payments/integrations/latipay.rb, line 115
def self.url(merchant_reference)
  "#{base_url}/transaction/#{CGI.escape(merchant_reference)}"
end

Public Instance Methods

call(merchant_reference) click to toggle source
# File lib/offsite_payments/integrations/latipay.rb, line 119
def call(merchant_reference)
  options = { user_id: @user_id }
  signature = self.sign(options.merge({ merchant_reference: merchant_reference }))
  options[:signature] = signature

  raise ArgumentError, "Merchant reference must be specified" if merchant_reference.blank?
  url = "#{self.class.url(merchant_reference)}?#{options.to_query}"
  raw_response = ssl_get(url, standard_headers)
  parsed_response = parse_response(raw_response)
  validate_response(parsed_response)
  parsed_response
end
validate_response(parsed_response) click to toggle source
# File lib/offsite_payments/integrations/latipay.rb, line 132
def validate_response(parsed_response)
  raise QueryRequestError, parsed_response unless parsed_response['code'] == 0
  message = "#{parsed_response['merchant_reference']}#{parsed_response['payment_method']}#{parsed_response['status']}#{parsed_response['currency']}#{parsed_response['amount']}"
  signature = parsed_response['signature']
  raise StandardError, 'Invalid Signature in response' unless verify_signature(message, signature)
end