class PagSeguro::Payment::Serializer

Attributes

payment[R]

The payment request that will be serialized.

Public Class Methods

new(payment) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 7
def initialize(payment)
  @payment = payment
  @params = {}
end

Public Instance Methods

to_params() click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 12
def to_params
  params[:notificationURL] = payment.notification_url
  params[:currency] = payment.currency
  params[:paymentMethod] = payment.payment_method
  params[:paymentMode] = payment.payment_mode
  params[:reference] = payment.reference
  params[:extraAmount] = payment.extra_amount
  params[:noInterestInstallmentQuantity] = payment.max_installment_no_interest

  payment.items.each.with_index(1) do |item, index|
    serialize_item(item, index)
  end

  serialize_sender(payment.sender)
  serialize_bank(payment.bank)
  serialize_credit_card(payment.credit_card)
  serialize_shipping(payment.shipping)


  params[:receiverEmail] = payment.receiver_email if payment.receiver_email

  params.delete_if {|key, value| value.nil? }

  params
end

Private Instance Methods

params() click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 39
def params
  @params ||= {}
end
serialize_address(address) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 135
def serialize_address(address)
  return unless address

  params[:billingAddressCountry] = address.country
  params[:billingAddressState] = address.state
  params[:billingAddressCity] = address.city
  params[:billingAddressPostalCode] = address.postal_code
  params[:billingAddressDistrict] = address.district
  params[:billingAddressStreet] = address.street
  params[:billingAddressNumber] = address.number
  params[:billingAddressComplement] = address.complement
end
serialize_address_shipping(address) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 122
def serialize_address_shipping(address)
  return unless address

  params[:shippingAddressCountry] = address.country
  params[:shippingAddressState] = address.state
  params[:shippingAddressCity] = address.city
  params[:shippingAddressPostalCode] = address.postal_code
  params[:shippingAddressDistrict] = address.district
  params[:shippingAddressStreet] = address.street
  params[:shippingAddressNumber] = address.number
  params[:shippingAddressComplement] = address.complement
end
serialize_bank(bank) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 88
def serialize_bank(bank)
  return unless bank

  params[:bankName] = bank.name
end
serialize_credit_card(credit_card) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 94
def serialize_credit_card(credit_card)
  return unless credit_card

  params[:creditCardToken] = credit_card.token

  serialize_installment(credit_card.installment)
  serialize_holder(credit_card.holder)
  serialize_address(credit_card.billing_address)
end
serialize_document(document) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 72
def serialize_document(document)
  if document.cpf?
    params[:senderCPF] = document.value
  else
    params[:senderCNPJ] = document.value
  end
end
serialize_holder(holder) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 112
def serialize_holder(holder)
  return unless holder

  params[:creditCardHolderName] = holder.name
  params[:creditCardHolderCPF] = holder.document.value
  params[:creditCardHolderBirthDate] = holder.birthdate.strftime("%d/%m/%Y") if holder.birthdate
  params[:creditCardHolderAreaCode] = holder.phone.area_code
  params[:creditCardHolderPhone] = holder.phone.number
end
serialize_installment(installment) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 105
def serialize_installment(installment)
  return unless installment

  params[:installmentQuantity] = installment.quantity
  params[:installmentValue] = to_amount(installment.value)
end
serialize_item(item, index) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 52
def serialize_item(item, index)
  return unless item

  params["itemId#{index}".to_sym] = item.id
  params["itemDescription#{index}".to_sym] = item.description
  params["itemAmount#{index}".to_sym] = to_amount(item.amount)
  params["itemQuantity#{index}".to_sym] = item.quantity
end
serialize_phone(phone) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 80
def serialize_phone(phone)
  return unless phone

  params[:senderAreaCode] = phone.area_code
  params[:senderPhone] = phone.number
end
serialize_sender(sender) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 61
def serialize_sender(sender)
  return unless sender

  params[:senderName] = sender.name
  params[:senderEmail] =  sender.email
  params[:senderHash] =  sender.hash_id

  serialize_document(sender.document)
  serialize_phone(sender.phone)
end
serialize_shipping(shipping) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 43
def serialize_shipping(shipping)
  return unless shipping

  params[:shippingType] = shipping.type_id
  params[:shippingCost] = to_amount(shipping.cost)

  serialize_address_shipping(shipping.address)
end
to_amount(amount) click to toggle source
# File lib/pagseguro/payment/serializer.rb, line 148
def to_amount(amount)
  "%.2f" % BigDecimal(amount.to_s).round(2).to_s("F") if amount
end