class PagSeguro::SubscriptionPlan::RequestSerializer

Attributes

object[R]

Public Class Methods

new(object) click to toggle source
# File lib/pagseguro/subscription_plan/request_serializer.rb, line 6
def initialize(object)
  @object = object
end

Public Instance Methods

to_xml_params() click to toggle source
# File lib/pagseguro/subscription_plan/request_serializer.rb, line 10
def to_xml_params
  xml_builder.to_xml(
    save_with:
    Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS |
    Nokogiri::XML::Node::SaveOptions::FORMAT
  )
end

Private Instance Methods

to_amount(amount) click to toggle source
# File lib/pagseguro/subscription_plan/request_serializer.rb, line 20
def to_amount(amount)
  "%.2f" % BigDecimal(amount.to_s.to_f.to_s).round(2).to_s("F") if amount
end
xml_builder() click to toggle source
# File lib/pagseguro/subscription_plan/request_serializer.rb, line 52
def xml_builder
  Nokogiri::XML::Builder.new(encoding: PagSeguro.encoding) do |xml|
    xml.send(:preApprovalRequest) {
      xml.send(:redirectURL, object.redirect_url)
      xml.send(:reviewURL, object.review_url)
      xml.send(:reference, object.reference)
      xml.send(:maxUsers, object.max_users)
      xml_serialize_sender(xml)

      xml.send(:preApproval) {
        xml.send(:name, object.name)
        xml.send(:details, object.details)
        xml.send(:charge, object.charge)
        xml.send(:period, object.period)
        xml.send(:amountPerPayment, to_amount(object.amount))
        xml.send(:maxTotalAmount, to_amount(object.max_total_amount))
        xml.send(:maxPaymentsPerPeriod, object.max_payments_per_period.to_i) if object.max_payments_per_period
        xml.send(:maxAmountPerPeriod, to_amount(object.max_amount_per_period))
        xml.send(:maxAmountPerPayment, to_amount(object.max_amount_per_payment))
        xml.send(:finalDate, object.final_date.xmlschema) if object.final_date
        xml.send(:initialDate, object.initial_date.xmlschema) if object.initial_date
        xml.send(:membershipFee, to_amount(object.membership_fee))
        xml.send(:trialPeriodDuration, object.trial_duration.to_i) if object.trial_duration.present?
      }
    }
  end
end
xml_serialize_sender(xml) click to toggle source
# File lib/pagseguro/subscription_plan/request_serializer.rb, line 24
def xml_serialize_sender(xml)
  return unless object.sender

  xml.send(:sender) {
    xml.send(:name, object.sender.name)
    xml.send(:email, object.sender.email)
    if object.sender.phone
      xml.send(:phone) {
        xml.send(:areaCode, object.sender.phone.area_code)
        xml.send(:number, object.sender.phone.number)
      }
    end

    if object.sender.address
      xml.send(:address) {
        xml.send(:street, object.sender.address.street)
        xml.send(:number, object.sender.address.number)
        xml.send(:complement, object.sender.address.complement)
        xml.send(:district, object.sender.address.district)
        xml.send(:postalCode, object.sender.address.postal_code)
        xml.send(:city, object.sender.address.city)
        xml.send(:state, object.sender.address.state)
        xml.send(:country, object.sender.address.country)
      }
    end
  }
end