Ambientes
Ambiente | Endereço |
---|---|
Sandbox | api2.cielo.com.br/sandbox api2.cielo.com.br/sandbox/v2/oauth/token (formato url encoded) api2.cielo.com.br/sandbox/v2/oauth/access-token (formato json) api2.cielo.com.br/sandbox/padraoq/v1/publicKey api2.cielo.com.br/sandbox/padraoq/v1/parsedQRCode api2.cielo.com.br/sandbox/padraoq/v1/payment/card |
Produção | api2.cielo.com.br api2.cielo.com.br/v2/oauth/token (formato url encoded) api2.cielo.com.br/v2/oauth/access-token (formato json) api2.cielo.com.br/padraoq/v1/publicKey api2.cielo.com.br/padraoq/v1/parsedQRCode api2.cielo.com.br/padraoq/v1/payment/card |
Requerimentos para acesso
Para a utilização de nossas APIs precisamos receber as seguintes informações, para a criação do cliente id e Authorization.
- Nome
- Função
- Quem será o responsável pela integração (Responsável Técnico) para cadastro no API Suite?
Informações que enviaremos:
Após o envio das informações acima, enviaremos ao responsável o client_id (chave que identifica a APP) e o client_secret.
Qualquer dúvida, abra um ticket via Zendesk
Autenticação
Fluxo de geração do Access Token (via format JSON)
O recurso access_token é responsável pela autenticação utilizando protocolo OAuth 2.0. Com o client_id e client_secret em mãos a requisição ao POST /access_token deve ser feita portando o authorization no Header e o grant_type no corpo da requisição, segue exemplo abaixo.
Nota: O valor do authorization deve ser composto da palavra Basic com o Base64 gerado a partir da concatenação do client_id:client_secret
Contrato
POST /v2/oauth/access-token (formato json)
Headers
Key Value Authorization Basic + Base64 Content-Type application-json Body
{ "grant_type": "client_credentials" }
Exemplo de Requisição
curl --location --request POST 'https://api2.cielo.com.br/v2/oauth/access-token' \
--header 'Authorization: Basic
dERxQUs000FoSDg5dFdpUWM1ejY0REJKc2lJTFpLbzh4TG0zV0p3eHkwRkQ0Y2dZVm46ZVZUVVZJZjFZWDJkOU40M0p4MVZwNGlWVXEzTzluTTR0TGF1UzhZYWo0V1JPcTJFSXU=' \
--header 'Content-Type: application/json' \
--data-raw '{
"grant_type": "client_credentials",
"scopes": "qrcode_write,qrcode_read"
}
Exemplo de Resposta
{
"access_token": "5eb50e6b-2bfc-3a44-b9ba-b9ba75256e7e",
"token_type": "bearer",
"expires_in": 86400
}
Fluxo de geração do Access Token (via format x-www-form-urlencoded)
POST /v2/oauth/token (formato url encoded)
Headers
Key Value Authorization Basic + Base64 Content-Type application-json Body
{ "grant_type": "client_credentials" }
Exemplo de Requisição
curl --location --request POST 'https://api2.cielo.com.br/sandbox/v2/oauth/token' \
--header 'Authorization: Basic
dERxQUs0anFoSDg5dFdpUWM1ejY0REJKc2lJTFpLbzh4TG0zV0p3eHkwRkQ0Y2dZVm46
ZVZUVVZJZjFZWDJkOU40M0p4MVZwNGlWVXEzTzluTTR0TGF1UzhZYWo0V1JPcTJFSXU
=' \
--header 'Content-Type: application/json' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scopes=qrcode_write,qrcode_read'
Exemplo de Resposta
{
"access_token": "8d9529bd-3dcf-3130-82ea-d28712f96de2",
"token_type": "bearer",
"expires_in": 86400
}
Códigos de retorno da API
SUCESSO
Code Nome Descrição 200 Ok A solicitação foi bem sucedida para uma chamada da API, seja GET OU POST . 201 Created A solicitação de criação foi bem sucedida para uma chamada da API do tipo POST
EXCEÇÕES
Code Nome Descrição 400 Bad Request. * A requisição não é valida. Uma ou mais condições dos campos do request não foram atendidas
Lista das condições não atendidas401 Unauthorized Falha na Autenticação do consumidor da API 403 Forbbiden Consumidor da API não possui acesso a determinados recursos 409 Conflict Reenvio da solicitação com informações divergentes. (Ex: Solicitação de pagamentos com CPF distintos) 412 Precondition Failed 001: Chave expirada
002: QRCode dinâmico esperado422 Unprocessable Entity A requisição é valida, porém não foi possivel realizar o processamento. 500 Internal Server Error Erro interno da aplicação. Normalmente provinientes de infraestrutura
Geração da chave pública
O parceiro precisa chamar a API/publicKey para obter a chave pública necessária para o envio dos dados do cartão de forma criptografada.
Contrato
GET /padraoq/v1/publicKey
Headers
Key Value Authorization Bearer = access_token (gerado pela API de Access Token)
Exemplo de Requisição
curl --location --request GET 'https://api2.cielo.com.br/sandbox/padraoq/v1/publicKey' \
--header 'Authorization: Bearer 83247803-585d-379d-8ea4-19dfcf4c3f75'
Exemplo de Resposta
{
"public_key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmH7eS0n6yQSylMDZnY3c/mbDUUEJfyslrilslJKpDRG3m2YaCZdtwo5LahEUWshhBc8jckRkCyqDVVfBJ7WQN1Z1hN0ifCK8mfnh/2SAYGc4e8qydcWT64AVQo+Kay201cRuHeCt1Iyuhi5tOxTF2satd40+8eMkqiVJdhJ0Sjc1ZRezFSo96XReiT8eYz/4Rhubq1BPISlNXqqls3NuPMCxY6IFOLmjTi3xEIdcYtUT5MCfXBG4Rz6rMNrQ7JRAfEOIdvcAt++ygV9ilUxtETn+OKKNDcEUKzXM3Taop8vFXD8HWKzfmlA/usxeKxiI6eTrcWCmrVMQ2Yvf4RSU4wIDAQAB",
"key_id": "1b59934a-7eaa-4f90-a391-585de0ffc550",
"expires_in": 35853
}
Criptografia
Exemplo do código Java para encriptrar o cartão através da chave pública:
import java.security.PublicKey;
import java.util.Base64;
import javax.crypto.Cipher;
public class EncriptCard {
public String encript(PublicKey key, String cardNumber) {
try {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedBytes =
cipher.doFinal(cardNumber.getBytes());
String encryptedCard =
Base64.getEncoder().encodeToString(encryptedBytes);
return encryptedCard;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
Fluxo de pagamento
O recurso POST /payment/card é responsável por efetuar o pagamento com base nos dados contidos no payload da requisição. No header da requisição é necessário informar o Authorization. O corpo da requisição é composto por dados provenientes do aplicativo e do QR Code.
Observação: é possível gerar cartões para teste através da ferramenta (https://namso-gen.com/), para isso é necessário apenas informar os 6 primeiros dígitos de um cartão válido. Através da ferramenta (https://8gwifi.org/RSAFunctionality?keysize=2048), é possível simular a criptografia do
"card_data"
feita utilizando o retorno obtido do GET /publicKeys.
Contrato
POST /padraoq/v1/payment/card
Headers
Key Value Authorization Bearer = access_token (gerado pela API de Access Token) Content-Type application/json
{
"key_id":"string",
"card_data":"string",
"payee_document":"string",
"payee_name":"string",
"authorization_token":"string",
"qrcode":"string"
}
Propriedade | Descrição | Tipo | Obrigatório |
---|---|---|---|
key_id |
Identificador da chave de criptografia utilizada para criptografar o cartão. Retornado pelo recurso GET /publicKey | String | Sim |
card_data |
Dados do cartão criptografado pela chave publica, Veja layout | String | Sim |
payee_document |
CPF ou CNPJ do pagador (usuário logado na wallet) | String | Sim |
payee_name |
Nome do pagador (usuário logado na wallet) | String | Não |
authorization_token |
Token de autorização do usuário gerada pelo emissor (suporte ao pagamento no débito) * para uso futuro | String | Não |
qrcode |
String do QR Code capturado pela wallet | String | Sim |
Exemplo de Requisição
curl --location --request POST 'https://api2.cielo.com.br/sandbox/padraoq/v1/payment/card' \
--header 'Authorization: Bearer 83247803-585d-379d-8ea4-19dfcf4c3f75' \
--header 'Content-Type: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
"key_id": "001",
"card_data": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmeiLngFr9h0npwe6D3ArSi10ZgdOCUCsUYT12KMuYsxImzwe9aGX8XXvzEF60E600ZjdvmYU64UnZKgfbttwNi+Tl7ZcB2cnS/oJMrfA0AbRHukJnL/fFsziHOjv0A1xRcE0ZbJRkob5A5s4GenF+jv/xCTOoIetFimZHZDiPPFux2NyrL3ZqSs7F4XJZvo2zPfCVlAcnEbVf+8vWX3goP2TEuAqZtBT543wIDAQAB+dqSzZSqZolYU1sjV7s8FzsjZYqo+AjM8BMuPlMoPEuBqgRFm4fSRIpeJIr0G9FokSU3X6MAZTC7n3YePHFsFmGxPTrKpEFrp8s28f1qMP5suTsA”,,
"payee_document": "25617535811",
"payee_name": ""Alexandre Marcelino",
"authorization_token": null,
"qr_code": ""00020101021226580014br.com.padraoq01160010000244470001020862000092030400015204030053039865406123.995802BR5909POSTO_ABC6010Barueri_SP62200516100023071641629281600014br.com.padaoq0112230120171643020400040302020402010502038204010063
041213""
}'
Exemplo de Resposta
{
"reference_label": "230120171643",
"merchant_id": "0020060049139200",
"terminal_id": "62000092",
"authorization_code": "031581",
"authentication_code": "null",
"host_nsu": "730025",
"terminal_nsu": "730025",
"timestamp": "160620143832",
"card_scheme": "Master"
}
Layout - Card Data
Observação: Encriptar todas as informações da tag “cardData” inclusive com as aspas “ { } “.
{
"card_number":"4984XXXXXX4106",
"card_cvv":"123",
"card_holder_name":"Teste",
"card_expiration_date":"0127"
}
Códigos de sucesso Payment
HTTP STATUS CODE Nome Descrição 200 Ok A solicitação foi bem sucedida para uma chamada da API, seja GET OU POST .
Códigos de erro Payment
Ao realizar uma requisição para algum dos recursos da API e os dados não forem satisfatórios para realizar o procedimento, será devolvido uma resposta contendo no corpo as seguintes informações:
{
"code": "422.007",
"description": "Generic error (0xd4596b31) "
}
Onde:
• code: Código de resposta interno da aplicação.
• description: Descrição sobre o problema encontrado no processo.
A tabela abaixo apresenta os possíveis cenários de validações realizados pela API durante o fluxo de pagamento.
HTTP STATUS CODE CODE DESCRIPTION CAUSE(S) 400 412.101 O campo ‘key_id’ é obrigatório O campo key_id enviado no body da requisição está em branco. 400 412.102 O campo ‘card_data’ é obrigatório O campo card_data enviado no body da requisição está em branco. 400 412.104 O campo ‘qr_code’ é obrigatório O campo qr_code enviado no body da requisição está em branco. 400 412.156 O CPF enviado não é válido O campo payee_document enviado no body da requisição não é um CPF válido. 400 412.157 O CNPJ enviado não é válido O campo payee_document enviado no body da requisição não é um CNPJ válido. 400 422.002 QRCode inválido O QRCode informado contém campos em que o tamanho da posição está maior que a estabelecida pelo layout. 422 412.155 O documento do cliente não foi reconhecido. Ele dever ser um CPF ou CNPJ válido O campo payee_document enviado no body da requisição não é um CPF ou CNPJ. 422 422.001 O produto não foi encontrado A fonte de pagamento informada pela aplicação não foi mapeada. 422 422.002 QRCode inválido A aplicação não pôde fazer o parse dos dados do QRCode. O QRCode informado contém campos em que a posição não existe no layout. Não foi encontrado o registro de geração do QRCode informado no banco de dados. O valor informado para o “Identificador do Pagamento” (reference label) é divergente do enviado na solicitação do pagamento. O valor informado para o “Valor da Transação” (transaction amount) é divergente do enviado na solicitação do pagamento. O valor informado para o “Número do Terminal Lógico” (id terminal) é divergente do enviado na solicitação do pagamento. O valor informado para a “Data da Transação” (transaction date) é divergente do enviado na solicitação do pagamento. O valor informado para o “Número do EC” (id merchant) é divergente do enviado na solicitação do pagamento. O valor informado para o “Nome do EC” (merchant name) é divergente do enviado na solicitação do pagamento. O valor informado para o “Código da Categoria do EC” (merchant category code) é divergente do enviado na solicitação do pagamento. O valor informado para o “Cidade do EC” (merchant city) é divergente do enviado na solicitação do pagamento. O valor informado para o NSU é divergente do enviado na solicitação do pagamento. 422 422.003 QRCode expirado Ocorre quando a data de pagamento (timestamp) do QR Code excedeu o tempo limite de expiração. 422 422.004 Dados de cartão inválido O campo card_number do cartão informado não é numérico. O campo card_holder_name do cartão informado está em branco. O campo card_expiration_date do cartão informado está em branco. O campo card_cvv do cartão informado contém mais de 4 caracteres. O campo card_expiration_date do cartão informado contém mês/ano menor que o atual. Ao realizar uma integração externa para tokenizar o cartão houve um problema. 422 422.006 Erro no autorizador ou emissor (código de retorno) Ao realizar uma integração externa para efetuar o pagamento, ele não foi efetuado com sucesso. Obs.: A informação entre parênteses é o código retornado pelo sistema externo, identificando o problema. 422 422.007 Erro genérico (0xd4596b31) O campo wallet enviado no header da requisição não foi encontrado no banco de dados. Erro genérico (0x868cb5bb) As chaves de criptografia não foram encontradas no banco de dados. Erro genérico (0x14382170) Não foi possível decodificar a chave pública. Não foi possível decodificar os dados do cartão. Erro genérico (0x7f4659a6) Não foi possível descriptografar os dados do cartão, pois a chave pública ou privada é inválida. Erro genérico (0x342b3019) Não foi possível descriptografar os dados do cartão. Erro genérico (0xf1fe2e5a) A aplicação não pôde converter o JSON informado com os dados do cartão. Erro genérico (0x2b31d726) O número do cartão informado corresponde ao BIN da Caixa, porém a carteira enviada no header da requisição não é Caixa. Erro genérico (0xd8dcc723) A aplicação não pôde mapear o Tipo de Tecnologia informado. Erro genérico (0x3a1a3fb7) A aplicação não pôde converter o JSON com os dados do cartão tokenizado. Erro genérico (0x2172d473) Ao realizar uma integração externa para efetuar o pagamento houve um problema. Erro genérico (0x707a0b47) A aplicação não pôde converter o CAVV (cipheredCryptogram) para o formato solicitado na integração externa. Erro genérico (0xddd30422) A carteira digital da requisição é diferente da que negou o pagamento. Erro genérico (0xljg30422) Já existe um pagamento sendo processado. Erro genérico (2eae5a3583) Ao realizar uma integração externa para efetuar o pagamento foi retornado um erro. Erro genérico (0x27d48cd4) Ao realizar uma integração externa para efetuar o pagamento foi retornado um erro. Erro genérico (0x3c10fed2) Ao realizar uma integração externa para efetuar o pagamento foi retornado um erro. 500 422.007 Erro genérico (0x2429cb80) O Tipo de Tecnologia informado pela aplicação não foi encontrado no banco de dados. Erro genérico (0x69ad89d4) O Tipo de Transação informado pela aplicação não foi encontrado no banco de dados. Erro genérico (0x6f566831) O status do pagamento informado pela aplicação não foi encontrado no banco de dados. 500 500.050 Erro interno de sistema Não foi possível descriptografar a chave pública. Data/Hora de expiração da chave pública é menor que a atual. Não foi possível codificar a chave privada. A aplicação não pôde fazer o parse dos dados do QRCode. O valor informado no Point of Initiation Method (posição 01 do QRCode) não existe na aplicação. O Tipo de Transação informado pela aplicação não foi mapeado.
API para realizar parse do QR Code (uso opcional)
Contrato
GET /padraoq/v1/parsedQRCode
Headers
Key Value Authorization Bearer = access_token (gerado pela API de Access Token) Content-Type application/json
Parameter:
qrcode:"00020101021226580014br.com.padraoq011600100002444700010208620000920304000152040
30053039865406123.995802BR5909POSTO_ABC6010Barueri_SP622005161000230716416292816000
14br.com.padraoq0112230120171643020400040302020402010502038204010063041213"
body:
<body vazio>
Response
Observação: stringQrCode está depreciado e será descontinuado.
{
"stringQrCode": null,
"qrcode_data":{
"payload_format_indicator":"01",
"point_of_initiation_method":"12",
"merchant_account_information":{
"gui":"br.com.padraoq",
"id_merchant":"1234567890123456",
"id_terminal":"12345678",
"id_credenciador":"1234",
"instituicao":"12345678",
"tipo_de_conta":"1234",
"agencia":"12345678",
"conta":"12345678901234567890"
},
"merchant_category_code":"0000",
"transaction_currency":"986",
"transaction_amount":"01.00",
"country_code":"BR",
"merchant_name":"Q Café",
"merchant_city":"Brasilia",
"additional_data_field":{
"reference_label":"reference label"
},
"crc16":"AC05",
"unreserved_templates":{
"gui":"br.gov.bcb.spi",
"url_uri":"https://br.gov.bcb.spi/"
},
"payment_information":{
"gui":"br.com.padraoq",
"timestamp":"010220120001",
"modalidade":"0400",
"parcelas":"01",
"tipo_de_transacao":"01",
"fonte_de_dados_do_pagamento":"03",
"campo_livre":"1234567890"
}
}
}
QR CODETM LAYOUT GERADO PELO POS (MODELO NOVO BR CODE +ELO)
Os dados usados para gerar o QRCode para leitura na carteira digital deve seguir como base a especificação “EMVCo-Merchant-Presented-QR-Specification-v1” utilizando os dados abaixo:
Tipo | Descrição |
---|---|
N | Numérico – Valores representados por dígitos de “0” a “9” |
ANS | Alfanumerico especial – Valores alfanuméricos especiais contem (96) caracteres no total, incluindo números e pontuação. |
ID | Nome do Campo | Tam | Tipo | Descrição |
---|---|---|---|---|
00 | Payload Format Indicator | 02 | N | Versão dos dados do QR Code utilizadana geração do código. Fixo “01”. |
01 | Point of Initiation Method | 02 | N | Identificador do método QR Code gerado: Fixo “12” – QR Code Dinâmico. |
26 | Merchant Account Information | Até 76 | ANS | Informações do Estabelecimento |
26 | 00 - Globally Unique Identifier | 14 | ANS | Identificador global: usar fixo “br.com.padraoq”. |
26 | 01 - Merchant Account Information | 16 | N | Numero do Estabelecimento Comercial. |
26 | 02 - Logic Number | 08 | N | Número Logico do terminal. |
26 | 03 - ID Credenciador | 04 | N | Identificação do credenciador. Fixo “0001”. |
26 | 04 - CPF/CNPJ | Até 14 | N | Número do CPF ou CNPF do EC. |
27 | ELO - Merchant Account Information | Até 99 | ANS | Informações do Estabelecimento OBS: Apesar de serem dados específicosda ELO, estem devem estar presentes emtodo as as transações de QRCode “BR Code V3 Aliança + Elo”. |
27 | 00 - Globally Unique Identifier | 10 | ANS | Identificador global: usar fixo “BR.COM.ELO”. |
27 | 01 - Acquirer ID | 04 até 07 | ANS | Código do Credenciador atribuído pela Elo. No caso da Cielo utilizar o valor fixo “8384”. |
27 | 02 - Merchan Identification Number | 15 | N | Número do Estabelecimento Comercial:utilizar apenas os 15 ultimos dígitos. |
27 | 03 - Terminal ID | 08 | ANS | Número Lógico do terminal. |
27 | 04 - Terminal Device Type | 01 | ANS | Tipo de device/ambiente exibindo o QR Code: “A” – ATM “C” – Celular (Mobile) “E” – E-commerce “M” – POS Mobile “P” – POS padrão “T” – TEF |
52 | Merchant Category Code | 04 | N | Ramo de atividade do Estabelecimento (MCC). |
53 | Transaction Currency | 03 | N | Código de origem da Moeda. |
54 | Transaction Amount | Até 13 | ANS | Valor da transação. Ex: “123.99” |
58 | Country Code | 02 | ANS | Código do país: Fixo “BR”. |
59 | Merchant Name | Até 25 | ANS | Nome Fantasia do Estabelecimento. |
60 | Merchant City | Até 15 | ANS | Cidade do Estabelecimento. |
61 | Código Postal | 08 | N | CEP da localidade do terminal retirado do Bit 63 subcampo 25 da inicialização. Para o formato de CEP brasileiro, utilizar 8 dígitos, sem hífen. |
62 | Additional Data Field | Até 29 | ANS | Campo de dados Adicionais |
62 | 05 - Reference Label | Até 25 | ANS | Identificação do QR Code. Código único da transação, extraído BIT 31. |
81 | Transaction informations | Até 99 | ANS | Informações da transação |
81 | 00 - Globally Unique Identifier | 14 | ANS | Identificador global: usar fixo “br.com.padraoq”. |
81 | 01 - Transaction Date | 12 | N | Data e hora da transação (DDMMAAHHmmss). |
81 | 02 - Modalidade | 04 | H | Códigos fixos em hexa para os fluxos de produto Matriz e produto Secundário: Débito à Vista (Fluxo 08): 0001Crédito à Vista (Fluxo 04): 0002 Crédito parcelado Loja (Fluxo 06): 0004 Crédito parcelado ADM (Fluxo 05): 0008 Voucher (Fluxo 13): 0010 Frotas (Fluxo 32): 0020 Pré-Autorização (Fluxo 07): 0040 Crediário Simulação (Fluxo 11): 0200 Crediário Contratação (Fluxo 43): 0400 Outro: 0000 |
81 | 03 - Payment Installments | 02 | N | Número de parcelas. |
81 | 04 - Transaction Type | 02 | N | Tipo da transação: “01” – Venda; “02” – Cancelamento. |
81 | 05 - Fonte de Dados do Pagamento | 02 | N | Fixo:“03” – QR Code |
81 | 06 - NSU da Transação Original | Até 12 | N | NSU da transação atual. |
81 | 50 - RUF | Até 19 | ANS | RUF |
82 | Unreserved Templates – Elo Transaction Detail | 56 até 88 | ANS | ELO - Informações da transação OBS: Apesar de serem dados específicosda ELO, estem devem estar presentes em todoas as transações de QRCode “BR Code V3 Aliança + Elo”. |
82 | 00 - Globally Unique Identifier | 10 | ANS | Identificador global QR code compartilhado: valor fixo igual a “BR.COM.ELO”. |
82 | 01 - Transaction Date | 10 | N | Data e hora da transação(MMDDHHmmss). |
82 | 02 - Product Type & Installments | 03 | ANS | Posição [1] Produto da transação: “C” – Crédito – Fluxos: 04, 06, 05, 11 e 43 “D” – Débito – Fluxo: 08 “V” – Voucher – Fluxo: 13 e 32 “O” – Outros – Outros fluxos não previstos. Posição [2,3] Quantidade de parcelas. Para transações à vista campo deve ser enviado com o valor igual a “00”. |
82 | 03 - Transaction Type | 02 | N | Tipo da transação: “01” – Compra “02” – Cancelamento “03” – Compra com Saque “04” – Saque |
82 | 04 - Transaction ID | 06 | N | NSU da transação atual. |
82 | 05- Original Transaction ID | 06 | N | Identificador único da Transação original que será cancelada (campo Transaction ID do QR Code usado na transação original). Deve ser apresentado no QR Code usado para iniciar transações de cancelamento. OBS: Somente incluir este campo se for uma transação de cancelamento. |
82 | 06 - Original Transaction Date | 04 | N | Data da transação original, que será cancelada, no formato MMDD. Deve ser enviado para transações de cancelamento OBS: Somente incluir este campo se for uma transação de cancelamento. |
82 | 07 - Original Transaction Terminal ID | 08 | ANS | Número Lógico do terminal. Identificação do terminal do estabelecimento comercial utilizado na transação original. Deve ser enviado para transações de cancelamento. OBS: Somente incluir este campo se for uma transação de cancelamento. |
82 | 08 - Elo QR Code Version | Até 03 | N | Identificação da versão do QR Code Elo utilizado na transação.Para este documento em questão, utilizar o valor igual a “3”. |
63 | CRC16 | 04 | ANS | Checksum calculado dos dados QR Code(Vide Documentação “EMV-QRCode” e “ISO13239”). |
Ex.:
DADOS:
00020101021226760014br.com.padraoq0116123456789012000102082009130003040001041 40306501400093927580010BR.COM.ELO010483840215234567890120001030820091300040 1P520400005303986540525.005802BR5905CIELO6014SANTOANDRE SP61080600000062200516040310245460330981740014br.com.padraoq01120203211002180 20400020302010402010502030606069646500082560010BR.COM.ELO011003021002180203 C0003020104060696460801363044847
QRCODE:
QR CODETM LAYOUT GERADO PELO POS (MODELO NOVO BR CODE)
Os dados usados para gerar o QRCode para leitura na carteira digital deve seguir como base aespecificação “EMVCo-Merchant-Presented-QR-Specification-v1” utilizando os dados abaixo:
Tipo | Descrição |
---|---|
N | Numérico – Valores representados por dígitos de “0” a “9” |
ANS | Alfanumerico especial – Valores alfanuméricos especiais contem (96) caracteres no total, incluindo números e pontuação. |
ID | Nome do Campo | Tam | Tipo | Descrição |
---|---|---|---|---|
00 | Payload Format Indicator | 02 | N | Versão dos dados do QR Code utilizada na geração do código. Fixo “01”. |
01 | Point of Initiation Method | 02 | N | Identificador do método QR Code gerado: Fixo “12” – QR Code Dinâmico. |
26 | Merchant Account Information | Até 76 | ANS | Informações do Estabelecimento |
26 | 00 - Globally Unique Identifier | 14 | ANS | Identificador global: usar fixo “br.com.padraoq”. |
26 | 01 - Merchant Account Information | 16 | N | Numero do Estabelecimento Comercial. |
26 | 02 - Logic Number | 08 | N | Número Logico do terminal. |
26 | 03 - ID Credenciador | 04 | N | Identificação do credenciador. Fixo “0001”. |
26 | 04 - CPF/CNPJ | Até 14 | N | Número CPF/CNPJ do merchant |
52 | Merchant Category Code | 04 | N | Ramo de atividade do Estabelecimento (MCC). |
53 | Transaction Currency | 03 | N | Código de origem da Moeda. |
54 | Transaction Amount | Até 13 | ANS | Valor da transação. Ex: “123.99” |
58 | Country Code | 02 | ANS | Código do país: Fixo “BR”. |
59 | Merchant Name | Até 25 | ANS | Nome Fantasia do Estabelecimento. |
60 | Merchant City | Até 15 | ANS | Cidade do Estabelecimento. |
62 | Additional Data Field | Até 29 | ANS | Campo de dados Adicionais |
62 | 05- Reference Label | Até 25 | ANS | Identificação do QR Code. Código único da transação, extraído BIT 31. |
81 | Transaction informations | Até 99 | ANS | Informações da transação |
81 | 00 - Globally Unique Identifier | 14 | ANS | Identificador global: usar fixo “br.com.padraoq”. |
81 | 01 - Transaction Date | 12 | N | Data e hora da transação(DDMMAAHHmmss). |
81 | 02 - Main Product | 04 | N | Código do produto Matriz. |
81 | 03 - Payment Installments | 02 | N | Número de parcelas. |
81 | 04 - Transaction Type | 02 | N | Tipo da transação: “01” – Venda; “02” – Cancelamento. |
81 | 05 - Fonte de Dados do Pagamento | 02 | N | Fixo: “03” – QR Code |
81 | 06 - NSU Host Original | Até 12 | N | NSU da transação original |
81 | 50 - Campo livre/RUF | Até 19 | ANS | Campo de utilização Livre (RUF) |
63 | CRC16 | 04 | ANS | Checksum calculado dos dados QR Code(Vide Documentação “EMV-QRCode” e “ISO13239”). |
Ex:
DADOS:
00020101021226760014br.com.padraoq0116001000024447000102086200009203040001041 4010270580001915204030053039865406123.995802BR5909POSTO_ABC6010Barueri_SP6220 0516100023071641629281720014br.com.padraoq011223012017164302040004030202040201 05020306020050020063040CE6
QR CODE:
Mapa TAGs geradas em uma transação via QRCode:
00020101021226760014br.com.padraoq0116001000024447000102086200009203040001041 4010270580001915204030053039865406123.995802BR5909POSTO_ABC6010Barueri_SP6220 0516100023071641629281720014br.com.padraoq011223012017164302040004030202040201 05020306020050020063040CE6
ID | Nome do Campo | Tam | Tipo | Descrição | Parse |
---|---|---|---|---|---|
00 | Payload Format Indicator | 02 | N | Versão dos dados do QR Code utilizada na geração do código. Fixo “01”. | 01 |
01 | Point of Initiation Method | 02 | N | Identificador do método QR Code gerado: Fixo “12” – QR Code Dinâmico. | 12 |
26 | Merchant Account Information | 76 | ANS Informações do Estabelecimento | ||
26 | 00 - Globally Unique Identifier | 14 | ANS | Identificador global: usar fixo “br.com.padraoq”. | br.com.padraoq |
26 | 01 - MerchantAccount Information | 16 | N | Numero do EstabelecimentoComercial. | 0010000244470001 |
26 | 02 - Logic Number | 08 | N | Número Logico do terminal. | 62000092 |
26 | 03 - ID Credenciador | 04 | N | Identificação do credenciador. Fixo “0001”. | 0001 |
26 | 04 - CPF/CNPJ | Até 14 | N | Número CPF/CNPJ do merchant | 01027058000191 |
52 | Merchant Category Code | 04 | N | Ramo de atividade do Estabelecimento (MCC). | 0300 |
53 | Transaction Currency | 03 | N | Código de origem da Moeda. | 986 |
54 | Transaction Amount | Até 13 | ANS | Valor da transação.Ex: “123.99” | 123.99 |
58 | Country Code | 02 | ANS | Código do país: Fixo “BR”. | BR |
59 | Merchant Name | Até 25 | ANS | Nome Fantasia do Estabelecimento. | POSTO_ABC |
60 | Merchant City | Até 15 | ANS | Cidade do Estabelecimento. Barueri_SP | |
62 | Additional Data Field | Até 29 | ANS | Campo de dados Adicionais | |
62 | 05 - Reference Label | Até 25 | ANS Identificação do QR Code. Código único da transação,extraído BIT 31. | 1000230716416292 | |
81 | Transaction informations | Até 99(72 nesse exemplo | ANS | Informações da transação | |
81 | 00 - Globally Unique Identifier | 14 | ANS | Identificador global: usar fixo “br.com.padraoq”. | br.com.padraoq |
81 | 01 - Transaction Date | 12 | N | Data e hora da transação(DDMMAAHHmmss). | 230120171643 |
81 | 02 - Main Product | 04 | N | Código do produto Matriz. | 0004 |
81 | 03 - Payment Installments | 02 | N | Número de parcelas. | 02 |
81 | 04 - Transaction Type | 02 | N | Tipo da transação: “01” – Venda; “02” – Cancelamento. |
01 |
81 | 05 - Fonte de Dados do Pagamento | 02 | N | Fixo:“03” – QR Code | 03 |
81 | 06 - NSU Host Original | Até 12 | N | NSU da transação original | 00 |
81 | 50 - Campo livre/RUF | Até 19 | ANS | Campo de utilização Livre (RUF) | 00 |
82 | RUF | Até 99 | ANS | RUF | |
82 | 01 - RUF | Até 95 | ANS | RUF | |
63 | CRC16 | 04 | ANS | Checksum calculado dos dados QR Code (Vide Documentação “EMV-QRCode” e “ISO13239”). | 8F04 |
QR CODETM LAYOUT GERADO PELO POS (MODELO ANTIGO)
Os dados usados para gerar o QRCode para leitura na carteira digital deve seguir como base a especificação “EMVCo-Merchant-Presented-QR-Specification-v1” utilizando os dados abaixo:
Type | Description |
---|---|
N | Numeric - Value represented by digits 0 from 9 |
ANS | Alphanumeric - contain 96 characters including numbers and accents |
ID | Field name | Size | Type | Description |
---|---|---|---|---|
00 | Payload format indicator | 02 | N | QR Code data version used at code generation. Fixe”01” |
01 | Point of initiation Method | 02 | N | QR Code method identifier: Fixed “12” Dynamic QR Code |
26 | Merchant Account Information | up to 56 | ANS | Merchant information |
26 | 00 - Globaly Unique identifier | up to 32 | ANS | Global identifier. Fixed “Cielo” |
26 | 01 - Merchant Account information | 16 | N | Merchant number |
26 | 02 - Logic Number | 08 | N | Terminal Logical Number |
52 | Merchant Category Code | 04 | N | Merchant Category Code (MCC) |
53 | Transaction Currency | 03 | N | Transaction Currency |
54 | Transaction Amount | 12 | N | Transaction Amount |
58 | Contry Code | 02 | ANS | Country Code. Fixed “BR” |
59 | Merchant Name | up to 25 | ANS | Merchant Name |
59 | Merchant City | up to 15 | ANS | Merchant City |
80 | Transaction Informations | up to 120 | ANS | Transaction Information |
80 | 00 - Globally Unique Identifier | up to 80 | ANS | Global Identifier: Use the fixed URL, including (“”):”https://www.cielo.com.br/qrcode” |
80 | 01 - Transaction ID | 16 | ANS | Unique transaction code |
80 | 02 - Transaction Date | 12 | N | Transaction’s date and time (DDMMYYHHmmss) |
80 | 03 - Main Product | 04 | N | Main Product |
80 | 04 - Sub Product | 04 | N | Sub Product |
80 | 05 - Payment Installments | 02 | N | Payment Installments |
80 | 06 - Transaction Type | 02 | N | Type of transaction: “01” - Payment Request “02” - Cancellation request |
63 | CRC | 04 | ANS | Calculated checksum of QrCode data (see documentation”EMV-QrCode” and “ISO13239”) |
00020101021226410005Cielo011600100002444720100208201000015204591 2530398654120000000010005802765923CIA BRAS MEIO PAGAMENTO6009SAO PAULO801010033”https://www.cielo.com.br/qrcode”01161209676128919 232021210041809451203041000040400010502010602016304**A177**
ID | Nome do Campo | Tam | Tipo | Descrição | Parse |
---|---|---|---|---|---|
00 | Payload Format Indicator | 02 | N | Versão do QR Code valor fixo “01” | 01 |
01 | Point of Initiation Method | 02 | N | Identificador do método do QR Code:Fixo “12” – QR Code dinâmico | 12 |
26 | Merchant Account Information | Up to 56 | ANS | Informações do estabelecimento | |
26 | 00 - Globally Unique Identifier | Up to 32 | ANS | Identificador Global: valor fixo “Cielo” | Cielo |
26 | 01 - Merchant Account Information | 16 | N | Número do estabelecimento | 0010000244472010 |
26 | 02 - Logic Number | 08 | N | Número do terminal | 20100001 |
52 | Merchant Category Code | 04 | N | MCC | 5912 |
53 | Transaction Currency | 03 | N | Código da moeda | 986 |
54 | Transaction Amount | 12 | N | Valor da transação | 000000001000 |
58 | Country Code | 02 | ANS | Código do País. Fixo “BR” | 76 |
59 | Merchant Name | Up to 25 | ANS | Nome do estabelecimento | CIA BRAS MEIO PAGAMENTO |
60 | Merchant City | Up to 15 | ANS | Cidade do estabelecimento | SAO PAULO |
80 | Transaction informations | Up to 120 | ANS | Informações da transação | |
80 | 00 - Globally Unique Identifier | Up to 80 | ANS | Url de identificação global:fixo: “https://www.cielo.com.br/qr_code” | “https://www.cieloid.com.br/qr_code” |
80 | 01 - Transaction ID | 16 | N | Código único da transação | 12096761 28919232 |
80 | 02 - Transaction Date | 12 | N | Data da transação (DDMMAAHHmmss) | 100418094512 |
80 | 03 - Main Product | 04 | N | Produto Principal | 1000 |
80 | 04 - Sub Product | 04 | N | Produto secundário | 0001 |
80 | 05 - Payment Installments | 02 | N | Número de parcelas | 01 |
80 | 06 - Transaction Type | 02 | N | Tipo da transação: “01” – Pagamento “02” – Cancelamento |
01 |
63 | CRC | 04 | ANS | checksum da string do QR Code | A177 |
CALLBACK API PARA DESFAZIMENTO (uso opcional)
Existe uma API de call-back para informar a carteira sobre um defazimento.
O parceiro precisa desenvolver uma API para receber as informações de desfazimento seguindo o format abaixo e fornecendo a url para envio das informações:
Body:
{
"transactionDate": "string",
"terminalLogicalNumber": "string",
"authorizationCode": “string",
"nsu": "string",
“merchantId“: 0,
“amount“: 0,
“originalTransactionType”: 0,
“statusCode“: 0
}
Propriedade | Descrição | Tipo | Tamanho | Obrigatório |
---|---|---|---|---|
transactionDate |
Data da transação (extraída do QRCode) | Texto | 36 | Sim |
terminalLogicalNumber |
Número lógico do POS | Texto | 40 | Sim |
authorizationCode |
Código de autorização da transação | Texto alfanumérico | 6 | Sim |
nsu |
Número Sequencial Único | Texto | 50 | Sim |
merchantId |
Identificador da loja na Cielo (extraído do QRCode) | Número | 36 | Sim |
amount |
Valor da transação | Número | 15 | Sim |
originalTransactionType |
Transação de origem. Comunica o desfazimento de uma transação do /payments. | Número | 1 | Sim |
statusCode |
1 - Pagamento / 2 - Cancelamento / 3 - Desfazimento - Quando desfazimento - statusCode = 3 | Número | 1 | Sim |
API request (exemplo):
{
"transactionDate": "2018-10-29T14:35:12.000+0000",
"terminalLogicalNumber": "78257509",
"authorizationCode": "019387",
"nsu": "572061",
“merchantId“: 1000000000,
“amount“: 82.90,
“originalTransactionType”: 1,
“statusCode“: 3
}