class BraspagRest::Sale

Attributes

errors[R]

Public Class Methods

find(request_id, payment_id) click to toggle source
# File lib/braspag-rest/sale.rb, line 15
def self.find(request_id, payment_id)
  response = BraspagRest::Request.get_sale(request_id, payment_id)

  new(response.parsed_body.merge('RequestId' => request_id))
end
find_by_order_id(request_id, order_id) click to toggle source
# File lib/braspag-rest/sale.rb, line 21
def self.find_by_order_id(request_id, order_id)
  response = BraspagRest::Request.get_sales_for_merchant_order_id(request_id, order_id)
  payments = response.parsed_body['Payments']

  Array(payments).map { |payment| BraspagRest::Sale.find(request_id, payment['PaymentId']) }
end

Public Instance Methods

cancel(amount = nil) click to toggle source
# File lib/braspag-rest/sale.rb, line 40
def cancel(amount = nil)
  response = BraspagRest::Request.void(request_id, payment.id, amount)

  if response.success?
    reload
  else
    initialize_errors(response.parsed_body)
  end

  response.success?
end
capture(amount = nil) click to toggle source
# File lib/braspag-rest/sale.rb, line 52
def capture(amount = nil)
  response = BraspagRest::Request.capture(request_id, payment.id, (amount || payment.amount))

  if response.success?
    self.payment.initialize_attributes(response.parsed_body)
  else
    initialize_errors(response.parsed_body) and return false
  end

  payment.captured?
end
reload() click to toggle source
# File lib/braspag-rest/sale.rb, line 64
def reload
  if !request_id.nil? && payment && !payment.id.nil?
    reloaded_reference = self.class.find(request_id, payment.id)
    self.initialize_attributes(reloaded_reference.inverse_attributes)
  end

  self
end
save() click to toggle source
# File lib/braspag-rest/sale.rb, line 28
def save
  response = BraspagRest::Request.authorize(request_id, inverse_attributes)

  if response.success?
    initialize_attributes(response.parsed_body)
  else
    initialize_errors(response.parsed_body) and return false
  end

  true
end

Private Instance Methods

initialize_errors(errors) click to toggle source
# File lib/braspag-rest/sale.rb, line 75
def initialize_errors(errors)
  @errors = errors.map { |error| { code: error['Code'], message: error['Message'] } }
end