Class: GetnetApi::Customer

Inherits:
Base
  • Object
show all
Includes:
ActiveModel::Validations
Defined in:
lib/getnet_api/customer.rb

Constant Summary collapse

TIPO_DOCUMENTO =

Opções de Tipo de Cliente

{
  :pessoa_fisica    => "CPF",
  :pessoa_juridica  => "CNPJ",
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Base

build_request, default_headers, get_token_de_bearer, valid_bearer

Constructor Details

#initialize(campos = {}) ⇒ Customer

Nova instancia da classe Cliente

Parameters:

  • campos (Hash) (defaults to: {})


83
84
85
86
87
88
89
# File 'lib/getnet_api/customer.rb', line 83

def initialize(campos = {})
  campos.each do |campo, valor|
    if GetnetApi::Customer.public_instance_methods.include? "#{campo}=".to_sym
      send "#{campo}=", valor
    end
  end
end

Instance Attribute Details

#addressObject

Endereços GetnetApi::Address



41
42
43
# File 'lib/getnet_api/customer.rb', line 41

def address
  @address
end

#celphone_numberObject

Celular do comprador. (sem máscara) Alfa Numérico - Até 15 caracteres



49
50
51
# File 'lib/getnet_api/customer.rb', line 49

def celphone_number
  @celphone_number
end

#customer_idObject

Código que identifica o cliente no estabelecimento. Alfa Numérico - Até 100 caracteres



13
14
15
# File 'lib/getnet_api/customer.rb', line 13

def customer_id
  @customer_id
end

#document_numberObject

Número do documento do comprador sem pontuação. (sem máscara) Alfa Numérico - Até 15 caracteres



37
38
39
# File 'lib/getnet_api/customer.rb', line 37

def document_number
  @document_number
end

#document_typeObject

Identifica o tipo de documento informado é pessoa física ou jurídica. Simbolo - Valores pré-definidos [:pessoa_fisica, :pessoa_juridica]



33
34
35
# File 'lib/getnet_api/customer.rb', line 33

def document_type
  @document_type
end

#emailObject

E-mail do comprador Alfa Numérico - Até 100 caracteres



29
30
31
# File 'lib/getnet_api/customer.rb', line 29

def email
  @email
end

#first_nameObject

Nome do comprador Alfa Numérico - Até 40 caracteres



17
18
19
# File 'lib/getnet_api/customer.rb', line 17

def first_name
  @first_name
end

#last_nameObject

Nome do comprador Alfa Numérico - Até 80 caracteres



21
22
23
# File 'lib/getnet_api/customer.rb', line 21

def last_name
  @last_name
end

#nameObject

Nome do comprador Alfa Numérico - Até 100 caracteres



25
26
27
# File 'lib/getnet_api/customer.rb', line 25

def name
  @name
end

#observationObject

Returns the value of attribute observation.



51
52
53
# File 'lib/getnet_api/customer.rb', line 51

def observation
  @observation
end

#phone_numberObject

Telefone do comprador. (sem máscara) Alfa Numérico - Até 15 caracteres



45
46
47
# File 'lib/getnet_api/customer.rb', line 45

def phone_number
  @phone_number
end

Class Method Details

.create(customer) ⇒ Object

a = GetnetApi::Customer.create cliente



119
120
121
122
123
124
125
126
# File 'lib/getnet_api/customer.rb', line 119

def self.create customer

  hash = customer.to_request(:customer)

  response = self.build_request self.endpoint, "post", hash

  return JSON.parse(response.read_body)
end

.tipos_document_number_validosObject

Retornar array com os possíveis tipos de cliente



57
58
59
# File 'lib/getnet_api/customer.rb', line 57

def self.tipos_document_number_validos
  TIPO_DOCUMENTO.map{ |key, value| key }
end

Instance Method Details

#tipos_de_cliente_to_requestObject

Retornar o número do tipo de phone_number no padrão utilizado pela Getnet



92
93
94
# File 'lib/getnet_api/customer.rb', line 92

def tipos_de_cliente_to_request
  TIPO_DOCUMENTO[self.document_type]
end

#to_request(tipo) ⇒ Object

Montar o Hash de dados do usuario no padrão utilizado pela Getnet



97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/getnet_api/customer.rb', line 97

def to_request tipo
  customer = {
    customer_id:      self.customer_id.to_s,
    first_name:       self.first_name.to_s,
    last_name:        self.last_name.to_s,
    email:            self.email.to_s,
    document_type:    self.tipos_de_cliente_to_request.to_s,
    document_number:  self.document_number.to_s,
    phone_number:     self.phone_number.to_s,
  }

  if tipo == :customer
      customer.merge!({address: address.to_request})
  elsif tipo == :payment
      customer.merge!({name: self.name.to_s})
      customer.merge!({billing_address: address.to_request})
  end

  return customer
end