superpay_api 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e19b66538456ae34eae4448a9f6acdd191f64389
4
- data.tar.gz: 6884549fdd974f9924224cd4c7011dada8c0f9d9
3
+ metadata.gz: 2eb84650369b7eaf9d1d694d3a349f05282e8d10
4
+ data.tar.gz: 837e54a1f561a01192de68daf7c0a2172f6d2ffe
5
5
  SHA512:
6
- metadata.gz: 6e7752e4f932db0033ddf6fb7685d32558b2df4ddd0c2e9b068d25ed5430e345aeab6b545d26ea13d804c2a64a56f4bcedb9c11613e410d1ef5f23b27e41086d
7
- data.tar.gz: c5eac64d290bfa1598d0d50899a73cc94b63d94bcf679549d48bcf6ec590919184a363db497f828a58463869f8b7d707462cd573296d1fc404b4f4da9f6b82af
6
+ metadata.gz: fe6a02d8583bad7822b944131dd3c30f709a54a19dadba0a7b918fb7964f129e7c9ff3417d7d28e346ca3f59a0cb7cf4744039c194f2a32a63d7e8b93a15276b
7
+ data.tar.gz: 776062eb709ce38b7e1429b5c2ea10d3f10ad9ecf35a5f73742c973d2df05b48af7e1bebedf9bd13eaf2f186ef83f6e197b8052906fd07d94125230229ae7f1f
@@ -24,7 +24,45 @@ module SuperpayApi
24
24
  params.merge! SuperpayApi.login
25
25
  end
26
26
 
27
- # Montar o Hash com a resposta quando ocorre erro
27
+ # Montar o Hash com a requisição para Cancelar Transação
28
+ def build_request_cancelar_transacao numero_transacao
29
+ # Montar os parâmetros para consulta
30
+ params = {
31
+ operacao: {
32
+ codigo_estabelecimento: SuperpayApi.estabelecimento,
33
+ numero_transacao: numero_transacao,
34
+ operacao: 2,
35
+ }
36
+ }
37
+ # Adiciona as configurações de login
38
+ params.merge! SuperpayApi.login
39
+ end
40
+
41
+ # Montar o Hash com a requisição para Capturar Transação
42
+ def build_request_capturar_transacao numero_transacao
43
+ # Montar os parâmetros para consulta
44
+ params = {
45
+ operacao: {
46
+ codigo_estabelecimento: SuperpayApi.estabelecimento,
47
+ numero_transacao: numero_transacao,
48
+ operacao: 1,
49
+ }
50
+ }
51
+ # Adiciona as configurações de login
52
+ params.merge! SuperpayApi.login
53
+ end
54
+
55
+ # Montar o Hash com a requisição para Capturar Transação
56
+ def build_request_estorno_de_transacao numero_transacao, valor_estorno
57
+ # Montar os parâmetros para consulta
58
+ params = {
59
+ codigo_estabelecimento: SuperpayApi.estabelecimento,
60
+ numero_transacao: numero_transacao,
61
+ valor_estorno: valor_estorno,
62
+ }
63
+ end
64
+
65
+ # Montar o Hash com a resposta
28
66
  # [ResultadoPagamentosWS, ResultadoConsultaTransacaoWS]
29
67
  def build_response_retorno(resposta = {})
30
68
  response = resposta.to_array.first
@@ -32,14 +70,41 @@ module SuperpayApi
32
70
  return SuperpayApi::Retorno.new(response[:consulta_transacao_completa_response][:return])
33
71
  elsif !response[:pagamento_transacao_completa_response].blank?
34
72
  return SuperpayApi::Retorno.new(response[:pagamento_transacao_completa_response][:return])
73
+ elsif !response[:estorna_transacao_response].blank?
74
+ return response[:estorna_transacao_response][:return]
35
75
  else
36
- return resposta
76
+ retorno = SuperpayApi::Retorno.new
77
+ retorno.errors.add(:mensagem, "Resposta sem tratamento")
78
+ return retorno
37
79
  end
38
80
  end
39
81
 
40
82
  # Montar o Hash com a resposta quando ocorre erro
83
+ # O erro será registrado no objeto errors
41
84
  def build_response_error(resposta = {})
