});

Silent Order Post

Esta é uma integração que a Braspag oferece aos lojistas com o intuito de oferecer maior segurança e controle sobre a experiência de checkout.

O Silent Order Post é ideal para a empresa que não possui estrutura para cumprir todos os requisitos de segurança do PCI DSS no uso de cartões de crédito; ou, também, para o lojista que prefira concentrar seus esforços em outros elementos do negócio.

Este método possibilita o envio de dados do pagamento do seu cliente de forma segura, diretamente em nosso sistema. Os dados do pagamento, tais como número do cartão e data de validade, são armazenados no ambiente da Braspag, que conta com a certificação PCI DSS 3.2.

Por permitir total personalização na página de checkout da loja, essa solução é ideal para lojistas que exigem um alto grau de segurança, sem perder a identidade de sua página.

Principais Benefícios

Fluxo Transacional

Fluxo Silent Order Post

Integrando a Solução

1. Obtendo o AccessToken OAuth2

Quando o comprador acessa o checkout, o estabelecimento deve gerar o AccessToken a partir da API de autenticação da Braspag (OAuth2). Em caso de sucesso, a API retornará um AccessToken que deverá ser utilizado na próxima camada de autenticação da ferramenta.

Para obter o AccessToken no padrão OAuth 2.0, realize um envio de requisição utilizando o VERBO HTTP POST para a seguinte URL, formada pela “URL base do ambiente + endpoint”, no modelo server-to-server:

Ambiente URL base + endpoint Authorization
SANDBOX https://authsandbox.braspag.com.br/oauth2/token “Basic {base64}
PRODUÇÃO https://auth.braspag.com.br/oauth2/token “Basic {base64}

Nota: O valor “{base64}” para a autorização do tipo “Basic” deve ser obtido da seguinte forma:

  1. Concatene o “ClientId” e o “ClientSecret” (ClientId:ClientSecret).
  2. Codifique o resultado da concatenação em base64.
  3. Realize uma requisição ao servidor de autorização utilizando o código alfanumérico gerado.

Solicite à equipe de suporte a criação do “ClientID” e do “ClientSecret” de sua loja para utilização nos ambientes SANDBOX e de PRODUÇÃO. No chamado, informe que deseja realizar a integração do Silent Order Post e forneça seu “MerchantId”.

Requisição

--request POST "https://authsandbox.braspag.com.br/oauth2/token"
--header "Authorization: Basic {base64}"
--header "Content-Type: application/x-www-form-urlencoded" 
--data-binary "grant_type=client_credentials"
Parâmetros Formato Envio
Authorization “Basic {base64} Envio no header.
Content-Type “application/x-www-form-urlencoded” Envio no header.
grant_type “client_credentials” Envio no body.

Resposta

{
  "access_token": "faSYkjfiod8ddJxFTU3vti_ ... _xD0i0jqcw",
  "token_type": "bearer",
  "expires_in": 599
}
{
  "access_token": "faSYkjfiod8ddJxFTU3vti_ ... _xD0i0jqcw",
  "token_type": "bearer",
  "expires_in": 599
}
Propriedades da Resposta Descrição
access_token O token de autenticação solicitado. Ele será utilizado no próximo passo.
token_type Indica o valor do tipo de token.
expires_in Expiração do token de acesso, em segundos. Quando o token expira, é necessário obter um novo.

2. Obtendo AccessToken SOP

Após a obtenção do AccessToken OAuth2, o estabelecimento deverá realiza um envio de requisição utilizando o VERBO HTTP POST para a seguinte URL:

Ambiente URL base + endpoint
Sandbox https://transactionsandbox.pagador.com.br/post/api/public/v2/accesstoken
Produção https://transaction.pagador.com.br/post/api/public/v2/accesstoken

Requisição

--request POST "https://transactionsandbox.pagador.com.br/post/api/public/v2/accesstoken"
--header "Content-Type: application/json"
--header "MerchantId: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
--header "Authorization: Bearer faSYkjfiod8ddJxFTU3vti_ ... _xD0i0jqcw"
--data-binary
--verbose
Propriedade Descrição Tipo Tamanho Obrigatório?
MerchantId Identificador da loja no Pagador. GUID 36 Sim
Authorization Bearer [AccessToken OAuth2] texto 36 Sim

Resposta

Como resposta, o estabelecimento receberá um json (“HTTP 201 Created”) contendo, entre outras informações, o token (AccessToken SOP).

