Silent Order Post

Com o Silent Order Post, os dados de pagamentos são trafegados de forma segura, mantendo o controle total sobre a experiência de checkout.

Esse método possibilita o envio dos dados do pagamento do comprador de forma segura diretamente em nosso sistema. Os campos de pagamento são armazenados pela Cielo, que conta com a certificação PCI DSS 3.2.

É ideal para lojistas que exigem um alto nível de segurança, sem perder a identidade de sua página.

Características

  • Captura de dados de pagamento diretamente para os sistemas da Cielo por meio dos campos hospedados na sua página através de um script (JavaScript);
  • Compatibilidade com todos os meios de pagamentos disponibilizados ao Gateway (Nacional e Internacional);
  • Redução do escopo de PCI DSS;
  • Controle total sobre a experiência de checkout e elementos de gestão da sua marca.

O PCI Data Security Standard (PCI DSS) é um padrão global de segurança de dados de cartões, e compreende um conjunto mínimo de requisitos para
proteger os dados do titular do cartão.

Fluxo de Autorização

A seguir, apresentamos como funciona um fluxo de autorização padrão e um fluxo de autorização com o Silent Order Post.

Fluxo de Autorização Padrão

No fluxo de autorização padrão, a loja virtual recebe os dados de pagamento do comprador e, por isso, precisa estar em conformidade com o PCI DSS.

Fluxo Padrão

Fluxo de Autorização com Silent Order POST

Com o Silent Order Post, o servidor da loja virtual não trafega os dados do cartão abertamente.

Fluxo Padrão

  1. A loja configura o JavaScript na tela de checkout. Na finalização da compra, o script envia os dados de pagamento diretamente para a API E-Commerce Cielo, sem passar pelo seu servidor;
  2. A API armazena os dados do cartão para aquela compra e cria um código criptografado (PaymentToken, válido apenas para uma compra) ou armazena os dados do cartão e cria um código criptografado para o cartão (CardToken, que pode ser usado em outras compras);
  3. A loja envia o token do script para o próprio servidor;
  4. A loja, por meio do seu servidor, envia a requisição de autorização com o token e os demais campos obrigatórios para uma transação.

Integração

Passo 1. Obtendo dos tokens de acesso

Para que possa usar o Silent Order Post, você vai precisar de dois tokens:

  • Token de autenticação OAuth2 (access_token);
  • Token de autenticação do Silent Order Post (AccessToken).

Token de autenticação OAuth2

Obtenha o access_token a partir da API de autenticação da Cielo (OAuth2). Em caso de sucesso, a API retornará um access_token que deverá ser utilizado na próxima camada de autenticação da ferramenta.

Para obter o access_token no padrão OAuth 2.0, envie uma requisição utilizando o VERBO HTTP POST para a URL da tabela a seguir, formada pela "URL base do ambiente + endpoint", conforme o ambiente desejado:

AmbienteURL base + endpointAuthorization
SANDBOXhttps://authsandbox.braspag.com.br/oauth2/token"Basic {base64}"
PRODUÇÃOhttps://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.

Para obter o "ClientID" e o "ClientSecret", envie um e-mail para [email protected] contendo o MerchantId e informando que deseja obter as credenciais "ClientID" e "ClientSecret" para o Silent Order Post.

Requisição

POST oauth2/token

--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âmetrosFormatoEnvio
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 RespostaDescrição
access_tokenO token de autenticação solicitado. Ele será utilizado no próximo passo.
token_typeIndica o valor do tipo de token.
expires_inExpiração do token de acesso, em segundos. Quando o token expira, é necessário obter um novo.

Token de autenticação do Silent Order Post

Após a obtenção do token de autenticação OAuth2, envie uma requisição utilizando o VERBO HTTP POST para a URL da tabela a seguir conforme o ambiente desejado:

AmbienteURL base + endpoint
Sandboxhttps://transactionsandbox.pagador.com.br/post/api/public/v2/accesstoken
Produçãohttps://transaction.pagador.com.br/post/api/public/v2/accesstoken

Requisição

POST api/public/v2/accesstoken

--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
PropriedadeDescriçãoTipoTamanhoObrigatório?
MerchantIdIdentificador da loja na API Cielo E-commerce.GUID36Sim
AuthorizationBearer [AccessToken OAuth2]Texto36Sim

Resposta

Como resposta, a loja receberá um json ("HTTP 201 Created") contendo, entre outras informações, o AccessToken do Silent Order Post.