42
- return resposta
85
+ retorno = SuperpayApi::Retorno.new
86
+ retorno.errors.add(:code, resposta.to_hash[:fault][:faultcode]) unless resposta.to_hash[:fault][:faultcode].blank?
87
+ retorno.errors.add(:mensagem, resposta.to_hash[:fault][:faultstring]) unless resposta.to_hash[:fault][:faultstring].blank?
88
+ return retorno
89
+ end
90
+
91
+ # Monta string com a resposta do estorno
92
+ def build_response_retorno_estorno(resposta = {})
93
+ response = resposta.to_array.first
94
+ if !response[:estorna_transacao_response].blank?
95
+ return response[:estorna_transacao_response][:return]
96
+ else
97
+ return "Resposta sem tratamento"
98
+ end
99
+ end
100
+
101
+ # Monta string com a resposta quando ocorre erro no estorno
102
+ def build_response_error_estorno(resposta = {})
103
+ unless resposta.to_hash[:fault][:faultstring].blank?
104
+ return resposta.to_hash[:fault][:faultstring]
105
+ else
106
+ return "Resposta sem tratamento"
107
+ end
43
108
  end
44
109
 
45
110
  end
@@ -2,6 +2,9 @@
2
2
  module SuperpayApi
3
3
  class Retorno
4
4
 
5
+ # Validações do Rails 3
6
+ include ActiveModel::Validations
7
+
5
8
  # Código que identifica a transação dentro do SuperPay
6
9
  # Numérico - Até 8 dígitos
7
10
  attr_accessor :numero_transacao
@@ -143,20 +143,72 @@ module SuperpayApi
143
143
  end
144
144
 
145
145
  # Função para consultar transações
146
+ # numero_transacao => :integer
146
147
  def consulta_transacao numero_transacao
147
- resposta = web_service.consulta_transacao_completa numero_transacao
148
- resposta
148
+ web_service.consulta_transacao_completa numero_transacao
149
149
  end
150
150
 
151
151
  # Função para consultar transações
152
+ # numero_transacao => :integer
152
153
  def self.consulta_transacao numero_transacao
153
154
  self.new.consulta_transacao numero_transacao
154
155
  end
155
156
 
156
157
  # Função para realizar o pagamento de transações
157
158
  def enviar_pagamento
158
- resposta = web_service.pagamento_transacao_completa self
159
- resposta
159
+ web_service.pagamento_transacao_completa self
160
+ end
161
+
162
+ # Função para Cancelar transação
163
+ # numero_transacao => :integer
164
+ def cancelar_transacao numero_transacao
165
+ web_service.cancelar_transacao numero_transacao
166
+ end
167
+
168
+ # Função para Cancelar transação
169
+ # numero_transacao => :integer
170
+ def self.cancelar_transacao numero_transacao
171
+ self.new.cancelar_transacao numero_transacao
172
+ end
173
+
174
+ # Função para Capturar transação
175
+ # numero_transacao => :integer
176
+ def capturar_transacao numero_transacao
177
+ web_service.capturar_transacao numero_transacao
178
+ end
179
+
180
+ # Função para Capturar transação
181
+ # numero_transacao => :integer
182
+ def self.capturar_transacao numero_transacao
183
+ self.new.capturar_transacao numero_transacao
184
+ end
185
+
186
+ # Função para Estorno de transação
187
+ # numero_transacao => :integer
188
+ # valor_estorno => :integer
189
+ # Sempre enviar o valor sem vírgula ou ponto, os dois últimos dígitos são sempre considerados como centavos
190
+ def estorno_de_transacao numero_transacao, valor_estorno
191
+ web_service.estorno_de_transacao numero_transacao, valor_estorno
192
+ end
193
+
194
+ # Função para Estorno de transação
195
+ # numero_transacao => :integer
196
+ # valor_estorno => :integer
197
+ # Sempre enviar o valor sem vírgula ou ponto, os dois últimos dígitos são sempre considerados como centavos
198
+ def self.estorno_de_transacao numero_transacao, valor_estorno
199
+ self.new.estorno_de_transacao numero_transacao, valor_estorno
200
+ end
201
+
202
+ # Função para Localizar transação pela campainha
203
+ # notificacao => Hash
204
+ def localizar_pela_campainha notificacao = {}
205
+ consulta_transacao notificacao[:numero_transacao]
206
+ end
207
+
208
+ # Função para Localizar transação pela campainha
209
+ # notificacao => Hash
210
+ def self.localizar_pela_campainha notificacao = {}
211
+ self.new.localizar_pela_campainha notificacao
160
212
  end
161
213
 
162
214
  # Montar o Hash da transação no padrão utilizado pelo SuperPay
@@ -3,7 +3,7 @@ module SuperpayApi
3
3
  module Version
4
4
  MAJOR = 0
5
5
  MINOR = 0
6
- PATCH = 1
6
+ PATCH = 2
7
7
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
8
8
  end
9
9
  end
@@ -20,6 +20,17 @@ module SuperpayApi
20
20
  "xmlns:pag" => "http://pagamentos.webservices.superpay.ernet.com.br/",