{
    "MerchantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "AccessToken": "MzA5YWIxNmQtYWIzZi00YmM2LWEwN2QtYTg2OTZjZjQxN2NkMDIzODk5MjI3Mg==",
    "Issued": "2021-05-05T08:50:04",
    "ExpiresIn": "2021-05-05T09:10:04"
}
--header "Content-Type: application/json"
--header "RequestId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
--data-binary
{
    "MerchantId": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "AccessToken": "MzA5YWIxNmQtYWIzZi00YmM2LWEwN2QtYTg2OTZjZjQxN2NkMDIzODk5MjI3Mg==",
    "Issued": "2021-05-05T08:50:04",
    "ExpiresIn": "2021-05-05T09:10:04"
}
Propriedade Descrição Tipo Tamanho Formato
MerchantId Identificador da loja no Pagador. GUID 36 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AccessToken Token de acesso (AccessToken SOP). Por questões de segurança, este token dará permissão para o estabelecimento salvar apenas 1 cartão dentro de um prazo já estipulado na resposta, através do atributo ExpiresIn (por padrão, 20 minutos). O que acontecer primeiro invalidará esse mesmo token para impedir um uso futuro. texto NjBhMjY1ODktNDk3YS00NGJkLWI5YTQtYmNmNTYxYzhlNjdiLTQwMzgxMjAzMQ==
Issued Data e hora da geração. texto AAAA-MM-DDTHH:MM:SS
ExpiresIn Data e hora da expiração. texto AAAA-MM-DDTHH:MM:SS

Consulte sobre o processo legado de autenticação, com geração do AccessToken utilizando MerchantId e IP do comprador.

3. Implementando o Script

Mapeando Classes

O estabelecimento deverá fazer o download do script disponibilizado pela Braspag e anexá-lo à sua página de checkout. Esse script permitirá à Braspag processar todas as informações de cartão sem intervenção do estabelecimento.

O estabelecimento deverá parametrizar os elementos de formulário com as seguintes classes:

Propriedade Nome da Classe
Nome do portador do cartão de crédito/débito “bp-sop-cardholdername”
Número do cartão de crédito/débito “bp-sop-cardnumber”
Data de validade do cartão de crédito/débito “bp-sop-cardexpirationdate”
Código de segurança do cartão de crédito/débito “bp-sop-cardcvvc”
Modalidade do cartão a ser verificada (“debitCard” ou “creditCard”). Campo opcional. “bp-sop-cardtype”

Definindo Parâmetros

PARÂMETROS DO SCRIPT

Propriedade Descrição
accessToken Token de acesso obtido via API de autenticação da Braspag (AccessToken SOP).
environment Tipo de ambiente: “sandbox” / “production”.
language Idioma: “pt” / “en” / “es”.
enableBinQuery “true” (habilita o Consulta BIN, retornando as características do cartão) / “false” (caso contrário). Obs.: Disponível somente para Cielo 3.0.
enableVerifyCard “true” (habilita o ZeroAuth, retornando se o cartão é válido ou não) / “false” (caso contrário).
enableTokenize “true” (salva o cartão diretamente no Cartão Protegido, retornando um cardToken ao invés de um paymentToken) / “false” (caso contrário).
cvvRequired “false” (desliga a obrigatoriedade de envio do CVV) / “true” (caso contrário).
cardType Use “creditCard” ou “debitCard” para forçar a verificação da modalidade do cartão. Importante para validar cartões múltiplos. Se nada for enviado, o emissor considerará apenas a modalidade “Crédito”.

RETORNOS DO SCRIPT

Propriedade Descrição Condição
PaymentToken Token efêmero utilizado para pagamento no formato de um GUID (36).
CardToken Token permanente utilizado para pagamento no formato de um GUID (36). Quando enableTokenize for “true”.
brand Nome da bandeira do cartão (Visa, Master, Elo, Amex, Diners, JCB, Hipercard). Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
binQueryReturnCode “00” se a análise do BIN for um sucesso. Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
binQueryReturnMessage Ex.: “Transacao Autorizada” se a análise do BIN for um sucesso. Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
CardBin Ex.: “455187”. Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
CardLast4Digits Ex.: “0181”. Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
foreignCard O campo retorna “true” se é um cartão emitido fora do Brasil. “false” caso contrário. Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
Issuer O campo retorna nome do emissor do cartão. Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
IssuerCode O campo retorna código do emissor do cartão. Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
CardType Retorna o tipo do cartão, por exemplo: Crédito, Débito, Múltiplo, Voucher, etc. Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
VerifyCardReturnCode Esse é o mesmo código retornado pelo provedor durante uma autorização padrão. Ex: provedor Cielo30 código “00” significa sucesso na validação. Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
VerifyCardReturnMessage Ex.: “Transacao Autorizada”. Quando enableBinQuery for “true”. Disponível somente para Cielo 3.0.
VerifyCardStatus “0”- Cartão Inválido; “1”- Cartão Válido; “99”- Situação Desconhecida. Quando enableVerifyCard for “true”.

Implementando Eventos

O script fornecido pela Braspag oferece os três seguintes eventos para manipulação e tratamento por parte do estabelecimento:

Evento Descrição
onSuccess Evento em caso de sucesso. Será retornado o PaymentToken e também os dados do cartão, caso tenha solicitado realizar a verificação do cartão. Por questões de segurança, esse PaymentToken poderá ser usado para uma única autorização. Após seu processamento, ele será invalidado.
onError Evento em caso de erro. Será retornado o código e a descrição do erro.
onInvalid Evento em caso de fornecimento de dados incorretos. Serão retornados detalhes de campos com erro. As mensagens retornadas no resultado da validação são disponibilizadas nas seguintes linguagens: português (default), inglês e espanhol.

