Module: BraspagRails

Extended by:
BraspagRails
Included in:
BraspagRails
Defined in:
lib/braspag_rails/base.rb,
lib/braspag_rails/util.rb,
lib/braspag_rails/codigos.rb,
lib/braspag_rails/railtie.rb,
lib/braspag_rails/version.rb,
lib/braspag_rails/consultas.rb,
lib/braspag_rails/generator.rb,
lib/braspag_rails/action_controller.rb,
lib/braspag_rails/transacoes/debito.rb,
lib/braspag_rails/transacoes/fraude.rb,
lib/braspag_rails/transacoes/credito.rb

Defined Under Namespace

Modules: ActionController, Transacao Classes: Consulta, InstallGenerator, MissingConfigurationError, MissingEnvironmentError, Railtie, Util

Constant Summary collapse

CODIGOS_RETORNO_AUTORIZACAO =
{
  2  => "Não autorizada",
  4  => "Operação realizada com sucesso",
  57 => "Cartão expirado",
  70 => "Problemas com o cartão de crédito",
  77 => "Cartão cancelado",
  78 => "Cartão bloqueado",
  99 => "Timed Out"
}
STATUS_RETORNO_AUTORIZACAO =
{
  0 => "Transação capturada",
  1 => "Transação autorizada, pendente de captura.",
  2 => "Transação não autorizada, pela adquirente.",
  3 => "Transação com erro desqualificante.", 
  4 => "Transação aguardando resposta."
}
STATUS_RETORNO_CAPTURA =
{
  0 => "Sucesso",
  2 => "Negada"
}
STATUS_TRANSACAO =
{
  0 => "A transação está com status indefinido",
  1 => "A transação foi capturada",
  2 => "A transação foi autorizada",
  3 => "A transação não foi autorizada",
  4 => "A transação foi cancelada",
  5 => "A transação foi estornada",
  6 => "A transação está aguardando resposta",
  7 => "A transação foi desqualificada"
}
PLANOS_DE_PAGAMENTO =
{
  0 => "À vista",
  1 => "Parcelado pelo estabelecimento",
  2 => "Parcelado pelo emissor do cartão",
  3 => "Parcelado IATA pelo estabelecimento",
  4 => "Parcelado IATA pelo emissor do cartão",
  5 => "À vista, com IATA",
  :a_vista => 0,
  :parcelado_pelo_estabelecimento => 1,
  :parcelado_pelo_emissor_do_cartao => 2,
  :parcelado_IATA_pelo_estabelecimento => 3,
  :parcelado_IATA_pelo_emissor_do_cartao => 4,
  :a_vista_com_IATA => 5
}
MEIOS_DE_PAGAMENTO =
{
  6   => "Boleto Bradesco",
  7   => "Boleto Caixa Econômica Federal ",
  8   => "Boleto HSBC",
  9   => "Boleto Banco do Brasil ",
  10  => "Boleto Real ABN AMRO ",
  13  => "Boleto Citibank",
  14  => "Boleto Itaú",
  123 => "Cielo Visa Electron",
  124 => "Boleto Santander",
  500 => "Cielo VISA",
  501 => "Cielo MASTERCARD",
  502 => "Cielo AMEX",
  503 => "Cielo DINERS",
  504 => "Cielo ELO",
  505 => "Banorte VISA",
  506 => "Banorte MASTERCARD ",
  507 => "Banorte DINERS",
  508 => "Banorte AMEX",
  509 => "Redecard Webservice VISA ",
  510 => "Redecard Webservice MASTERCARD ",
  511 => "Redecard Webservice DINERS ",
  512 => "PagosOnLine VISA ",
  513 => "PagosOnLine MASTERCARD ",
  514 => "PagosOnLine AMEX ",
  515 => "PagosOnLine DINERS ",
  516 => "Payvision VISA",
  517 => "Payvision MASTERCARD",
  518 => "Payvision DINERS",
  519 => "Payvision AMEX",
  520 => "Banorte Cargos Automáticos VISA ",
  521 => "Banorte Cargos Automáticos MASTERCARD ",
  523 => "AMEX 2P",
  524 => "SITEF VISA",
  525 => "SITEF MASTERCARD",
  526 => "SITEF AMEX",
  527 => "DITEF DINERS",
  528 => "SITEF HIPERCARD",
  529 => "SITEF LEADER",
  530 => "SITEF AURA",
  531 => "SITEF SANTANDER VISA",
  532 => "SITEF SANTANDER MASTERCARD ",
  533 => "ONEBUY",
  535 => "SUB1 – VISA",
  536 => "SUB1 – MASTERCARD",
  537 => "SUB1 - AMEX",
  538 => "SUB1 – DINERS",
  539 => "SITEF SONDA",
  540 => "SUB1 – NARANJA",
  541 => "SUB1 – NEVADA",
  542 => "SUB1 – CABAL",
  543 => "Cielo DISCOVER",
  544 => "Cielo JCB",
  545 => "Cielo AURA",
  546 => "Cartão Presente/Alelo",
  548 => "Redecard Hipercard",
  997 => "Cartão de Teste"
}
STATUS_RETORNO_ANTIFRAUDE =
{
  500 => "Started",
  501 => "Accept",
  502 => "Review",
  503 => "Reject",
  504 => "Pendent",
  505 => "Unfinished",
  506 => "Aborted"
}
CODIGOS_DECISAO_ANTIFRAUDE =
{
  "Accept" => "ACCEPT",
  "Error"  => "ERROR",
  "Reject" => "REJECT",
  "Review" => "REVIEW"
}
RAZOES_ANTIFRAUDE =
{
  100 => "Operação bem sucedida.",
  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.",
  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.",
  150 => "Falha no sistema geral. Possível ação: Aguarde alguns minutos e tente reenviar o pedido.",
  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.",
  152 => "O pedido foi recebido, mas ocorreu time-out. Possível ação: Aguarde alguns minutos e reenviar o pedido.",
  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.",
  231 => "O número da conta é inválido. Possível ação: Solicite um cartão ou outra forma de pagamento.",
  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.",
  400 => "A pontuação de fraude ultrapassa o seu limite. Possível ação: Reveja o pedido do cliente.",
  480 => "O pedido foi marcado para revisão pelo Gerenciador de Decisão.",
  481 => "O pedido foi rejeitado pelo Gerenciador de Decisão."
}
FATORES_DE_RISCO =
{
  "A" => "Mudança de endereço excessiva. O cliente mudou o endereço de cobrança duas ou mais vezes nos últimos seis meses.",
  "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.",
  "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." ,
  "D" => "Impacto do endereço de e-mail. O cliente usa um provedor de e-mail gratuito ou o endereço de email é arriscado." ,
  "E" => "Lista positiva. O cliente está na sua lista positiva.",
  "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.",
  "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." ,
  "H" => "Excessivas mudanças de nome. O cliente mudou o nome duas ou mais vezes nos últimos seis meses." ,
  "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." ,
  "N" => "Entrada sem sentido. O nome do cliente e os campos de endereço contém palavras sem sentido ou idioma." ,
  "O" => "Obscenidades. Dados do cliente contém palavras obscenas.",
  "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.",
  "Q" => "Inconsistências do telefone. O número de telefone do cliente é suspeito." ,
  "R" => "Ordem arriscada. A transação, o cliente e o lojista mostram informações correlacionadas de alto risco." ,
  "T" => "Cobertura Time. O cliente está a tentar uma compra fora do horário esperado." ,
  "U" => "Endereço não verificável. O endereço de cobrança ou de entrega não pode ser verificado." ,
  "V" => "Velocity. O número da conta foi usado muitas vezes nos últimos 15 minutos.",
  "W" => "Marcado como suspeito. O endereço de cobrança ou de entrega é semelhante a um endereço previamente marcado como suspeito." ,
  "Y" => "O endereço, cidade, estado ou país dos endereços de cobrança e entrega não se correlacionam.",
  "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."
}
INFORMACAO_ENDERECO =
{
  "COR-BA"   => "O endereço de cobrança pode ser normalizado.",
  "COR-SA"   => "O endereço de entrega pode ser normalizado.",
  "INTL-BA"  => "O país de cobrança é fora dos U.S.",
  "INTL-SA"  => "O país de entrega é fora dos U.S.",
  "MIL-USA"  => "Este é um endereço militar nos U.S.",
  "MM-A"     => "Os endereços de cobrança e entrega usam nomes de ruas diferentes.",
  "MM-BIN"   => "O BIN do cartão (os seis primeiros dígitos do número) não corresponde ao país.",
  "MM-C"     => "Os endereços de cobrança e entrega usam cidades diferentes.",
  "MM-CO"    => "Os endereços de cobrança e entrega usam países diferentes.",
  "MM-ST"    => "Os endereços de cobrança e entrega usam estados diferentes.",
  "MM-Z"     => "Os endereços de cobrança e entrega usam códidos postais diferentes.",
  "UNV-ADDR" => "O endereço é inverificável."
}
INFORMACAO_EMAIL =
{
  "FREE-EM"     => "O endereço de e-mail do cliente é de um provedor de e-mail gratuito.",
  "INTL-IPCO"   => "O país do endereço de e-mail do cliente é fora do U.S.",
  "INV-EM"      => "O endereço de e-mail do cliente é inválido.",
  "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.",
  "MM-IPBC"     => "O endereço de e-mail do cliente não é consistente com a cidade do endereço de cobrança.",
  "MM-IPBCO"    => "O endereço de e-mail do cliente não é consistente com a país do endereço de cobrança.",
  "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.",
  "MM-IPEM"     => "O endereço de e-mail do cliente não é consistente com o endereço IP.",
  "RISK-EM"     => "O domínio do e-mail do cliente (por exemplo, mail.example.com) está associada com alto risco.",
  "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.",
  "UNV-RI400SK" => "O endereço IP é de origem de risco.",
  "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."
}
INFORMACAO_SUSPEITAS =
{
  "BAD-FP"   => "O dispositivo é arriscado.",
  "INTL-BIN" => "O cartão de crédito foi emitido fora dos U.S.",
  "MM-TZTLO" => "Fuso horário do dispositivo é incompatível com os fusos horários do país.",
  "MUL-EM"   => "O cliente tem usado mais de quatro endereços de email diferentes.",
  "NON-BC"   => "A cidade de cobrança é um desconhecida.",
  "NON-FN"   => "O primeiro nome do cliente é desconhecido.",
  "NON-LN"   => "O último nome do cliente é desconhecido.",
  "OBS-BC"   => "A cidade de cobrança contem obscenidades.",
  "OBS-EM"   => "O endereço de e-mail contem obscenidades.",
  "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.",
  "RISK-BC"  => "A cidade de cobrança possui caracteres repetidos.",
  "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.",
  "RISK-DEV" => "Algumas das características do dispositivo são arriscadas.",
  "RISK-FN"  => "Nome e sobrenome do cliente contêm combinações de letras improváveis.",
  "RISK-LN"  => "Nome do meio ou o sobrenome do cliente contém combinações de letras improváveis.",
  "RISK-PIP" => "O endereço IP do proxy é arriscado.",
  "RISK-SD"  => "A inconsistência nos países de cobrança e entrega é arriscado.",
  "RISK-TB"  => "O dia e a hora da ordem associada ao endereço de cobrança é arriscado.",
  "RISK-TIP" => "O verdadeiro endereço IP é arriscado.",
  "RISK-TS"  => "O dia e a hora da ordem associada ao endereço de entrega é arriscado."
}
INFORMACAO_COMPRADOR =
{
  "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.",  
  "VEL-CC"   => "Diferentes números de contas foram usados várias vezes com o mesmo nome ou endereço de email.", 
  "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.",  
  "VELS-CC"  => "O número de conta tem sido utilizado várias vezes durante o intervalo de controle curto.", 
  "VELI-CC"  => "O número de conta tem sido utilizado várias vezes durante o intervalo de controle médio.", 
  "VELL-CC"  => "O número de conta tem sido utilizado várias vezes durante o intervalo de controle longo.", 
  "VELV-CC"  => "O número de conta tem sido utilizado várias vezes durante o intervalo de controle muito longo.", 
  "VELS-EM"  => "O endereço de e-mail tem sido utilizado várias vezes durante o intervalo de controle curto.", 
  "VELI-EM"  => "O endereço de e-mail tem sido utilizado várias vezes durante o intervalo de controle médio.", 
  "VELL-EM"  => "O endereço de e-mail tem sido utilizado várias vezes durante o intervalo de controle longo.", 
  "VELV-EM"  => "O endereço de e-mail tem sido utilizado várias vezes durante o intervalo de controle muito longo.", 
  "VELS-FP"  => "O device fingerprint tem sido utilizado várias vezes durante um intervalo curto", 
  "VELI-FP"  => "O device fingerprint tem sido utilizado várias vezes durante um intervalo médio", 
  "VELL-FP"  => "O device fingerprint tem sido utilizado várias vezes durante um intervalo longo", 
  "VELV-FP"  => "O device fingerprint tem sido utilizado várias vezes durante um intervalo muito longo", 
  "VELS-IP"  => "O endereço IP tem sido utilizado várias vezes durante o intervalo de controle curto.", 
  "VELI-IP"  => "O endereço IP tem sido utilizado várias vezes durante o intervalo de controle médio.", 
  "VELL-IP"  => "O endereço IP tem sido utilizado várias vezes durante o intervalo de controle longo.", 
  "VELV-IP"  => "O endereço IP tem sido utilizado várias vezes durante o intervalo de controle muito longo.", 
  "VELS-SA"  => "O endereço de entrega tem sido utilizado várias vezes durante o intervalo de controle curto.", 
  "VELI-SA"  => "O endereço de entrega tem sido utilizado várias vezes durante o intervalo de controle médio.", 
  "VELL-SA"  => "O endereço de entrega tem sido utilizado várias vezes durante o intervalo de controle longo.", 
  "VELV-SA"  => "O endereço de entrega tem sido utilizado várias vezes durante o intervalo de controle muito longo.", 
  "VELS-TIP" => "O endereço IP verdadeiro tem sido utilizado várias vezes durante o intervalo de controle curto.",  
  "VELI-TIP" => "O endereço IP verdadeiro tem sido utilizado várias vezes durante o intervalo de controle médio.",  
  "VELL-TIP" => "O endereço IP verdadeiro tem sido utilizado várias vezes durante o intervalo de controle longo."  
}
INFORMACAO_CLIENTE =
{
  "CON-POSNEG" => "A ordem disparada bate tanto com a lista positiva e negativa. O resultado da lista positiva sobrescreve a, lista negativa.",
  "NEG-BA"     => "O endereço de cobrança está na lista negativa.",
  "NEG-BCO"    => "O país de cobrança está na lista negativa.",
  "NEG-BIN"    => "O BIN do cartão de crédito (os seis primeiros dígitos do número do cartão) está na lista negativa.",
  "NEG-BINCO"  => "O país em que o cartão de crédito foi emitido está na lista negativa.",
  "NEG-BZC"    => "O código postal de cobrança está, na lista negativa.",
  "NEG-CC"     => "O número de cartão de crédito está na lista negativa.",
  "NEG-EM"     => "O endereço de e-mail está na lista negativa.",
  "NEG-EMCO"   => "O país em que o endereço de e-mail está localizado na lista negativa.",
  "NEG-EMDOM"  => "O domínio de e-mail (por exemplo, mail.example.com) está na lista negativa." ,
  "NEG-FP"     => "O device fingerprint está na lista negativa.",
  "NEG-HIST"   => "A transação foi encontrada na lista negativa.",
  "NEG-ID"     => "ID da conta do cliente está na lista negativa.",
  "NEG-IP"     => "O endereço IP (por exemplo, 10.1.27.63) está na lista negativa.",
  "NEG-IP3"    => "O endereço IP de rede (por exemplo, 10.1.27) está na lista negativa. Um endereço de IP da rede inclui até 256 endereços IP.",
  "NEG-IPCO"   => "O país em que o endereço IP está localizado está na lista negativa.",
  "NEG-PEM"    => "Um endereço de e-mail do passageiro está na lista negativa.",
  "NEG-PH"     => "O número do telefone está na lista negativa.",
  "NEG-PID"    => "ID da conta do passageiro está na lista negativa. ",
  "NEG-PPH"    => "O número do telefone do passageiro está na lista negativa.",
  "NEG-SA"     => "O endereço de entrega está na lista negativa. ",
  "NEG-SCO"    => "O país de entrega está na lista negativa. ",
  "NEG-SZC"    => "O código postal de entrega está na lista negativa.",
  "POS-TEMP"   => "O cliente está temporário na lista positiva.",
  "POS-PERM"   => "O cliente está permanente na lista positiva.",
  "REV-BA"     => "O endereço de cobrança esta na lista de revisão.",
  "REV-BCO"    => "O país de cobrança está na lista de revisão.",
  "REV-BIN"    => "O BIN do cartão de crédito (os seis primeiros dígitos do número do cartão) está na lista de revisão.",
  "REV-BINCO"  => "O país em que o cartão de crédito foi emitido está na lista de revisão.",
  "REV-BZC"    => "O código postal de cobrança está na lista de revisão.",
  "REV-CC"     => "O número do cartão de crédito está na lista de revisão.",
  "REV-EM"     => "O endereço de e-mail está na lista de revisão.",
  "REV-EMCO"   => "O país em que o endereço de e-mail está localizado está na lista de revisão.",
  "REV-EMDOM"  => "O domínio de e-mail (por exemplo, mail.example.com) está na lista de revisão.",
  "REV-FP"     => "O device fingerprint está na lista de revisão",
  "REV-ID"     => "ID da conta do cliente está na lista de revisão.",
  "REV-IP"     => "O endereço IP (por exemplo, 10.1.27.63) está na lista de revisão.",
  "REV-IP3"    => "O endereço IP de rede (por exemplo, 10.1.27) está na lista de revisão. Um endereço de IP da rede inclui até 256 endereços IP.",
  "REV-IPCO"   => "O país em que o endereço IP está localizado está na lista de revisão.",
  "REV-PEM"    => "Um endereço de e-mail do passageiro está na lista de revisão.",
  "REV-PH"     => "O número do telefone está na lista de revisão.",
  "REV-PID"    => "ID da conta do passageiro está na lista de revisão.",
  "REV-PPH"    => "O número do telefone do passageiro está na lista de revisão.",
  "REV-SA"     => "O endereço de entrega está na lista de revisão. ",
  "REV-SCO"    => "O país de entrega está na lista de revisão.",
  "REV-SZC"    => "O código postal de entrega está na lista de revisão."
}
INFORMACAO_TELEFONE =
{
  "MM-ACBST" => "O número de telefone do cliente não é consistente com o estado no endereço de cobrança.",
  "RISK-AC"  => "O código de área do cliente está associado com risco alto.",
  "RISK-PH"  => "O número de telefone dos U.S. ou do Canadá é incompleta, ou uma ou mais partes do número são arriscadas.",
  "TF-AC"    => "O número do telefone utiliza um código de área toll-free.",
  "UNV-AC"   => "O código de área é inválido.",
  "UNV-OC"   => "O código de área e/ou o prefixo de telefone são/é inválido.",
  "UNV-PH"   => "O número do telefone é inválido."
}
STATUS_REQUISICAO =
{
  0 => "Falha no recebimento da requisição pela Ferramenta de Antifraude",
  1 => "Requisição enviada com sucesso para a Ferramenta do Antifraude, e está sendo processada."
}
VERSION =
"0.0.6"
@@config =

Hold the config/braspag.yml contents

nil

Instance Method Summary collapse

Instance Method Details

#configObject

Load configuration file.



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/braspag_rails/base.rb', line 18

def config
  raise MissingConfigurationError, "file not found on #{config_file.inspect}" unless config?

  # load file if is not loaded yet
  @@config ||= YAML.load_file(config_file)

  # raise an exception if the environment hasn't been set
  # or if file is empty
  if @@config == false || !@@config[Rails.env]
    raise MissingEnvironmentError, ":#{Rails.env} environment not set on #{config_file.inspect}"
  end

  # retrieve the environment settings
  @@config[Rails.env]
end

#config?Boolean

Check if configuration file exists.

Returns:

  • (Boolean)


13
14
15
# File 'lib/braspag_rails/base.rb', line 13

def config?
  File.exist?(config_file)
end

#config_fileObject

The path to the configuration file



8
9
10
# File 'lib/braspag_rails/base.rb', line 8

def config_file
  Dir.pwd + "/config/braspag.yml"
end

#developer?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/braspag_rails/base.rb', line 34

def developer?
  config? && config["developer"] == true
end