Class: MoIP::DirectPayment

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

Class Method Summary collapse

Class Method Details

.body(attributes = {}) ⇒ Object

Cria uma instrução de pagamento direto



9
10
11
12
13
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
# File 'lib/direct_payment.rb', line 9

def body(attributes = {})
  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 "Pagamento"
        }
        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
        raise(StandardError, "É obrigatório passar as informações do pagador") if attributes[:pagador].nil?
        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

      }
    }
  end
  builder.to_xml
end