4. Autorizando com PaymentToken

Após a obtenção do PaymentToken através do script, execute o processo de autorização, enviando o PaymentToken no lugar de dados do cartão.

Veja o exemplo abaixo, descrevendo o envio dos dados de autenticação da requisição de autorização da API do Pagador. Para maiores detalhes sobre a implementação, acesse o Manual da API do Pagador.

Request

{  
   "MerchantOrderId":"2017051002",
   "Customer":
   {  
     (...)
   },
   "Payment":
   {  
     (...)
     "CreditCard":{  
         "PaymentToken":"eedcb896-40e1-465b-b34c-6d1119dbb6cf"
     }
   }
}
--request POST "https://apisandbox.braspag.com.br/v2/sales"
--header "Content-Type: application/json"
--header "MerchantId: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
--header "MerchantKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
--data-binary
--verbose
{  
   "MerchantOrderId":"2017051002",
   "Customer":
   {  
     (...)
   },
   "Payment":
   {  
     (...)
     "CreditCard":{  
         "PaymentToken":"eedcb896-40e1-465b-b34c-6d1119dbb6cf"
     }
   }
}
Campo Descrição Tipo/Tamanho Obrigatório?
Payment.CreditCard.PaymentToken Fornece o PaymentToken gerado através do script. Esta informação substitui os dados do cartão. Substituir por DebitCard se for utilizar um cartão de débito GUID / 36 Sim

Response

Consulte o Manual da API do Pagador para exemplos de resposta a requisições de autorização.

Exemplo de Integração

Compartilhamos no nosso GitHub um exemplo prático de como você deve mapear as classes e integrar o Silent Order Post ao seu checkout.

ANEXO

Autenticação Legada

Veja abaixo o fluxo legado de obtenção do AccessToken para autenticação.

O estabelecimento realiza um envio de requisição utilizando o VERBO HTTP POST para a seguinte URL, formada pela URL “base do ambiente + endpoint”, no modelo server-to-server:

Ambiente URL base + endpoint
Sandbox https://transactionsandbox.pagador.com.br/post/api/public/v1/accesstoken?merchantid={MerchantID}
Produção https://transaction.pagador.com.br/post/api/public/v1/accesstoken?merchantid={MerchantID}

No lugar de {MerchantID} preencha o MerchantID de sua loja na plataforma Pagador da Braspag, no seguinte formato:

“https://transactionsandbox.pagador.com.br/post/api/public/v1/accesstoken?merchantid=00000000-0000-0000-0000-000000000000

Requisição

--request POST "https://transactionsandbox.pagador.com.br/post/api/public/v1/accesstoken?merchantid=00000000-0000-0000-0000-000000000000"
--header "Content-Type: application/json"
--data-binary
--verbose
Propriedade Descrição Tipo Tamanho Obrigatório?
MerchantID Identificador da loja no Pagador. GUID 36 Sim

Resposta

Como resposta, o estabelecimento receberá um json (“HTTP 201 Created”) contendo, entre outras informações, o ticket (AccessToken).

{
    "MerchantId": "B898E624-EF0F-455C-9509-3FAE12FB1F81",
    "AccessToken": "MzA5YWIxNmQtYWIzZi00YmM2LWEwN2QtYTg2OTZjZjQxN2NkMDIzODk5MjI3Mg==",
    "Issued": "2019-12-09T17:47:14",
    "ExpiresIn": "2019-12-09T18:07:14"
}
--header "Content-Type: application/json"
--header "RequestId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
--data-binary
{
    "MerchantId": "B898E624-EF0F-455C-9509-3FAE12FB1F81",
    "AccessToken": "MzA5YWIxNmQtYWIzZi00YmM2LWEwN2QtYTg2OTZjZjQxN2NkMDIzODk5MjI3Mg==",
    "Issued": "2019-12-09T17:47:14",
    "ExpiresIn": "2019-12-09T18:07:14"
}
Propriedade Descrição Tipo Tamanho Formato
MerchantId Identificador da loja no Pagador. GUID 36 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AccessToken Token de acesso. Por questões de segurança, este ticket dará permissão para o estabelecimento salvar apenas 1 cartão dentro de um prazo já estipulado na resposta, através do atributo ExpiresIn (por padrão, 20 minutos). O que acontecer primeiro invalidará esse mesmo ticket para impedir um uso futuro. texto NjBhMjY1ODktNDk3YS00NGJkLWI5YTQtYmNmNTYxYzhlNjdiLTQwMzgxMjAzMQ==
Issued Data e hora da geração. texto AAAA-MM-DDTHH:MM:SS
ExpiresIn Data e hora da expiração. texto AAAA-MM-DDTHH:MM:SS

Identifique qual será o IP de saída que acessará a API e, na sequência, solicite o cadastro do mesmo através do Canal de Atendimento Braspag.