{
  "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"
}
PropriedadeDescriçãoTipoTamanhoFormato
MerchantIdIdentificador da loja na API Cielo E-commerce.Guid36xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AccessTokenToken de acesso (AccessToken do Silent Order Post). O AccessToken obtido permitirá a realização de uma tentativa de autorização no período de 20 minutos.Texto--NjBhMjY1ODktNDk3YS00NGJkLWI5YTQtYmNmNTYxYzhlNjdiLTQwMzgxMjAzMQ==
IssuedData e hora da geração.Texto--AAAA-MM-DDTHH:MM:SS
ExpiresInData e hora da expiração.Texto--AAAA-MM-DDTHH:MM:SS

Passo 2. Implementando o script

Faça o download do script fornecido pela Cielo, e anexe o script à sua página de checkout. Esse script permitirá à Cielo processar todas as informações de cartão sem intervenção do estabelecimento.

Faça o download do script correspondente ao ambiente desejado, sandbox ou produção:

Em seguida, faça a configuração do formulário com as seguintes classes:

  • Para o portador do cartão de crédito/débito: bp-sop-cardholdername
  • Para o número do cartão de crédito/débito: bp-sop-cardnumber
  • Para a validade do cartão de crédito/débito: bp-sop-cardexpirationdate
  • Para o código de segurança do cartão de crédito/débito: bp-sop-cardcvvc

Além disso, defina os parâmetros a seguir:

Parâmetros do Script

PropriedadeDescrição
accessTokenToken de acesso obtido via API de autenticação da Braspag (AccessToken SOP).
environmentTipo de ambiente: "sandbox" / "production".
languageIdioma: "pt" / "en" / "es".
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).

Exemplo de setup a ser realizado pela loja virtual na página de checkout:

Exemplo de setup a ser realizado pela loja virtual na página de checkout

Retornos do Script

O script fornecido pela Cielo fornece três eventos para manipulação e tratamento por parte do estabelecimento. São eles:

  • onSuccess, retorna o “PaymentToken” após processar os dados do cartão;
  • onError, caso haja algum erro no consumo dos serviços da Cielo;
  • onInvalid, retorna o resultado da validação dos inputs.

Na validação dos inputs, o estabelecimento poderá utilizar toda a camada de validação sobre os dados de cartão realizada pela Cielo e assim simplificar o tratamento no seu formulário de checkout. As mensagens retornadas no resultado da validação são disponibilizadas nos idiomas português (padrão), inglês e espanhol.

PropriedadeDescriçãoCondição
PaymentTokenToken efêmero utilizado para pagamento no formato de um GUID (36).***
CardTokenToken permanente utilizado para pagamento no formato de um GUID (36).Quando enableTokenize for "true".
  • O PaymentToken ou o CardToken representarão todos os dados de cartão fornecido pelo comprador. O token será usado pelo estabelecimento para que não precise tratar e processar dados de cartão em seu servidor.
  • Por questões de segurança o PaymentToken poderá ser usado apenas para uma autorização na API E-commerce Cielo. Após o processamento do token, ele será invalidado.

Passo 3. Requisição de autorização com o token

Requisição com PaymentToken

Envie a requisição de autorização com o PaymentToken no nó CreditCard (para transação com cartão de crédito) ou no nó DebitCard (para transação cmo cartão de débito).

POST/1/sales/

},
    "Payment": {
    "Type": "CreditCard",
    "Amount": 1400,
    "Installments": 1,
    "CreditCard": {
        "PaymentToken": "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
        "Brand": "Master"
        }
    }
}

Para consultar os campos obrigatórios da requisição e a resposta, veja as requisições padrão das transações de crédito ou débito.

Por questões de segurança o PaymentToken poderá ser usado apenas para uma autorização na API E-commerce Cielo. O token será processado e, em seguida, invalidado.

Requisição com CardToken

Envie a requisição de autorização com o CardToken no nó CreditCard (para transação com cartão de crédito) ou no nó DebitCard (para transação com cartão de débito).

POST/1/sales/

{
  "MerchantOrderId": "2014111706",
  "Customer": {
    "Name": "Comprador Teste"
  },
  "Payment": {
    "Type": "CreditCard",
    "Amount": 100,
    "Installments": 1,
    "SoftDescriptor": "123456789ABCD",
    "CreditCard": {
      "CardToken": "6e1bf77a-b28b-4660-b14f-455e2a1c95e9",
      "SecurityCode": "262",
      "Brand": "Visa"
    }
  }
}

Para consultar os campos obrigatórios da requisição e a resposta, veja as requisições padrão das transações de crédito ou débito.