Class: MoIP::DirectPayment

Inherits:
Object
  • Object
show all
Defined in:
lib/moip/direct_payment.rb

Class Method Summary collapse

Class Method Details

.body(attributes = {}) ⇒ Object

Cria uma instrução de pagamento direto

Raises:

  • (MissinPaymentTypeError)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/moip/direct_payment.rb', line 14

def body(attributes = {})
  raise(MissinPaymentTypeError, "É necessário informar a razão do pagamento") if attributes[:razao].nil?
  raise(MissingPayerError, "É obrigatório passar as informações do pagador") if attributes[:pagador].nil?

  builder = Nokogiri::XML::Builder.new(:encoding => "UTF-8") do |xml|

    # Identificador do tipo de instrução
    xml.EnviarInstrucao {
      xml.InstrucaoUnica {

        # Dados da transação
        xml.Razao {
          xml.text attributes[:razao]
        }
        xml.Valores {
          xml.Valor(:moeda => "BRL") {
            xml.text attributes[:valor]
          }
        }
        xml.IdProprio {
          xml.text attributes[:id_proprio]
        }

        # Definindo o pagamento direto
        xml.PagamentoDireto {
          xml.Forma {
            xml.text attributes[:forma]
          }

          # Débito Bancário
          if attributes[:forma] == "DebitoBancario"
            xml.Instituicao {
              xml.text attributes[:instituicao]
            }
          end

          # Cartão de Crédito
          if attributes[:forma] == "CartaoCredito"
            xml.Instituicao {
              xml.text attributes[:instituicao]
            }
            xml.CartaoCredito {
              xml.Numero {
                xml.text attributes[:numero]
              }
              xml.Expiracao {
                xml.text attributes[:expiracao]
              }
              xml.CodigoSeguranca {
                xml.text attributes[:codigo_seguranca]
              }
              xml.Portador {
                xml.Nome {
                  xml.text attributes[:nome]
                }
                xml.Identidade(:Tipo => "CPF") {
                  xml.text attributes[:identidade]
                }
                xml.Telefone {
                  xml.text attributes[:telefone]
                }
                xml.DataNascimento {
                  xml.text attributes[:data_nascimento]
                }
              }
            }
            xml.Parcelamento {
              xml.Parcelas {
                xml.text attributes[:parcelas]
              }
              xml.Recebimento {
                xml.text attributes[:recebimento]
              }
            }
          end
        }

        # Dados do pagador
        xml.Pagador {
          xml.Nome { xml.text attributes[:pagador][:nome] }
          xml.LoginMoIP { xml.text attributes[:pagador][:login_moip] }
          xml.Email { xml.text attributes[:pagador][:email] }
          xml.TelefoneCelular { xml.text attributes[:pagador][:tel_cel] }
          xml.Apelido { xml.text attributes[:pagador][:apelido] }
          xml.Identidade { xml.text attributes[:pagador][:identidade] }
          xml.EnderecoCobranca {
            xml.Logradouro { xml.text attributes[:pagador][:logradouro] }
            xml.Numero { xml.text attributes[:pagador][:numero] }
            xml.Complemento { xml.text attributes[:pagador][:complemento] }
            xml.Bairro { xml.text attributes[:pagador][:bairro] }
            xml.Cidade { xml.text attributes[:pagador][:cidade] }
            xml.Estado { xml.text attributes[:pagador][:estado] }
            xml.Pais { xml.text attributes[:pagador][:pais] }
            xml.CEP { xml.text attributes[:pagador][:cep] }
            xml.TelefoneFixo { xml.text attributes[:pagador][:tel_fixo] }
          }
        }

        # Boleto Bancario
        if attributes[:forma] == "BoletoBancario"
          # Dados extras
          xml.Boleto {
            xml.DiasExpiracao(:Tipo => "Corridos") {
              xml.text attributes[:dias_expiracao]
            }
            xml.Instrucao1 {
              xml.text attributes[:instrucao_1]
            }
            xml.URLLogo {
              xml.text attributes[:url_logo]
            }
          }
        end
        
        if attributes[:url_retorno]
          # URL de retorno
          xml.URLRetorno {
            xml.text attributes[:url_retorno]
          }
        end
          
      }
    }
  end

  builder.to_xml
end