Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Introdução
O Gateway de Pagamentos 4all é um intermediário entre o comerciante e o adquirente, fornecendo um meio seguro de trafegar dados das
transações e permitindo a integração de múltiplos adquirentes com apenas uma API (Application Programming Interface).
O acesso à API é restrito aos ECs cadastrados, sendo necessário informar, em cada conexão, a chave de autenticação fornecida na interface
de gerenciamento. A duração da chave é indeterminada, somente perdendo a validade caso a conta do EC seja desativada na interface de
gerenciamento.
Atualmente, a única forma de comunicação suportada é JSON sobre HTTPS. Os dados devem esta codificados no formato UTF8. Os headers
HTTP devem indicar ‘ContentType’ como ‘application/json’ . O header ‘Accept’ deve ser usado e deve indicar ‘application/json’ .
O tamanho dos parâmetros pode ser fixo ou variável e segue a seguintes regras:
Respostas de sucesso apresentam status HTTP 200 quando possuírem conteúdo, e status HTTP 204 quando não possuírem nenhum
conteúdo.
1
{
"code": "30.17",
"message": "Parse error"
}
Respostas que indicam erros podem ser identificadas pelo código de status HTTP 4xx (client error) ou 5xx (server error). O corpo da resposta
de erro sempre contém um código de erro e uma mensagem descrevendo o motivo do erro ter ocorrido.
1.1.6. POSTBACK
O postback é um mecanismo de comunicação com o EC para informar sobre mudanças ocorridas em um determinado evento. Atualmente o
único tipo de evento que produz um postback são as transações financeiras. Para que seja gerado um fluxo de postback para um determinado
evento, haverá campos especificos para informar a URL de postback, que deverá ter um tamanho máximo de 250 caracteres. Por exemplo,
para as as transações financeiras, temos um campo especifico na chamada createTransaction (item 2.2). Os seguintes dados serão
passados na chamada à URL de postback:
{
"id": "1234",
"type": 1,
"status": 4
}
Para que seja considerado que a comunicação ocorreu com sucesso, a resposta da requisições deverá conter o código de status 200/204 do
protocolo HTTP. Caso ocorra um timeout na resposta, ou a resposta contenha um status diferente dos citados anteriormente, serão efetuadas
retentativas intervaladas entre si em pelo menos um minuto até um máximo de cinco vezes. Caso ainda não se obtenha sucesso, NÃO serão
feitas tentativas adicionais de comunicação da mudança de status.
O recurso de postback é apenas uma conveniência para facilitar a integração com o gateway, e está sujeito a falhas de comunicação,
indisponibilidade de alguma das partes, etc. Desta forma, não elimina a necessidade de consultas periódicas ao status da transação que se
deseja monitorar.
Outra questão importante é que o postback pode ser forjado, então quando um postback for recebido não se deve assumir que a informação é
confiável : o sistema da 4all deve ser consultado para se confirmar se aquela informação realmente é válida ou não. De certa forma, o
postback deve ser usado como um ‘trigger’ para ações.
Ambiente URL
Testes gateway.test.4all.com
Produção gateway.api.4all.com
Os serviços sempre devem ser acessados usando TLS, na porta 443. Na prática, os endpoints acima sempre serão precedidos de “ https:// ”.
2
1.2. De�nições
1.2.1. ESTABELECIMENTO COMERCIAL (EC)
Para realizar um pagamento, existe toda uma cadeia onde cada um dos elos se comunica com o próximo.
Para que a transação seja realizada, é necessário primeiramente sua autorização. Nesta etapa a instituição financeira verifica se o portador do
cartão possui crédito suficiente para realizar a transação, e em caso positivo irá autorizála.
Uma chamada da API do gateway para criar uma transação, usualmente, apenas a autoriza. É possível informar nos seus parâmetros que a
transação deve também ser capturada. Se este for o caso, o gateway captura a transação automaticamente (caso ela seja autorizada com
sucesso).
Nem sempre é interessante realizar a captura instantaneamente. O EC pode estar interessado apenas em saber se o cartão de crédito é
valido ou garantir que o seu cliente tenha crédito para pagar pelo serviço que será prestado.
As transações autorizadas que não forem capturadas em até 5 dias serão canceladas.
Após a transação ser autorizada, ela estará disponível para captura, termo utilizado para indicar que o valor será cobrado do portador do
cartão de crédito.
Transações capturadas podem ser canceladas, usualmente, até 90 dias após a transação ter sido capturada (o prazo exato depende do
adquirente que processou aquela transação).
Quando a transação é cancelada no mesmo dia em que foi capturada, ela não é realmente cobrada do portador do cartão e nem aparece no
seu extrato. No caso das transações que forem canceladas a partir do dia seguinte à sua captura, será iniciado o processo de estorno, que
devolverá o valor cobrado ao portador do cartão de crédito.
1.2.6. CHARGEBACK
Quando um cliente contesta uma transação junto à operadora do seu cartão de crédito, isto pode resultar num chargeback , situação em que o
valor da transação não será repassado ao EC que fez a transação, mesmo que o produto tenha sido entregue ou o serviço tenha sido
prestado.
O chargeback é algo inerente ao mercado. É inevitável que aconteça em algum momento, então é importante que o EC preveja esta situação
e saiba como proceder quando isto ocorrer.
3
2. Chamadas da API
Exemplo de requisição:
{
"merchantKey": "0123456789ABCDEF01..."
}
REQUISIÇÃO:
Exemplo de resposta:
{
"accessKey": "05AD8CB11AA34..."
}
RESPOSTA:
Observações:
Os dados do cartão devem ser informados usando a chamada prepare card do cofre de cartões 4all (conforme Anexo B ).
accessKey se tornará inválida após 15 minutos.
Descrição: Cria uma nova transação com os dados fornecidos. A transação é processada de forma assíncrona, então será necessário
consultar posteriormente a transação para determinar o seu estado final (aprovada ou recusada), usando a chamada get transaction details.
O parâmetro “metaId” será utilizado para recuperar a transação caso ocorra um problema de comunicação com o gateway. Esta exigência tem
como objetivo evitar que o EC crie duas ou mais vezes a mesma transação, consequentemente sobretaxando o seu cliente. O EC é
responsável pela geração do “metaId”, que deve ser único, e na ocorrência da repetição será devolvido um erro imediatamente.
{
"merchantKey": "0123456789ABCDEF01...",
"amount" : "7500",
"metaId": "AF85GHQ97A",
"paymentMethod": {
"cardToken": "TWFuIGlzIGRpc3Rpbmd<...>",
"softDescriptor": "Dr. Zeus Inc."
4
},
"autoCapture": false,
"postbackURL": "www.example.com/postback/"
}
{
"merchantKey": "0123456789ABCDEF01...",
"amount" : "5000",
"metaId": "AEF010FBC569D",
"paymentMethod": {
"cardNonce": "PAB6z8sikfx7RZ9VyL<...>",
"cardBrandId": 1,
"softDescriptor": "ACME SA"
},
"autoCapture": true,
"postbackURL": "www.example.com/postback/"
}
REQUISIÇÃO:
Informa o método de pagamento que será usado para processar a transação (ver
paymentMethod Object * sim
abaixo).
postbackURL Endereço a ser chamado quando a situação da transação mudar. URL 250 não
paymentMethod:
Token do cartão que será usado na transação, retornado pela rotina prepareCard do
cardNonce cofre de cartões 4all (conforme Anexo B ). String 44 depende
cardToken Token permanente de cartão, obtido através da chamada Create Card Token String 44 depende
5
Campo Descrição Formato Tam. Obrigatório
customerInfo:
Exemplo de resposta:
{
"transactionId": "1843246811",
"status": 0
}
RESPOSTA:
Observações:
Se a forma de pagamento (débito ou crédito) não for compatível com o cartão informado, um erro específico será retornado.
Na requisição, apenas um dos dois campos deve ser informado: ou se usa cardNonce , ou se usa cardToken .
Descrição: Realiza a captura de uma transação já autorizada. Retorna um erro imediato caso a transação não esteja disponível para captura.
O prazo máximo para capturar uma transação autorizada é de 5 dias. Ocorrendo o término do prazo, a transação será cancelada e o EC
deverá criar uma nova transação.
Para alguns adquirentes, a captura da transação pode ser parcial, ou seja, é possível cobrar do portador do cartão um valor menor do que o
informado na criação da transação. Vale notar que o valor da captura parcial não pode ser superior ao da transação original.
Exemplo de requisição:
{
"merchantKey": "0123456789ABCDEF01...",
6
"transactionId": "1843246811"
}
REQUISIÇÃO:
metaId Identificador fornecido pelo EC (obrigatório se transactionId não for informado). String 1-20 depende
Exemplo de resposta:
{
"transactionId": "1843246811",
"status": 3
}
RESPOSTA:
Descrição: Consulta uma transação. Esta chamada permite a utilização do “metaId” informado na criação da transação, como forma de
recuperá-la no caso de falha de comunicação.
Exemplo de requisição:
{
"merchantKey": "0123456789ABCDEF01...",
"transactionId": "1843246811"
}
REQUISIÇÃO:
transactionId Identificador da transação (obrigatório se metaId não for informado). String 20 depende
metaId Identificador fornecido pelo EC (obrigatório se transactionId não for informado). String 1-20 depende
Exemplo de resposta:
{
"transactionId": "1843246811",
"amount": "5000",
7
"status": 2,
"createdAt": "2016-01-31T12:37:25Z",
"authorizationInfo": {
"acquirerId": 1,
"acquirerUsn": "11960000570248",
"acquirerTimestamp": "2016-01-16T13:32:58",
"paymentMode": 1,
"lastDigits": "1234",
"expirationDate": "1218",
"brandId": 1
},
"customerInfo": {
"fullName": "John Smith",
"cpf": "68805501425",
"phoneNumber": "51987654321",
"emailAddress": "john@example.com"
}
}
RESPOSTA:
capturedAmount Valor da transação que foi capturado no adquirente, em centavos. Number sempre
Data e hora UTC em que a transação foi criada no servidor 4all (formato YYYY-
createdAt String 20 sempre
MM-DDThh:mm:ssZ).
authorizationInfo Objeto contendo detalhes de autorização da transação (ver abaixo). Object * depende
customerInfo:
authorizationInfo:
8
Campo Descrição Formato Tam. Presente
lastDigits Últimos quatro dígitos do número do cartão usado na transação (para exibição). String 4 sempre
Descrição: Realiza o cancelamento de uma transação aprovada, seja ela capturada ou apenas autorizada. Para transações autorizadas, o
prazo de cancelamento normalmente é de 5 dias após sua criação, e excedendo este período ela será cancelada automaticamente caso não
tenha sido capturada. Para transações capturadas, o prazo máximo para esta solicitação depende do adquirente usado, sendo que se o
cancelamento for realizado no mesmo dia, a transação não aparecerá na fatura do cliente.
Exemplo de requisição:
{
"merchantKey": "0123456789ABCDEF01...",
"transactionId": "1843246811"
}
REQUISIÇÃO:
metaId Identificador fornecido pelo EC (obrigatório se transactionId não for informado). String 1-20 depende
Exemplo de resposta:
{
"transactionId": "1843246811",
"status": 5
}
RESPOSTA:
9
Descrição: Cria um token de cartão com os dados fornecidos. Este token corresponde aos dados de cartão informados ao cofre e pode ser
usado pelo EC para autorizar novas transações com aquele cartão. Somente o EC que realizou esta chamada pode utilizar o token obtido.
A criação de um token inicia uma transação de validação do cartão uma autorização de R$ 0,10 será executada com aquele cartão e, em
seguida, será cancelada. Este processo ocorre de forma assíncrona e deve ser monitorado, através da chamada checkCardToken , para
verificar se a criação do token foi feita com sucesso (o token só pode ser usado em uma transação após este processo ter sido concluído com
sucesso).
Exemplo de requisição:
{
"merchantKey": "0123456789ABCDEF01...",
"cardNonce": "PAB6z8sikfx7RZ9VyL<...>"
}
REQUISIÇÃO:
Token do cartão que será usado nesta chamada, retornado pela rotina p repare card
cardNonce do cofre de cartões 4all (conforme Anexo B ) String 44 sim
Quando presente e com valor true , a chamada não retorna enquanto o status do
token do cartão for 0 (em processo de validação). O chamador deve estar preparado
waitForToken Boolean não
para lidar com tempos de resposta longos, de até 30 segundos. Existe um timeout de
30 segundos quando a chamada retorna, independente do estado do token.
Exemplo de resposta:
{
"cardToken": "CAdU9iNBoTuiHVTlu1i+fE<...>",
"status": 1,
"type": 1,
"lastDigits": "1234",
"expirationDate": "1218",
"brandId": 1
}
RESPOSTA:
status Estado do token de cartão: 0-em processo de validação, 1-válido, 2-inválido Number sempre
lastDigits Últimos quatro dígitos do número do cartão (para exibição). String 4 sempre
10
Exemplo de requisição:
{
"merchantKey": "hT8zVB3CrueBorrNkziwh<...>",
"cardToken": "CAdU9iNBoTuiHVTlu1i+fE<...>"
}
REQUISIÇÃO:
Exemplo de resposta:
{
"status": 1
}
RESPOSTA:
status Estado do token de cartão: 0-em processo de validação, 1-válido, 2-inválido. Number sempre
Exemplo de requisição:
{
"sessionToken": "JsFbKkyhM+q05nSKB...",
"itemIndex": 0,
"itemCount": 10,
"filterOptions": {
"after": "2016-01-31T03:00:00Z",
"before": "2016-02-01T02:59:59"
}
}
REQUISIÇÃO:
itemIndex Índice do item a partir do qual se deseja iniciar a listagem. Number sim
itemCount Quantidade de transações que devem ser retornadas pelo servidor na listagem. Number sim
filterOptions:
11
Campo Descrição Formato Tamanho Obrigatório
after Início do período das transações retornadas, no formato YYYY-MM-DDThh:mm:ssZ String 20 Não
before Fim do período das transações retornadas, no formato YYYY-MM-DDThh:mm:ssZ String 20 Não
customerInfo:
Exemplo de resposta:
{
"transactionList": [
{
"transactionId": "854383518",
"amount": 5000,
"capturedAmount": 5000,
"status": 4,
"createdAt": "2016-01-31T20:12:31Z",
"paidAt": "2016-01-31T20:33:12Z",
"authorizationInfo": {
"acquirerId": 1,
"acquirerUsn": "4215813",
"acquirerTimestamp": "1454271151000"
},
"customerInfo": {
"fullName": "John Smith",
"cpf": "68805501425",
"phoneNumber": "51987654321",
"emailAddress": "john@example.com"
}
},
{ ... }
]
}
RESPOSTA:
transactionList Lista de transações. Array de objetos transactionDetails (ver abaixo). Array de objetos * sempre
transactionList:
12
Campo Descrição Formato Tam. Presente
Data e hora UTC em que a transação foi criada no servidor 4all. Formato:YYYY-MM-
createdAt String 20 sempre
DDThh:mm:ssZ
Data e hora UTC em que a transação foi paga por uma conta 4all (formato YYYY-
paidAt String 20 depende
MM-DDThh:mm:ssZ). Presente somente se a transação já foi paga.
transactionDetails:
customerInfo:
Observações
Cada um dos filtros do cliente podem ser utilizados com o dado parcial. Por exemplo, pode-se informar apenas parte do nome, parte do
telefone, etc.
13
Anexo B - Cofre de Cartões 4all
O Cofre de Cartões 4all é usado para armazenamento dos dados de cartões de crédito e de débito de maneira segura, em conformidade com
a norma PCIDSS. Neste anexo estão listadas as funcionalidades deste serviço que precisam ser chamada pelo frontend para informar dados
de um cartão de crédito/débito.
Para acessar o ambiente de testes do cofre, o endpoint a ser usado é vault.test.4all.com . Para acessar o ambiente de produção do cofre, o
endpoint a ser usado é vault.api.4all.com .
Exemplo de requisição:
{
"accessKey": "aO1Jn8J/b32DM6/YBG<...>",
"cardData": {
"type": 1,
"cardholderName": "JOHN SMITH",
"cardNumber": "4024007126652816",
"expirationDate": "0119",
"securityCode": "123"
}
}
REQUISIÇÃO:
accessKey Chave temporária de acesso externo, obtida na chamada requestAccessKey. String 44 sim
cardData:
Exemplo de resposta:
{
"cardNonce": "PAB6z8sOi/B+N4kfVyL<...>"
}
RESPOSTA:
14
Campo Descrição Formato Tam. Presente
Token que deve ser usado para identificar estes dados de cartão em uma futura chamada
cardNonce String 44 sempre
ao cofre de cartões.
Anotações:
Esta chamada deve ser feita pelo frontend diretamente ao servidor do cofre de cartões. Desta forma, a informação de cartão não
circula em outros ambientes não-PCI.
Se não for usado, o cardNonce expira em 30 minutos neste caso, todos os dados de cartão informados são apagados.
Estado Descrição
1 Transação recusada.
2 Transação autorizada.
6 Transação cancelada.
10 Transação falhou.
1 Stone
2 Pagar.me
3 GetNet
15
acquirerId Nome do Adquirente
5 Cielo
6 Rede
0 Desconhecido
1 Visa
2 Mastercard
16