braspag_rails 0.0.1
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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +32 -0
- data/lib/braspag_rails/action_controller.rb +4 -0
- data/lib/braspag_rails/base.rb +40 -0
- data/lib/braspag_rails/codigos.rb +250 -0
- data/lib/braspag_rails/consultas.rb +49 -0
- data/lib/braspag_rails/generator.rb +12 -0
- data/lib/braspag_rails/railtie.rb +17 -0
- data/lib/braspag_rails/transacoes/credito.rb +165 -0
- data/lib/braspag_rails/transacoes/debito.rb +52 -0
- data/lib/braspag_rails/transacoes/fraude.rb +203 -0
- data/lib/braspag_rails/util.rb +45 -0
- data/lib/braspag_rails/version.rb +3 -0
- data/lib/braspag_rails.rb +7 -0
- data/lib/tasks/braspag_rails_tasks.rake +4 -0
- data/lib/templates/config.yml +18 -0
- data/test/braspag_rails_test.rb +7 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/Rakefile +6 -0
- data/test/dummy/app/assets/javascripts/application.js +13 -0
- data/test/dummy/app/assets/stylesheets/application.css +15 -0
- data/test/dummy/app/controllers/application_controller.rb +5 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/concerns/testes_antifraude.rb +73 -0
- data/test/dummy/app/models/concerns/testes_credito.rb +15 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/bin/bundle +3 -0
- data/test/dummy/bin/rails +4 -0
- data/test/dummy/bin/rake +4 -0
- data/test/dummy/config/application.rb +25 -0
- data/test/dummy/config/boot.rb +5 -0
- data/test/dummy/config/braspag.yml +17 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +82 -0
- data/test/dummy/config/environments/test.rb +39 -0
- data/test/dummy/config/initializers/assets.rb +8 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/dummy/config/initializers/inflections.rb +16 -0
- data/test/dummy/config/initializers/mime_types.rb +4 -0
- data/test/dummy/config/initializers/session_store.rb +3 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +23 -0
- data/test/dummy/config/routes.rb +56 -0
- data/test/dummy/config/secrets.yml +22 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/log/development.log +0 -0
- data/test/dummy/public/404.html +67 -0
- data/test/dummy/public/422.html +67 -0
- data/test/dummy/public/500.html +66 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/test_helper.rb +15 -0
- metadata +167 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 41b68cbabec436050ecc9642afc47f73bf9aacb6
|
4
|
+
data.tar.gz: a11eed962998864299d2006e4412ad17f50330ae
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 24dfbd084bce7ce7fd62169a5845a002075ddea4ac355757fecb50831b6f9ab7c1649b7024be714b84ede7b7cc078ea1da9740848ea13fabcde54440b741ec9c
|
7
|
+
data.tar.gz: a98d9385231ed8a5ba8a67b74a6d17c1686deb3d64244aa1cad5ca09549930d97c309311dea62a9c7c896d592d76c1a40748e400e6a4e935c6d445e714a140b4
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2014 YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler/setup'
|
3
|
+
rescue LoadError
|
4
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'rdoc/task'
|
8
|
+
|
9
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
10
|
+
rdoc.rdoc_dir = 'rdoc'
|
11
|
+
rdoc.title = 'BraspagRails2'
|
12
|
+
rdoc.options << '--line-numbers'
|
13
|
+
rdoc.rdoc_files.include('README.rdoc')
|
14
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
|
20
|
+
Bundler::GemHelper.install_tasks
|
21
|
+
|
22
|
+
require 'rake/testtask'
|
23
|
+
|
24
|
+
Rake::TestTask.new(:test) do |t|
|
25
|
+
t.libs << 'lib'
|
26
|
+
t.libs << 'test'
|
27
|
+
t.pattern = 'test/**/*_test.rb'
|
28
|
+
t.verbose = false
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
task default: :test
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module BraspagRails
|
2
|
+
extend self
|
3
|
+
|
4
|
+
# Hold the config/braspag.yml contents
|
5
|
+
@@config = nil
|
6
|
+
|
7
|
+
# The path to the configuration file
|
8
|
+
def config_file
|
9
|
+
Dir.pwd + "/config/braspag.yml"
|
10
|
+
end
|
11
|
+
|
12
|
+
# Check if configuration file exists.
|
13
|
+
def config?
|
14
|
+
File.exist?(config_file)
|
15
|
+
end
|
16
|
+
|
17
|
+
# Load configuration file.
|
18
|
+
def config
|
19
|
+
raise MissingConfigurationError, "file not found on #{config_file.inspect}" unless config?
|
20
|
+
|
21
|
+
# load file if is not loaded yet
|
22
|
+
@@config ||= YAML.load_file(config_file)
|
23
|
+
|
24
|
+
# raise an exception if the environment hasn't been set
|
25
|
+
# or if file is empty
|
26
|
+
if @@config == false || !@@config[Rails.env]
|
27
|
+
raise MissingEnvironmentError, ":#{Rails.env} environment not set on #{config_file.inspect}"
|
28
|
+
end
|
29
|
+
|
30
|
+
# retrieve the environment settings
|
31
|
+
@@config[Rails.env]
|
32
|
+
end
|
33
|
+
|
34
|
+
def developer?
|
35
|
+
config? && config["developer"] == true
|
36
|
+
end
|
37
|
+
|
38
|
+
class MissingEnvironmentError < StandardError; end
|
39
|
+
class MissingConfigurationError < StandardError; end
|
40
|
+
end
|
@@ -0,0 +1,250 @@
|
|
1
|
+
module BraspagRails
|
2
|
+
|
3
|
+
CODIGOS_RETORNO_AUTORIZACAO = {
|
4
|
+
2 => "Não autorizada",
|
5
|
+
4 => "Operação realizada com sucesso",
|
6
|
+
57 => "Cartão expirado",
|
7
|
+
70 => "Problemas com o cartão de crédito",
|
8
|
+
77 => "Cartão cancelado",
|
9
|
+
78 => "Cartão bloqueado",
|
10
|
+
99 => "Timed Out"
|
11
|
+
}
|
12
|
+
|
13
|
+
STATUS_RETORNO_AUTORIZACAO = {
|
14
|
+
0 => "Transação capturada",
|
15
|
+
1 => "Transação autorizada, pendente de captura.",
|
16
|
+
2 => "Transação não autorizada, pela adquirente.",
|
17
|
+
3 => "Transação com erro desqualificante.",
|
18
|
+
4 => "Transação aguardando resposta."
|
19
|
+
}
|
20
|
+
|
21
|
+
STATUS_RETORNO_CAPTURA = {
|
22
|
+
0 => "Sucesso",
|
23
|
+
2 => "Negada"
|
24
|
+
}
|
25
|
+
|
26
|
+
STATUS_TRANSACAO = {
|
27
|
+
0 => "A transação está com status indefinido",
|
28
|
+
1 => "A transação foi capturada",
|
29
|
+
2 => "A transação foi autorizada",
|
30
|
+
3 => "A transação não foi autorizada",
|
31
|
+
4 => "A transação foi cancelada",
|
32
|
+
5 => "A transação foi estornada",
|
33
|
+
6 => "A transação está aguardando resposta",
|
34
|
+
7 => "A transação foi desqualificada"
|
35
|
+
}
|
36
|
+
|
37
|
+
PLANOS_DE_PAGAMENTO = {
|
38
|
+
0 => "À vista",
|
39
|
+
1 => "Parcelado pelo estabelecimento",
|
40
|
+
2 => "Parcelado pelo emissor do cartão",
|
41
|
+
3 => "Parcelado IATA pelo estabelecimento",
|
42
|
+
4 => "Parcelado IATA pelo emissor do cartão",
|
43
|
+
5 => "À vista, com IATA",
|
44
|
+
:a_vista => 0,
|
45
|
+
:parcelado_pelo_estabelecimento => 1,
|
46
|
+
:parcelado_pelo_emissor_do_cartao => 2,
|
47
|
+
:parcelado_IATA_pelo_estabelecimento => 3,
|
48
|
+
:parcelado_IATA_pelo_emissor_do_cartao => 4,
|
49
|
+
:a_vista_com_IATA => 5
|
50
|
+
}
|
51
|
+
|
52
|
+
MEIOS_DE_PAGAMENTO = {
|
53
|
+
6 => "Boleto Bradesco",
|
54
|
+
7 => "Boleto Caixa Econômica Federal ",
|
55
|
+
8 => "Boleto HSBC",
|
56
|
+
9 => "Boleto Banco do Brasil ",
|
57
|
+
10 => "Boleto Real ABN AMRO ",
|
58
|
+
13 => "Boleto Citibank",
|
59
|
+
14 => "Boleto Itaú",
|
60
|
+
123 => "Cielo Visa Electron",
|
61
|
+
124 => "Boleto Santander",
|
62
|
+
500 => "Cielo VISA",
|
63
|
+
501 => "Cielo MASTERCARD",
|
64
|
+
502 => "Cielo AMEX",
|
65
|
+
503 => "Cielo DINERS",
|
66
|
+
504 => "Cielo ELO",
|
67
|
+
505 => "Banorte VISA",
|
68
|
+
506 => "Banorte MASTERCARD ",
|
69
|
+
507 => "Banorte DINERS",
|
70
|
+
508 => "Banorte AMEX",
|
71
|
+
509 => "Redecard Webservice VISA ",
|
72
|
+
510 => "Redecard Webservice MASTERCARD ",
|
73
|
+
511 => "Redecard Webservice DINERS ",
|
74
|
+
512 => "PagosOnLine VISA ",
|
75
|
+
513 => "PagosOnLine MASTERCARD ",
|
76
|
+
514 => "PagosOnLine AMEX ",
|
77
|
+
515 => "PagosOnLine DINERS ",
|
78
|
+
516 => "Payvision VISA",
|
79
|
+
517 => "Payvision MASTERCARD",
|
80
|
+
518 => "Payvision DINERS",
|
81
|
+
519 => "Payvision AMEX",
|
82
|
+
520 => "Banorte Cargos Automáticos VISA ",
|
83
|
+
521 => "Banorte Cargos Automáticos MASTERCARD ",
|
84
|
+
523 => "AMEX 2P",
|
85
|
+
524 => "SITEF VISA",
|
86
|
+
525 => "SITEF MASTERCARD",
|
87
|
+
526 => "SITEF AMEX",
|
88
|
+
527 => "DITEF DINERS",
|
89
|
+
528 => "SITEF HIPERCARD",
|
90
|
+
529 => "SITEF LEADER",
|
91
|
+
530 => "SITEF AURA",
|
92
|
+
531 => "SITEF SANTANDER VISA",
|
93
|
+
532 => "SITEF SANTANDER MASTERCARD ",
|
94
|
+
533 => "ONEBUY",
|
95
|
+
535 => "SUB1 – VISA",
|
96
|
+
536 => "SUB1 – MASTERCARD",
|
97
|
+
537 => "SUB1 - AMEX",
|
98
|
+
538 => "SUB1 – DINERS",
|
99
|
+
539 => "SITEF SONDA",
|
100
|
+
540 => "SUB1 – NARANJA",
|
101
|
+
541 => "SUB1 – NEVADA",
|
102
|
+
542 => "SUB1 – CABAL",
|
103
|
+
543 => "Cielo DISCOVER",
|
104
|
+
544 => "Cielo JCB",
|
105
|
+
545 => "Cielo AURA",
|
106
|
+
546 => "Cartão Presente/Alelo",
|
107
|
+
548 => "Redecard Hipercard",
|
108
|
+
997 => "Cartão de Teste"
|
109
|
+
}
|
110
|
+
|
111
|
+
STATUS_RETORNO_ANTIFRAUDE = {
|
112
|
+
500 => "Started",
|
113
|
+
501 => "Accept",
|
114
|
+
502 => "Review",
|
115
|
+
503 => "Reject",
|
116
|
+
504 => "Pendent",
|
117
|
+
505 => "Unfinished",
|
118
|
+
506 => "Aborted"
|
119
|
+
}
|
120
|
+
|
121
|
+
CODIGOS_DECISAO_ANTIFRAUDE = {
|
122
|
+
"Accept" => "ACCEPT",
|
123
|
+
"Error" => "ERROR",
|
124
|
+
"Reject" => "REJECT",
|
125
|
+
"Review" => "REVIEW"
|
126
|
+
}
|
127
|
+
|
128
|
+
RAZOES_ANTIFRAUDE = {
|
129
|
+
100 => "Operação bem sucedida.",
|
130
|
+
101 => "O pedido está faltando um ou mais campos necessários. Possível ação: Veja os campos que estão faltando na lista AntiFraudResponse.MissingFieldCollection. Reenviar o pedido com a informação completa.",
|
131
|
+
102 => "Um ou mais campos do pedido contêm dados inválidos. Possível ação: Veja os campos inválidos na lista AntiFraudResponse.InvalidFieldCollection. Reenviar o pedido com as informações corretas.",
|
132
|
+
150 => "Falha no sistema geral. Possível ação: Aguarde alguns minutos e tente reenviar o pedido.",
|
133
|
+
151 => "O pedido foi recebido, mas ocorreu time-out no servidor. Este erro não inclui time-out entre o cliente e o servidor. Possível ação: Aguarde alguns minutos e tente reenviar o pedido.",
|
134
|
+
152 => "O pedido foi recebido, mas ocorreu time-out. Possível ação: Aguarde alguns minutos e reenviar o pedido.",
|
135
|
+
202 => "CyberSource recusou o pedido porque o cartão expirou. Você também pode receber este código se a data de validade não coincidir com a data em arquivo do banco emissor. Se o processador de pagamento permite a emissão de créditos para cartões expirados, a CyberSource não limita essa funcionalidade. Possível ação: Solicite um cartão ou outra forma de pagamento.",
|
136
|
+
231 => "O número da conta é inválido. Possível ação: Solicite um cartão ou outra forma de pagamento.",
|
137
|
+
234 => "Há um problema com a configuração do comerciante na CyberSource. Possível ação: Não envie o pedido. Entre em contato com o Suporte ao Cliente para corrigir o problema de configuração.",
|
138
|
+
400 => "A pontuação de fraude ultrapassa o seu limite. Possível ação: Reveja o pedido do cliente.",
|
139
|
+
480 => "O pedido foi marcado para revisão pelo Gerenciador de Decisão.",
|
140
|
+
481 => "O pedido foi rejeitado pelo Gerenciador de Decisão."
|
141
|
+
}
|
142
|
+
|
143
|
+
FATORES_DE_RISCO = {
|
144
|
+
"A" => "Mudança de endereço excessiva. O cliente mudou o endereço de cobrança duas ou mais vezes nos últimos seis meses.",
|
145
|
+
"B" => "BIN do cartão ou autorização de risco. Os fatores de risco estão relacionados com BIN de cartão de crédito e/ou verificações de autorização do cartão.",
|
146
|
+
"C" => "Elevado números de cartões de créditos. O cliente tem usado mais de seis números de cartões de créditos nos últimos seis meses." ,
|
147
|
+
"D" => "Impacto do endereço de e-mail. O cliente usa um provedor de e-mail gratuito ou o endereço de email é arriscado." ,
|
148
|
+
"E" => "Lista positiva. O cliente está na sua lista positiva.",
|
149
|
+
"F" => "Lista negativa. O número da conta, endereço, endereço de e-mail ou endereço IP para este fim aparece sua lista negativa.",
|
150
|
+
"G" => "Inconsistências de geolocalização. O domínio do cliente de e-mail, número de telefone, endereço de cobrança, endereço de envio ou endereço IP é suspeito." ,
|
151
|
+
"H" => "Excessivas mudanças de nome. O cliente mudou o nome duas ou mais vezes nos últimos seis meses." ,
|
152
|
+
"I" => "Inconsistências de internet. O endereço IP e de domínio de e-mail não são consistentes com o endereço de cobrança." ,
|
153
|
+
"N" => "Entrada sem sentido. O nome do cliente e os campos de endereço contém palavras sem sentido ou idioma." ,
|
154
|
+
"O" => "Obscenidades. Dados do cliente contém palavras obscenas.",
|
155
|
+
"P" => "Identidade morphing. Vários valores de um elemento de identidade estão ligados a um valor de um elemento de identidade diferentes. Por exemplo, vários números de telefone estão ligados a um número de conta única.",
|
156
|
+
"Q" => "Inconsistências do telefone. O número de telefone do cliente é suspeito." ,
|
157
|
+
"R" => "Ordem arriscada. A transação, o cliente e o lojista mostram informações correlacionadas de alto risco." ,
|
158
|
+
"T" => "Cobertura Time. O cliente está a tentar uma compra fora do horário esperado." ,
|
159
|
+
"U" => "Endereço não verificável. O endereço de cobrança ou de entrega não pode ser verificado." ,
|
160
|
+
"V" => "Velocity. O número da conta foi usado muitas vezes nos últimos 15 minutos.",
|
161
|
+
"W" => "Marcado como suspeito. O endereço de cobrança ou de entrega é semelhante a um endereço previamente marcado como suspeito." ,
|
162
|
+
"Y" => "O endereço, cidade, estado ou país dos endereços de cobrança e entrega não se correlacionam.",
|
163
|
+
"Z" => "Valor inválido. Como a solicitação contém um valor inesperado, um valor padrão foi substituído. Embora a transação ainda possa ser processada, examinar o pedido com cuidado para detectar anomalias."
|
164
|
+
}
|
165
|
+
|
166
|
+
INFORMACAO_ENDERECO = {
|
167
|
+
"COR-BA" => "O endereço de cobrança pode ser normalizado.",
|
168
|
+
"COR-SA" => "O endereço de entrega pode ser normalizado.",
|
169
|
+
"INTL-BA" => "O país de cobrança é fora dos U.S.",
|
170
|
+
"INTL-SA" => "O país de entrega é fora dos U.S.",
|
171
|
+
"MIL-USA" => "Este é um endereço militar nos U.S.",
|
172
|
+
"MM-A" => "Os endereços de cobrança e entrega usam nomes de ruas diferentes.",
|
173
|
+
"MM-BIN" => "O BIN do cartão (os seis primeiros dígitos do número) não corresponde ao país.",
|
174
|
+
"MM-C" => "Os endereços de cobrança e entrega usam cidades diferentes.",
|
175
|
+
"MM-CO" => "Os endereços de cobrança e entrega usam países diferentes.",
|
176
|
+
"MM-ST" => "Os endereços de cobrança e entrega usam estados diferentes.",
|
177
|
+
"MM-Z" => "Os endereços de cobrança e entrega usam códidos postais diferentes.",
|
178
|
+
"UNV-ADDR" => "O endereço é inverificável."
|
179
|
+
}
|
180
|
+
|
181
|
+
INFORMACAO_EMAIL = {
|
182
|
+
"FREE-EM" => "O endereço de e-mail do cliente é de um provedor de e-mail gratuito.",
|
183
|
+
"INTL-IPCO" => "O país do endereço de e-mail do cliente é fora do U.S.",
|
184
|
+
"INV-EM" => "O endereço de e-mail do cliente é inválido.",
|
185
|
+
"MM-EMBCO" => "O domínio do endereço de e-mail do cliente não é consistente com o país do endereço de cobrança.",
|
186
|
+
"MM-IPBC" => "O endereço de e-mail do cliente não é consistente com a cidade do endereço de cobrança.",
|
187
|
+
"MM-IPBCO" => "O endereço de e-mail do cliente não é consistente com a país do endereço de cobrança.",
|
188
|
+
"MM-IPBST" => "O endereço IP do cliente não é consistente com o estado no endereço de cobrança. No entanto, este código de informação não pode ser devolvido quando a inconsistência é entre estados imediatamente adjacentes.",
|
189
|
+
"MM-IPEM" => "O endereço de e-mail do cliente não é consistente com o endereço IP.",
|
190
|
+
"RISK-EM" => "O domínio do e-mail do cliente (por exemplo, mail.example.com) está associada com alto risco.",
|
191
|
+
"UNV-NID" => "O endereço IP do cliente é de um proxy anônimo. Estas entidades escondem completamente informações sobre o endereço de IP.",
|
192
|
+
"UNV-RI400SK" => "O endereço IP é de origem de risco.",
|
193
|
+
"UNV-EMBCO" => "O país do endereço do cliente de e-mail não corresponde ao país do endereço de cobrança."
|
194
|
+
}
|
195
|
+
|
196
|
+
INFORMACAO_SUSPEITAS = {
|
197
|
+
"BAD-FP" => "O dispositivo é arriscado.",
|
198
|
+
"INTL-BIN" => "O cartão de crédito foi emitido fora dos U.S.",
|
199
|
+
"MM-TZTLO" => "Fuso horário do dispositivo é incompatível com os fusos horários do país.",
|
200
|
+
"MUL-EM" => "O cliente tem usado mais de quatro endereços de email diferentes.",
|
201
|
+
"NON-BC" => "A cidade de cobrança é um desconhecida.",
|
202
|
+
"NON-FN" => "O primeiro nome do cliente é desconhecido.",
|
203
|
+
"NON-LN" => "O último nome do cliente é desconhecido.",
|
204
|
+
"OBS-BC" => "A cidade de cobrança contem obscenidades.",
|
205
|
+
"OBS-EM" => "O endereço de e-mail contem obscenidades.",
|
206
|
+
"RISK-AVS" => "O resultado do teste combinado AVS e endereço de cobrança normalizado são arriscados, o resultado AVS indica uma correspondência exata, mas o endereço de cobrança não é entrega normalizada.",
|
207
|
+
"RISK-BC" => "A cidade de cobrança possui caracteres repetidos.",
|
208
|
+
"RISK-BIN" => "No passado, este BIN do cartão de crédito (os seis primeiros dígitos do número do cartão) mostrou uma elevada incidência de fraude.",
|
209
|
+
"RISK-DEV" => "Algumas das características do dispositivo são arriscadas.",
|
210
|
+
"RISK-FN" => "Nome e sobrenome do cliente contêm combinações de letras improváveis."
|
211
|
+
}
|
212
|
+
|
213
|
+
INFORMACAO_COMPRADOR = {
|
214
|
+
"VEL-ADDR" => "Diferente estados de faturamento e/ou o envio (EUA e Canadá apenas) têm sido usadas várias vezes com o número do cartão de crédito e/ou endereço de email.",
|
215
|
+
"VEL-CC" => "Diferentes números de contas foram usados várias vezes com o mesmo nome ou endereço de email.",
|
216
|
+
"VEL-NAME" => "Diferentes nomes foram usados várias vezes com o número do cartão de crédito e / ou endereço de email.",
|
217
|
+
"VELS-CC" => "O número de conta tem sido utilizado várias vezes durante o intervalo de controle curto.",
|
218
|
+
"VELI-CC" => "O número de conta tem sido utilizado várias vezes durante o intervalo de controle médio.",
|
219
|
+
"VELL-CC" => "O número de conta tem sido utilizado várias vezes durante o intervalo de controle longo.",
|
220
|
+
"VELV-CC" => "O número de conta tem sido utilizado várias vezes durante o intervalo de controle muito longo.",
|
221
|
+
"VELS-EM" => "O endereço de e-mail tem sido utilizado várias vezes durante o intervalo de controle curto.",
|
222
|
+
"VELI-EM" => "O endereço de e-mail tem sido utilizado várias vezes durante o intervalo de controle médio.",
|
223
|
+
"VELL-EM" => "O endereço de e-mail tem sido utilizado várias vezes durante o intervalo de controle longo.",
|
224
|
+
"VELV-EM" => "O endereço de e-mail tem sido utilizado várias vezes durante o intervalo de controle muito longo.",
|
225
|
+
"VELS-FP" => "O device fingerprint tem sido utilizado várias vezes durante um intervalo curto",
|
226
|
+
"VELI-FP" => "O device fingerprint tem sido utilizado várias vezes durante um intervalo médio",
|
227
|
+
"VELL-FP" => "O device fingerprint tem sido utilizado várias vezes durante um intervalo longo",
|
228
|
+
"VELV-FP" => "O device fingerprint tem sido utilizado várias vezes durante um intervalo muito longo",
|
229
|
+
"VELS-IP" => "O endereço IP tem sido utilizado várias vezes durante o intervalo de controle curto.",
|
230
|
+
"VELI-IP" => "O endereço IP tem sido utilizado várias vezes durante o intervalo de controle médio.",
|
231
|
+
"VELL-IP" => "O endereço IP tem sido utilizado várias vezes durante o intervalo de controle longo.",
|
232
|
+
"VELV-IP" => "O endereço IP tem sido utilizado várias vezes durante o intervalo de controle muito longo.",
|
233
|
+
"VELS-SA" => "O endereço de entrega tem sido utilizado várias vezes durante o intervalo de controle curto.",
|
234
|
+
"VELI-SA" => "O endereço de entrega tem sido utilizado várias vezes durante o intervalo de controle médio.",
|
235
|
+
"VELL-SA" => "O endereço de entrega tem sido utilizado várias vezes durante o intervalo de controle longo.",
|
236
|
+
"VELV-SA" => "O endereço de entrega tem sido utilizado várias vezes durante o intervalo de controle muito longo.",
|
237
|
+
"VELS-TIP" => "O endereço IP verdadeiro tem sido utilizado várias vezes durante o intervalo de controle curto.",
|
238
|
+
"VELI-TIP" => "O endereço IP verdadeiro tem sido utilizado várias vezes durante o intervalo de controle médio.",
|
239
|
+
"VELL-TIP" => "O endereço IP verdadeiro tem sido utilizado várias vezes durante o intervalo de controle longo."
|
240
|
+
}
|
241
|
+
|
242
|
+
STATUS_REQUISICAO = {
|
243
|
+
0 => "Falha no recebimento da requisição pela Ferramenta de Antifraude",
|
244
|
+
1 => "Requisição enviada com sucesso para a Ferramenta do Antifraude, e está sendo processada."
|
245
|
+
}
|
246
|
+
|
247
|
+
|
248
|
+
|
249
|
+
end
|
250
|
+
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'savon'
|
2
|
+
|
3
|
+
module BraspagRails
|
4
|
+
class Consulta
|
5
|
+
extend ::Savon::Model
|
6
|
+
|
7
|
+
client wsdl: BraspagRails.config['wsdl_consulta']
|
8
|
+
global :open_timeout, 30
|
9
|
+
global :convert_request_keys_to, :none
|
10
|
+
operations :get_additional_data, :get_boleto_data, :get_braspag_order_id, :get_credit_card_data, :get_customer_data,
|
11
|
+
:get_delivery_address_data, :get_order_data, :get_order_id_data, :get_transaction_data
|
12
|
+
|
13
|
+
def self.buscar_dados_adicionais(braspag_id)
|
14
|
+
resp = get_additional_data(message: {
|
15
|
+
additionalDataRequest: {
|
16
|
+
RequestId: SecureRandom.uuid,
|
17
|
+
Version: "1.0",
|
18
|
+
MerchantId: BraspagRails.config['merchant_id'],
|
19
|
+
BraspagTransactionId: braspag_id
|
20
|
+
}
|
21
|
+
})
|
22
|
+
resp
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.buscar_transacao(braspag_id)
|
26
|
+
resp = get_transaction_data(message: {
|
27
|
+
transactionDataRequest: {
|
28
|
+
RequestId: SecureRandom.uuid,
|
29
|
+
Version: "1.0",
|
30
|
+
MerchantId: BraspagRails.config['merchant_id'],
|
31
|
+
BraspagTransactionId: braspag_id
|
32
|
+
}
|
33
|
+
})
|
34
|
+
resp
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.buscar_dados_cartao(braspag_id)
|
38
|
+
resp = get_credit_card_data(message: {
|
39
|
+
creditCardDataRequest: {
|
40
|
+
RequestId: SecureRandom.uuid,
|
41
|
+
Version: "1.0",
|
42
|
+
MerchantId: BraspagRails.config['merchant_id'],
|
43
|
+
BraspagTransactionId: braspag_id
|
44
|
+
}
|
45
|
+
})
|
46
|
+
resp
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "rails/generators/base"
|
2
|
+
|
3
|
+
module BraspagRails
|
4
|
+
class InstallGenerator < ::Rails::Generators::Base
|
5
|
+
namespace "braspag:install"
|
6
|
+
source_root File.dirname(__FILE__) + "/../../templates"
|
7
|
+
|
8
|
+
def copy_configuration_file
|
9
|
+
copy_file "config.yml", "config/braspag.yml"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module BraspagRails
|
2
|
+
class Railtie < Rails::Railtie
|
3
|
+
generators do
|
4
|
+
require "braspag_rails/generator"
|
5
|
+
end
|
6
|
+
|
7
|
+
rake_tasks do
|
8
|
+
load File.dirname(__FILE__) + "/../tasks/braspag.rake"
|
9
|
+
end
|
10
|
+
|
11
|
+
initializer "braspag_rails.initialize" do |app|
|
12
|
+
::ActionView::Base.send(:include, BraspagRails::Helper)
|
13
|
+
::ActionController::Base.send(:include, BraspagRails::ActionController)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|