braspag_rails 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|