class MyMoip::CreditCardPayment

Attributes

credit_card[RW]
installments[RW]

Public Class Methods

new(credit_card, opts = {}) click to toggle source
# File lib/mymoip/payments/credit_card_payment.rb, line 5
def initialize(credit_card, opts = {})
  self.credit_card  = credit_card
  self.installments = opts[:installments] || 1
end

Public Instance Methods

cash?() click to toggle source
# File lib/mymoip/payments/credit_card_payment.rb, line 49
def cash?
  @installments == 1
end
to_json(formatter = MyMoip::Formatter) click to toggle source
# File lib/mymoip/payments/credit_card_payment.rb, line 10
def to_json(formatter = MyMoip::Formatter)
  raise InvalidCreditCard, 'No credit card provided.' if credit_card.nil?
  raise InvalidCreditCard                             if credit_card.invalid?

  json = {
    Forma:        "CartaoCredito",
    Parcelas:     @installments,
    CartaoCredito: {
      Numero:           credit_card.card_number,
      Expiracao:        credit_card.expiration_date,
      CodigoSeguranca:  credit_card.security_code
    }
  }

  json[:CartaoCredito][:Portador] = {
    Nome: credit_card.owner_name,
    DataNascimento: (credit_card.owner_birthday and
                     formatter.date(credit_card.owner_birthday)),
    Telefone: (credit_card.owner_phone and
               formatter.phone(credit_card.owner_phone)),
    Identidade: (credit_card.owner_cpf and
                 formatter.cpf(credit_card.owner_cpf))
  }

  json[:Instituicao] = {
    american_express: "AmericanExpress",
    diners:           "Diners",
    hipercard:        "Hipercard",
    mastercard:       "Mastercard",
    visa:             "Visa"
  }.fetch(credit_card.logo)

  if cash?
    json[:Recebimento] = "AVista"
  end

  json
end