Class: PagSeguro::Query

Inherits:
Transaction show all
Defined in:
lib/pag_seguro/query.rb

Constant Summary

Constants inherited from Transaction

Transaction::PAGSEGURO_ADDITION_OF_FUNDS, Transaction::PAGSEGURO_APPROVED, Transaction::PAGSEGURO_AVAILABLE, Transaction::PAGSEGURO_BONUS, Transaction::PAGSEGURO_CANCELLED, Transaction::PAGSEGURO_CHARGE, Transaction::PAGSEGURO_DISPUTED, Transaction::PAGSEGURO_IN_ANALYSIS, Transaction::PAGSEGURO_PAYMENT, Transaction::PAGSEGURO_PROCESSING, Transaction::PAGSEGURO_RETURNED, Transaction::PAGSEGURO_TRANSFER

Instance Attribute Summary

Attributes inherited from Transaction

#data

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Transaction

#addition_of_funds?, #approved?, #available?, #bonus?, #cancelled?, #charge?, #date, #discount_amount, #disputed?, #extra_amount, #fee_amount, #gross_amount, #id, #in_analysis?, #installment_count, #item_count, #items, #net_amount, #payment?, #payment_method, #processing?, #returned?, #sender, #shipping, #status, status_for, #transaction_id, transactions_url, #transfer?, #type

Constructor Details

#initialize(email, token, transaction_code) ⇒ Query

Returns a new instance of Query.



4
5
6
7
8
9
# File 'lib/pag_seguro/query.rb', line 4

def initialize(email, token, transaction_code)
  raise "Needs a transaction code" if transaction_code.blank?
  raise "Needs an email" if email.blank?
  raise "Needs a token" if token.blank?
  @data = transaction_data(email, token, transaction_code)
end

Class Method Details

.find(email, token, options = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
# File 'lib/pag_seguro/query.rb', line 11

def self.find(email, token, options={})
  url = Transaction.transactions_url
  url += "/abandoned" if options[:abandoned]

  transactions_data = Nokogiri::XML(RestClient.get url, params: search_params(email, token, options))
  transactions_data.css("transaction").map do |transaction_xml|
    Transaction.new(transaction_xml)
  end
end

.parse_dates(options = {}) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/pag_seguro/query.rb', line 29

def self.parse_dates(options={})
  initial_date = (options[:initial_date] || Time.now - 1.day).to_time
  final_date   = (options[:final_date] || initial_date + 1.day).to_time

  raise "Invalid initial date. Must be bigger than 6 months ago" if initial_date < 6.months.ago
  raise "Invalid end date. Must be less than today" if final_date > Date.today.end_of_day
  raise "Invalid end date. Must be bigger than initial date" if final_date < initial_date
  raise "Invalid end date. Must not differ from initial date in more than 30 days" if (final_date.to_date - initial_date.to_date) > 30

  return initial_date.to_time.iso8601, final_date.to_time.iso8601
end

.search_params(email, token, options = {}) ⇒ Object



21
22
23
24
25
26
27
# File 'lib/pag_seguro/query.rb', line 21

def self.search_params(email, token, options={})
  params = {email: email, token: token}
  params[:initialDate], params[:finalDate] = parse_dates(options)
  params[:page] = options[:page] if options[:page]
  params[:maxPageResults] = options[:max_page_results] if options[:max_page_results]
  params
end