class PagseguroClient::Transaction

Constants

PAYMENT_METHOD
SHIPPING_TYPE
STATUS

Attributes

address[RW]
code[RW]
last_event_date[RW]
order_id[RW]
payment_method[RW]
sender[RW]
shipping[RW]
status[RW]

Public Class Methods

create_by_xml(xml) click to toggle source
# File lib/pagseguro_client/transaction.rb, line 34
def self.create_by_xml(xml)
  doc = Nokogiri::XML(xml)
  code = doc.xpath("//transaction/code").text
  order_id = doc.xpath("//reference").text
  status = doc.xpath("//status").text.to_i
  payment_method = doc.xpath("//paymentMethod/type").text.to_i
  last_event_date = doc.xpath("//transaction/lastEventDate").text
  email = doc.xpath("//transaction/sender/email").text
  name = doc.xpath("//transaction/sender/name").text
  phone = {
    area_code: doc.xpath("//transaction/sender/phone/areaCode").text,
    number: doc.xpath("//transaction/sender/phone/number").text
  }

  address = {
    country: doc.xpath("//transaction/shipping/address/country").text,
    state: doc.xpath("//transaction/shipping/address/state").text,
    city: doc.xpath("//transaction/shipping/address/city").text,
    postal_code: doc.xpath("//transaction/shipping/address/postalCode").text,
    district: doc.xpath("//transaction/shipping/address/district").text,
    street: doc.xpath("//transaction/shipping/address/street").text,
    number: doc.xpath("//transaction/shipping/address/number").text,
    complement: doc.xpath("//transaction/shipping/address/complement").text
  }

  shipping = {
    type: SHIPPING_TYPE[doc.xpath("//transaction/shipping/type").text.to_i],
    cost: doc.xpath("//transaction/shipping/cost").text.to_f
  }

  transaction = Transaction.new(
    code: code,
    order_id: order_id,
    status: STATUS[status],
    payment_method: PAYMENT_METHOD[payment_method],
    sender: {
      name: name,
      email: email,
      phone: phone
    },
    address: address,
    last_event_date: last_event_date,
    shipping: shipping
  )
end
new(attributes = {}) click to toggle source
# File lib/pagseguro_client/transaction.rb, line 28
def initialize(attributes = {})
  attributes.each do |name, value|
    send("#{name}=", value)
  end
end
retrieve(code) click to toggle source
# File lib/pagseguro_client/transaction.rb, line 84
def self.retrieve(code)
  response = RestClient.get(url(code),
    {
      params: {
        email: PagseguroClient.email,
        token: PagseguroClient.token
      }
    }
  )

  create_by_xml(response.body)
end
url(code) click to toggle source
# File lib/pagseguro_client/transaction.rb, line 80
def self.url(code)
  PagseguroClient.transaction_url(code)
end