21
21
  }
22
22
  )
23
+
24
+ @savon_client_estorno = Savon.client(
25
+ wsdl: ::SuperpayApi.url_estorno,
26
+ env_namespace: :soapenv,
27
+ convert_request_keys_to: :lower_camelcase,
28
+ namespace_identifier: :est,
29
+ namespaces: {
30
+ "xmlns:soapenv" => "http://schemas.xmlsoap.org/soap/envelope/",
31
+ "xmlns:est" => "http://estorno.webservices.superpay.ernet.com.br/",
32
+ }
33
+ )
23
34
  end
24
35
 
25
36
  # Função que faz a requisição para consulta_transacao_completa
@@ -36,7 +47,9 @@ module SuperpayApi
36
47
 
37
48
  # Verifica se a retorno veio correta ou se deu problema
38
49
  if retorno.blank?
39
- return {error: true}
50
+ retorno = SuperpayApi::Retorno.new
51
+ retorno.errors.add(:mensagem, "Resposta vazia")
52
+ return retorno
40
53
  else
41
54
  return helper.build_response_retorno(retorno)
42
55
  end
@@ -52,17 +65,82 @@ module SuperpayApi
52
65
  retorno = @savon_client.call(:pagamento_transacao_completa, message: params)
53
66
  rescue Savon::SOAPFault => error
54
67
  return helper.build_response_error(error)
55
- # return helper.build_response_error({error: error.to_hash[:fault][:faultstring]})
56
68
  end
57
69
 
58
70
  # Verifica se a retorno veio correta ou se deu problema
59
71
  if retorno.blank?
60
- return {error: true}
72
+ retorno = SuperpayApi::Retorno.new
73
+ retorno.errors.add(:mensagem, "Resposta vazia")
74
+ return retorno
75
+ else
76
+ return helper.build_response_retorno(retorno)
77
+ end
78
+ end
79
+
80
+ # Função que faz a requisição para cancelar_transacao
81
+ def cancelar_transacao(numero_transacao)
82
+ # Monta os parâmetros
83
+ params = helper.build_request_cancelar_transacao(numero_transacao)
84
+
85
+ # Faz a requisição para o wsdl
86
+ begin
87
+ retorno = @savon_client.call(:operacao_transacao, message: params)
88
+ rescue Savon::SOAPFault => error
89
+ return helper.build_response_error(error)
90
+ end
91
+
92
+ # Verifica se a retorno veio correta ou se deu problema
93
+ if retorno.blank?
94
+ retorno = SuperpayApi::Retorno.new
95
+ retorno.errors.add(:mensagem, "Resposta vazia")
96
+ return retorno
97
+ else
98
+ return helper.build_response_retorno(retorno)
99
+ end
100
+ end
101
+
102
+ # Função que faz a requisição para capturar_transacao
103
+ def capturar_transacao(numero_transacao)
104
+ # Monta os parâmetros
105
+ params = helper.build_request_capturar_transacao(numero_transacao)
106
+
107
+ # Faz a requisição para o wsdl
108
+ begin
109
+ retorno = @savon_client.call(:operacao_transacao, message: params)
110
+ rescue Savon::SOAPFault => error
111
+ return helper.build_response_error(error)
112
+ end
113
+
114
+ # Verifica se a retorno veio correta ou se deu problema
115
+ if retorno.blank?
116
+ retorno = SuperpayApi::Retorno.new
117
+ retorno.errors.add(:mensagem, "Resposta vazia")
118
+ return retorno
61
119
  else
62
120
  return helper.build_response_retorno(retorno)
63
121
  end
64
122
  end
65
123
 
124
+ # Função que faz a requisição para Estorno de transação
125
+ def estorno_de_transacao(numero_transacao, valor_estorno)
126
+ # Monta os parâmetros
127
+ params = helper.build_request_estorno_de_transacao(numero_transacao, valor_estorno)
128
+
129
+ # Faz a requisição para o wsdl
130
+ begin
131
+ retorno = @savon_client_estorno.call(:estorna_transacao, message: params)
132
+ rescue Savon::SOAPFault => error
133
+ return helper.build_response_error_estorno(error)
134
+ end
135
+
136
+ # Verifica se a retorno veio correta ou se deu problema
137
+ if retorno.blank?
138
+ return "Resposta vazia"
139
+ else
140
+ return helper.build_response_retorno_estorno(retorno)
141
+ end
142
+ end
143
+
66
144
  private
67
145
 
68
146
  # Acesso ao helper
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: superpay_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - QW3 Software & Marketing
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-12 00:00:00.000000000 Z
11
+ date: 2016-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel