Documentação Cielo LIO
Nessa documentação você tem acesso a todas as informações sobre a plataforma Cielo LIO e boas práticas para o desenvolvimento e modelos de integração disponíveis para complementar o negócio de seu cliente.
O objetivo dessa documentação é facilitar o processo de desenvolvimento fornecendo os materiais necessários para realizar a integração com a Cielo LIO e todos os conceitos sobre a Cielo Store, a loja de aplicativos da Cielo disponível na Cielo LIO
Visão Geral da Plataforma
Cielo LIO
É uma plataforma aberta que fornece controle e gestão de negócios indo além de um sistema de pagamentos tradicional. Essa solução suporta aplicativos desenvolvidos para sistema Android, possibilitando que desenvolvedores parceiros possam criar aplicativos especializados para diversos segmentos e qualquer porte de cliente.
A LIO ON possui algumas funcionalidades exclusivas como por exemplo:
Impressora térmica: o cliente poderá ter a 1ª e 2ª via impressa após o pagamento realizado. Além disso, as aplicações parceiras poderão utilizar os métodos disponíveis da impressora para imprimir dados importantes ou necessários para o negócio do cliente.
Especificação da Bobina: Papel Azul 48 gramas, Comprimento: 12 metros, Diâmetro máximo: 30 milímetros, Largura: 57 milímetros.
NFC: tecnologia presente permitindo o pagamento utilizando cartões com tecnologia contactless.
Arquitetura
Sobre
A plataforma Cielo LIO é baseada em Android que consiste em:
- Uma loja de aplicativos Cielo Store para os desenvolvedores publicarem seus aplicativos e os disponibilizarem para os estabelecimentos comerciais (lojistas).
- Uma plataforma com arquitetura em nuvem e APIs REST que permite a integração com sistemas de automação comercial de parceiros. Acesse Documentação da Integração Remota
- Um SDK para desenvolvimento em Android, de forma que aplicativos de parceiros possam se integrar com as funcionalidades de pagamento da Cielo LIO. Acesse Documentação da Integração Local
Modelos de integração com a plataforma Cielo LIO
Integração Remota | Cielo LIO Order Manager
Conjunto de APIs que permitem que o cliente continue utilizando sua solução de PDV / Automação Comercial com todas as funcionalidades. No momento de realizar o pagamento, ocorre a integração com o gerenciador de pedidos (Order Manager) da Cielo LIO, de forma rápida, simples e segura. Ir para integração remota
Integração Local | Cielo LIO Order Manager SDK
A Cielo disponibiliza um SDK com base na Cielo LIO Order Manager API que permite ao desenvolvedor e parceiro Cielo LIO integrar em sua aplicação as funcionalidades da Cielo LIO. Ir para integração local
Serviços periféricos
A Cielo LIO também se integra com os seguintes periféricos de hardware:
Impressoras Bluetooth
É possível conectar a Cielo com impressoras bluetooth para realizar a impressão de recibos e outras informações importantes.
Já existem parceiros que estão utilizando impressoras Bluetooth das marcas Zebra, Datex, Leopardo integradas com a Cielo LIO
Todos os protocolos de comunicação e pareamento ficam sob responsabilidade do aplicativo do parceiro.
Leitores de RFID
Já existem parceiros que estão utilizando leitores RFID em suas soluções.
Todos os protocolos de comunicação e pareamento ficam sob responsabilidade do aplicativo do parceiro.
Especificações técnicas do hardware da Cielo LIO
A plataforma Cielo LIO teve seu sistema operacional próprio baseado em Android. Confira abaixo a tabela com as especificações técnicas da Cielo LIO:
![]() |
![]() |
|
---|---|---|
Versão | LIO V2 | LIO V3 |
Sistema operacional | Android OS Cielo 6.0 (Marshmallow) | Android 7.1 (Nougat) |
Memória | 2GB RAM | 1GB RAM |
Armazenamento | 16 GB | 8 GB |
Dual Chip | - | - |
Frequência | 2.4 GHz | 2.4GHz + 5.0 GHz |
Tipo do SIM Card | micro SIM (3FF) | 1 SIM card (2FF) + ESIM |
Frequência GSM Mhz | Quad-Band 850/900/1800/1900 | Quad-Band |
Tamanho em polegadas | 5.5” | 5” |
Tipo de tela | AMOLED | AMOLED |
Resolução da tela | 720 x 1280 | 720 x 1280 |
Densidade de pixels | 267 ppi | 267 ppi |
Câmera | 8 Mega Pixels | 5 Mega Pixels |
Resolução da câmera | 4160 x 3120 pixels | 4160 x 3120 pixels |
Flash | Flash LED | Flash LED |
USB | USB 2.0 Micro-B (Micro-USB) Somente Energia | USB Tipo C |
Bluetooth | Versão 4.0 com A2DP/LE | Versão 4.2 |
WiFi | 802.11 b/g/n (2.4GHz) | 802.11a/b/g/n(2.4GH+5.0GHz) |
GPS | A-GPS | GPS + A-GPS, Glonass |
Sensores | Acelerômetro, Proximidade e Luminosidade | Acelerômetro, Prox. e Lumin |
Saída de áudio | Audio Jack 3.5mm | Audio Jack 3.5mm |
Peso | 507 g | 417 g |
Altura | 46mm | 70mm |
Largura | 81mm | 82mm |
Comprimento | 228mm | 205mm |
Rotação de tela na Cielo LIO
Na LIO é possível controlar a orientação da tela. Por padrão, a orientação da tela exibida é livre e definida de acordo com o acelerômetro do equipamento.
Caso o desenvolvedor deseje controlar e usar de forma personalizada a orientação de tela da Cielo LIO, este deverá utilizar de acordo com a documentação do Android.
Acesse o item: android:screenOrientation para obter maiores informações.:
Atenção: Documentação Oficial do Android
Dados Móveis na Cielo LIO
A Cielo LIO já vem configurada com um SIM Card. A operadora do SIM Card é definida de acordo com o endereço de cadastro do estabelecimento comercial.
A Cielo envia o SIM Card da melhor operadora de acordo com o endereço de cadastro da LIO solicitada.
Esse SIM Card permite a conexão com a tecnologia 3G da Cielo LIO e possui um pacote de dados ilimitado.
Dicas para desenvolvedores
O guia abaixo fornece as informações necessárias para ajudar os desenvolvedores a integrar ou desenvolver seus aplicativos na plataforma Cielo LIO da melhor maneira possível, de modo a oferecer uma experiência excelente para os estabelecimentos comerciais.
Recomenda-se a leitura detalhada na documentação da Cielo LIO presente no Portal de Desenvolvedores. Essa documentação reúne informações importantes para questões de simplicidade moderada.
Melhores práticas com a plataforma Cielo LIO
Segurança de dados e Privacidade
- Proteja os dados confidenciais de clientes e funcionários. Não exponha publicamente nomes, endereços ou números de telefone.
- Nunca exponha tokens de autenticação ou senhas de qualquer tipo.
- O parceiro deve fornecer os seus dados de suporte para que os estabelecimentos comerciais (lojistas) entrem em contato no caso de problemas e/ou dúvidas.
Rate Limiting
- As solicitações da Automação Comercial ou PDV devem ser escalonadas o máximo possível para evitar rajadas de alto volume de tráfego.
- “Cache” seus próprios dados quando você precisar armazenar valores especializados ou revisar rapidamente conjuntos de dados muito grandes.
- Não crie multi-thread com chamadas POST, pois esse comportamento pode criar atrasos sistêmicos devido a deadlocks.
- Minimize o uso de dados. Os estabelecimentos comerciais (lojistas) podem estar utilizando conexão com dados móveis limitados.
Código de Qualidade
Seu aplicativo deve estar em conformidade com as práticas de programação Java e Android convencionais de acordo com as diretrizes para desenvolvedores do Android.
- Princípios de Design Orientado a Objetos (S.O.L.I.D.).
- Diretrizes de estilo Java.
- Entenda a diferença entre
compileSdkVersion
,targetSdkVersion
, eminSdkVersion
. - Aproveite os botões nativos do Android, como os botões “Voltar” e “Início”.
- Otimize as operações visando o baixo consumo da bateria.
- O aplicativo deve atender às necessidades dos estabelecimentos comerciais (lojistas) da Cielo.
- Seu aplicativo deve ter uma boa experiência de ponta a ponta, garantindo a comunicação correta entre todos os fluxos, principalmente os retornos de pagamento da Cielo LIO.
Recursos de imagem
- Os ícones devem estar em conformidade com o dimensionamento padrão do Android
- Seguir o Guideline do Android
Utilização e Usabilidade
- Recomendamos aos desenvolvedores que integrem algum tipo de utilitário de relatório de falhas em seus produtos Android. Isso ajudará você a manter a consciência operacional do seu produto. Sugerimos a utilização do Crashlytics
- Os desenvolvedores podem coletar métricas sobre o uso do seu aplicativo. Isso irá ajudá-los a construir melhores produtos e aumentar a conscientização a respeito de quaisquer questões impactantes.
- Garantir que o aplicativo funcione de forma otimizada, evitando que ocorram crash e demora na resposta por processamento da aplicação. Seu aplicativo será usado em condições de trabalho de ritmo rápido e dinâmico, portanto esforce-se para obter fluxos de trabalho claros, fáceis de usar e robustos, com o mínimo de passos possível.
- O design deve enfatizar clareza e acessibilidade – alto contraste, fontes legíveis, texto grande e entradas.
- Deixar claro os termos de aceite da aplicação e prover o suporte necessário ao usuário no que tange o serviço disponibilizado.
- Se você estiver adaptando um aplicativo desenvolvido para outra plataforma, verifique se ele só inclui recursos e botões relevantes para o usuário da Cielo LIO.
- Se o seu aplicativo incluir um componente voltado para o cliente, seu projeto refletirá sobre o negócio usando seu aplicativo. Essas interfaces devem ser agradáveis e profissionais.
- Recomenda-se a utilização do Material Design para desenvolvimento das aplicações para a Cielo LIO. Esta recomendação tem como objetivo facilitar o uso de boas práticas de design para o desenvolvimento de aplicações móveis.
- Seu aplicativo será usado em condições de trabalho de ritmo rápido e dinâmico. Esforce-se para obter fluxos de trabalho claros, fáceis de usar e robustos, com o mínimo de passos possível.
Desenvolva seu aplicativo para Cielo LIO
Introdução
Com a Cielo LIO é possível que empresas e parceiros tenham seu aplicativo rodando na plataforma da Cielo. Esses aplicativos podem ou não estar integrados com o pagamento, tudo vai depender da finalidade da empresa ou parceiro.
Abaixo, você encontra todas as informações necessárias para desenvolver um aplicativo para a Cielo LIO.
Ambiente de Desenvolvimento
A Cielo recomenda que seja utilizada a IDE do Android Studio (versão 2.2.2 ou superior), visando garantir o funcionamento do aplicativo na plataforma Cielo LIO.
Para mais detalhes sobre a instalação e configuração do Android Studio, clique aqui
Para a criação de um novo projeto no Android Studio, clique aqui
Linguagem de Programação
A Cielo LIO aceita aplicativos desenvolvidos em Java ou Kotlin, como linguagens oficiais. As demais linguagens são permitidas, porém é de responsabilidade do desenvolvedor.
Recomendamos que essas linguagens sejam utilizadas para garantir o funcionamento e facilidade de integração com a Cielo LIO.
Cielo OS
O sistema operacional da plataforma Cielo LIO foi personalizado e, com isso, surgiu o Cielo OS, que é baseado em Android.
Versão target da aplicação
Recomenda-se que o desenvolvedor utilize as versões de sdk mínima 22 e target 27, para garantir compatibilidade com os modelos e versões do Android da LIO.
Bloqueando pagamento fora do Aplicativo
Você poderá configurar seu App na Cielo LIO como um aplicativo padrão, ou seja, você pode deixar o pagamento disponivel apenas para o seu aplicativo, bloqueando pagamentos via interface da Cielo LIO. Para isso, deve submeter o seu app para a CieloStore, solicitando que seja definido como frente de caixa, informando qual Intent e qual nome do parâmetro receberá o valor.
Após a aprovado/certificado, o App estará disponível para ser selecionado com App Padrão de venda e com isso você consegue deixar o pagamento disponivel apenas pelo seu aplicativo
Intent para receber o valor da venda
A Intent informada ao submeter o App, deve ser a tela inicial de venda do seu App.
O parâmetro de valor citado no item anterior, serve para para receber o valor da venda, caso o usuário inicie uma transação usando o App padrão da Cielo, ao invez de usar o App Padrão selecionado.
Esse valor é passado no formato de centavos, sem separação dos decimais. Por exemplo, o valor 152,25 é passado como 15225, ficando por conta do App fazer o tratamento e formatação.
Essa Intent será chamada em dois momentos:
-
Quando o seu app estiver marcado como padrão, e o snpap do Pinpad for conectado.
-
Quando o seu app estiver marcado como padrão, e uma transação for iniciada usando o App Cielo Vender (App padrão vendas da Cielo). Neste cenário o valor digitado no App Cielo Vender será passado como Intent Extra para o seu App.
Caso possua algúma duvida na configuração desse recurso, você pode abrir um ticket em nosso suporte: Clique aqui
Recursos Indisponíveis
Ao personalizar o Android da Cielo LIO, foram removidos alguns recursos para garantir o desempenho e a segurança da plataforma.
Seguem abaixo os recursos removidos da Cielo LIO:
Google Play Services: Todos os serviços, APIs e apps do Google foram removidos do sistema operacional. Consequentemente, não será possível utilizar as bibliotecas que dependem desses recursos do Google.
Componente Webview: Este recurso visual foi removido com o objetivo de garantir a segurança na plataforma e evitar que, a partir dos aplicativos instalados na Cielo LIO, seja possível acessar links e conteúdos externos.
Atenção: A Cielo não permite que o aplicativo do cliente/parceiro seja desenvolvido utilizando o recurso WebView. Esse recurso visual deixa a plataforma da Cielo LIO vulnerável. Caso a aplicação esteja utilizando o WebView, esta não atenderá aos parâmetros de certificação e não será disponibilizada na Cielo Store.
Sugestões de substitutos
Push-Notifications
Recurso exclusivo do Google Services, portanto não está presente na Cielo LIO.
Alternativa: JobScheduler
Descrição: É uma API para agendar vários tipos de trabalhos contra a estrutura que será executada no próprio processo da sua aplicação. Permitindo a cada ciclo de tempo que o aplicativo realize uma busca em nossos serviços de Backend.
O JobScheduler é o mais indicado devido a performance em relação ao uso de bateria, fora as muitas outras opções que ele disponibiliza (Ex: Job rodar somente quando o smartphone estiver carregando).
Referência: Clique aqui
Serviços de Localização (GPS)
Recurso exclusivo do Google Services, portanto não está presente na Cielo LIO.
Alternativa: Location Manager
Descrição: Essa classe fornece acesso aos serviços de localização do sistema. Esses serviços permitem que os aplicativos obtenham atualizações periódicas da localização geográfica do dispositivo ou que iniciem uma Intenção especificada pela aplicação quando o dispositivo entra na proximidade de uma determinada localização geográfica.
Referência: Clique aqui
Serviços de Mapas
Recurso exclusivo do Google Services, portanto não está presente na Cielo LIO.
Alternativa: MapBox
Descrição: Uma plataforma de mapeamento de código aberto para mapas personalizados. Nossas APIs e SDKs são os blocos de construção para integrar a localização em qualquer aplicativo móvel ou web.
Referência: Clique aqui
APKs Removidas do Cielo OS
Abaixo, segue uma tabela com todas as APKs que foram removidas do Cielo OS e que, consequentemente, não estão disponíveis para a Cielo LIO:
BasicSmsReceiver | FileManager | PhaseBeam |
Browser | Galaxy4 | QuickSearchBox |
Calculator | Gallery | SoundRecorder |
Calendar | HoloSpiralWallpaper | SpeechRecorder |
CalendarProvider | LiveWallpapers | Todos |
CBMessageWidget | LiveWallpaperPicker | Videos |
Contacts | MagicSmokeWallpapers | VisualizationWallpapers |
ContactsCommon | MtkWeatherProvider | VoiceCommand |
DataTransfer | Mms | VoiceDialer |
Dialer | Music | VoiceExtension |
MusicFX | VoiceUnlock | |
Exchange2 | NlpService | WallpaperCropper |
FMRadio | NoiseField |
Cielo Store
Sobre
A Cielo Store é a loja de aplicativos da Cielo LIO. Foi criada para que parceiros, empresas de software e desenvolvedores possam criar aplicativos, publicar e disponibiliza-los na Cielo Store para serem utilizados por clientes que usam a plataforma Cielo LIO.
Para os apps públicos, os lojistas poderão acessar a Cielo Store por meio da Cielo LIO e fazer download dos aplicativos que melhor atendem seu modelo de negócio e que têm por objetivo facilitar a gestão e controle de suas vendas, melhorar o relacionamento deles com seus clientes e impulsionar suas vendas.
Para os apps privados, após a distribuição pelo desenvolvedor, os aplicativos serão disponibilizados diretamente na Cielo LIO do lojista para utilização.
Os desenvolvedores deverão acessar o Dev Console para fazer a publicação de seus aplicativos e disponibilizar na Cielo Store ou distribuir para seus clientes.
Arquitetura
Para entender a arquitetura da Cielo Store é necessário entender os conceitos abaixo:
-
Dev Console Ambiente exclusivo para o desenvolvedor fazer o upload dos seus aplicativos.
-
Loja Privada Modelo específico utilizado para distribuição de aplicativos próprios para os estabelecimentos comerciais (lojistas).
-
Loja Publica Aplicativos desenvolvidos para serem disponibilizados na loja de aplicativo Cielo Store. Esses aplicativos poderão ser baixados por estabelecimentos comerciais (lojistas) acessando a Cielo Store através da Cielo LIO.
Dev Console
Sobre
O Dev Console é o ambiente exclusivo para o desenvolvedor realizar o upload e gestão dos aplicativos desenvolvidos para a Cielo LIO.
No portal, o desenvolvedor consegue visualizar todos os seus aplicativos publicados sejam eles aplicativos privados ou públicos, acompanhar a notificação de liberação ou status do app, realizar a gestão e distribuição dos aplicativos.
Todo aplicativo passa por certificação de um time especializado antes de ser disponibilizado na Cielo Store (Aplicativos de Loja Pública) ou distribuído para os estabelecimentos comerciais associados (Aplicativos de Loja Privada).
Clique aqui para se cadastrar no Dev Console.
Loja Pública
Upload de novos Aplicativos Públicos e Novas versões
Para realizar o upload de um novo aplicativo ou nova versão de um aplicativo já publicado, siga os passos a seguir:
- Acesse o Dev Console;
- No canto superior direito, clique em “+ Aplicativo”;
- Selecione a opção “Subir app” na Loja Pública a partir do pop-up abaixo, onde reforça a diferença entre os tipos de loja:
- Após a seleção da loja, será demonstrado a mensagem de segurança da loja escolhida “Após o upload do arquivo não é possível trocar de loja pública para privada.” Clique em “Sim, Continuar”, suba o arquivo do aplicativo e aperte em salvar.
Nova versão de aplicativos:
Caso o desenvolvedor esteja realizando uma alteração ou atualização no aplicativo público, o desenvolvedor deverá fazer o upload de uma nova versão do aplicativo e utilizar a mesma assinatura da versão anterior. Para isso clique em Detalhes do seu aplicativo e inicie o procedimento para adicionar uma nova versão. Para enviar uma nova versão do aplicativo é obrigatório que:
- Garantir que a versão mais recente do aplicativo se mantenha com o mesmo package name da versão anterior;
- Alterar o “version code” e o “version name” dentro do arquivo manifest do aplicativo.
Após o aplicativo ser certificado. Quais são os próximos passos?
-
Desenvolvedor deverá promover para produção seu aplicativo Clicando aqui.
-
Após o aplicativo ser promovido para produção ele será disponibilizado na vitrine da Cielo Store. Consequentemente ficará disponível para os usuários/clientes realizar a compra (download) do aplicativo.
Após os procedimentos de upload o arquivo do aplicativo:
A certificação é dividida entre a versão do aplicativo e os dados dos aplicativos (que ficam disponíveis para o cliente dentro do marketplace Cielo Store).
- Dentro do detalhe do aplicativo, na aba “Versões”, clique em “Enviar para Certificação”;
- Dentro do detalhe do aplicativo, na aba “Dados do App”, deve-se preencher todo o formulário com as informações do aplicativo;
-
Aguardar o prazo de certificação e acompanhar o resultado tanto na tela de detalhes do app quanto no menu de “Notificações”.
- Se o aplicativo for aprovado, ele estará disponível para envio a produção (Detalhe do aplicativo > Versões > Enviar para Produção). A partir desse momento, estará disponível para todos os estabelecimentos para consulta e contratação;
- Se o aplicativo for reprovado, deve-se verificar o motivo da reprovação dentro do detalhe do app e versão. Após efetuar as correções apontadas, submeter novamente seguindo os passos iniciais.
Atenção: Somente aplicativos de loja pública são disponibilizados na Cielo Store.
Critérios de Certificação de Aplicativos de Loja Pública
O objetivo da certificação de aplicativos é garantir que todos os aplicativos presentes na plataforma Cielo LIO, sejam públicos ou privados, estejam de acordo com as regras e critérios estabelecidos pela Cielo.
Existem dois formulários, o primeiro é o de dados do aplicativo que é destinado aos aplicativos de loja publica, esses dados são exibidos na Cielo Store. O segundo é o formulário de certificação onde o time especializado da Cielo realiza os testes do aplicativo garantindo que o app esteja de acordo com as regras e critérios estabelecidos pela Cielo. Após o aplicativo ser aprovado e ser promovido para produção o app ficará disponível na Cielo Store.
Etapa de adicionar os dados do aplicativo:
Após seguir o passo a passo de como fazer o “upload de novos Aplicativos Públicos e Novas versões” deve selecionar a opção “Enviar para Certificação” para preencher os formulários.
Segue o exemplo da tela do Dev Console e abaixo tem os critérios para aprovação.
Critérios para aprovação dos dados de certificação de Aplicativo:
- Aplicativo não pode ser gratuito.
- Não mencionar a palavra Cielo/Lio.
- Não conter palavrão.
- Não exibir imagens inapropriadas.
- Deve ficar disponível para todos Clientes da Cielo Store.
- Não exibir imagens/nomes de concorrentes.
- O aplicativo deve deixar o cliente realizar o cadastro facilmente. Não pode ter um sistema ERP conectado.
- O conteúdo do aplicativo não pode violar as regras da Cielo.
- Preencher Termos de uso corretamente, mostrando as normas do serviço que está sendo oferecido.
- Preencher o formulário dos dados do aplicativo corretamente.
- Informar dados para Suporte do aplicativo
- Todo aplicativo da loja publica que contenha vídeo a URL deverá ser validado no seguinte formato: https://www.youtube.com/embed/
- Os termos de uso devem ser preenchido corretamente, mostrando as normas do serviço que está sendo oferecido.
“Qualquer informação necessária que esteja faltando, resultará na reprovação automática do aplicativo.”
Etapa de adicionar os dados necessários da certificação de versão do aplicativo:
Segue o exemplo da tela do Dev Console e abaixo tem os critérios para aprovação.
Critérios para aprovação dos dados de VERSÃO do aplicativo:
- Não mencionar a palavra Cielo/Lio.
- Não conter palavrão.
- Não exibir imagens inapropriadas.
- Deve ficar disponível para todos Clientes da Cielo Store.
- Não exibir imagens/nomes de concorrentes.
- O aplicativo deve deixar o cliente realizar o cadastro facilmente. Não pode ter um sistema ERP conectado.
- O conteúdo do aplicativo não pode violar as regras da Cielo.
- A versão a ser certificada deve ser maior do que a versão anterior. EX: versão anterior 1.0 / versão atual 1.1
- Caso o APP tenha webview, não ficar disponível a URL para a troca de URL dentro do APP. A URL não deverá aparecer.
- Garantir que o fluxo de pagamento funcione corretamente.
- Gerar valores para teste até R$0,05 centavos.
- 100% das transações dever ser via Cielo
- Informar a versão do SDK utilizada no formulário.
- Informar a versão do OS utilizada no formulário. Fica disponível no menu “Minha LIO”
- Informar as funções do SDK utilizadas pelo APP. Exemplo: Cancelamento, pagamento e impressão
- Informar Changelog do APP (mudanças feitas para a versão que está sendo enviada para certificação) no formulário.
- Não deve ter acesso restrito e personalizado para um cliente.
Observação: Qualquer valor transacionado maior do que R$0,05 devem ser cancelados para que não haja efetivação da transação.
“Qualquer informação necessária que esteja faltando, resultará na reprovação automática do aplicativo.”
Atenção: O SLA de Certificação são de 48h úteis.
Compra de Aplicativo Públicos na Cielo LIO
Todos os aplicativos públicos certificados e promovidos para produção pelo desenvolvedor, ficam disponíveis no marketplace Cielo Store dentro da LIO.
Os estabelecimentos comerciais (lojistas) que desejam adquirir o aplicativo, deverão selecionar o aplicativo escolhido e instalar/comprar o app, validando as credenciais utilizadas no site Cielo (para autenticação e débito do valor do aplicativo). Após a conclusão da compra, o app estará disponível para ser utilizado na LIO.
A desinstalação do app deverá ser realizada também através da Cielo Store, e após a desinstalação será realizado o cancelamento de cobrança, caso o aplicativo seja pago e tiver ultrapassado o mês de gratuidade.
Atenção: Para todos os aplicativos na primeira compra, o primeiro mês é gratuito.
Download de Aplicativo Públicos na Cielo LIO
Para realizar o download de aplicativos públicos na Cielo LIO, execute o seguinte procedimento Clique na aba Apps -> Clique no aplicativo Cielo Store -> Escolha o aplicativo que deseja realizar o download.
Loja Privada
Os aplicativos privados são indicados para desenvolvedores que querem permitir a distribuição de soluções personalizadas para um cliente específico. É necessário solicitar a criação da Loja Privada para então ser possível fazer o upload de um aplicativo de Loja Privada no Dev Console. A partir da Loja Privada criada, o desenvolvedor poderá publicar seu aplicativo no Dev Console selecionando sua loja, esta ação é essencial para realizar a distribuição de aplicativos privados. A solicitação deverá ser realizada através portal do desenvolvedor, após estar logado no sistema, deve-se abrir uma nova solicitação.
Upload de novos Aplicativos Privados e Novas versões
Para realizar o upload de um novo aplicativo ou nova versão de um aplicativo já publicado, siga os passos a seguir:
Novo aplicativo:
- Acesse o Dev Console;
- No canto superior direito, clique em “+ Aplicativo”;
- Selecione a opção “Subir app” na Loja Privada a partir do pop-up abaixo, onde reforça a diferença entre os tipos de loja:
- Selecione a opção Loja Pública e clique em “Subir App”. Após a seleção da loja, a mensagem de segurança da loja escolhida “Após o upload do arquivo não é possível trocar de loja privada para pública.” Clique em “Sim, continuar”, selecione uma loja privada, suba o arquivo do aplicativo e aperte em salvar.
Nova versão de aplicativo:
Não é possível realizar troca de loja após o vínculo do aplicativo.
Após as alterações, seguir os passos abaixo:
- Acesse o Dev Console;
- A partir da lista de aplicativos privados, selecione o que deseja subir uma nova versão;
- Nos detalhes do aplicativo, no canto superior direito clique em “+ Nova versão”;
- Suba o arquivo com a nova versão do aplicativo.
Após os procedimentos de upload o arquivo do aplicativo:
A certificação é dividida entre a versão do aplicativo e os dados dos aplicativos (informações do que foi alterado, changelog, etc).
- Dentro do detalhe do aplicativo, na aba “Versões”, clique em “Enviar para Certificação”;
- Dentro do detalhe do aplicativo, na aba “Dados do App”, deve-se preencher o formulário com as informações do aplicativo;
-
Aguardar o prazo de certificação e acompanhar o resultado tanto na tela de detalhes do app quanto no menu de “Notificações”;
- Se o aplicativo for aprovado, ele estará disponível para envio a produção (Detalhe do aplicativo > Versões > Enviar para Produção). A partir desse momento, estará disponível para download nos estabelecimentos que foram distribuídos pelo desenvolvedor.
- Se o aplicativo for reprovado, deve-se verificar o motivo da reprovação dentro do detalhe do app e versão. Após efetuar as correções apontadas, submeter novamente seguindo os passos iniciais.
Atenção: Somente aplicativos de loja pública são disponibilizados na Cielo Store. Aplicativos privados são distribuídos pelo desenvolvedor à estabelecimentos específicos.
Critérios de Certificação de Aplicativos de Loja Privada
O objetivo da certificação de aplicativos é garantir que todos os aplicativos presentes na plataforma Cielo LIO, sejam públicos ou privados, estejam de acordo com as regras e critérios estabelecidos pela Cielo.
Atenção: Existem dois formulários, o primeiro é o de dados do aplicativo. O segundo é o formulário de dados de certificação onde o time especializado da Cielo realiza os testes do aplicativo garantindo que o app esteja de acordo com as regras e critérios estabelecidos pela Cielo. Após o aplicativo ser aprovado e ser promovido para produção o app fica disponível para todos os clientes associados a loja privada selecionada.
Após seguir o passo a passo de como fazer o “upload de novos Aplicativos Privados e Novas versões” deve selecionar a opção “Enviar para Certificação” para preencher os formulários. Conforme o exemplo abaixo:
Após preencher os dados do aplicativo aperte em salvar e irá ser direcionado para a tela de dados de certificação. Conforme o exemplo abaixo:
Critérios para aprovação dos dados da certificação de Aplicativo:
- A solução pode ser customizada para cliente específico.
- Acesso restrito e personalizado a um cliente.
- A versão a ser certificada deve ser maior do que a versão anterior. EX: versão anterior 1.0 / versão atual 1.1
- Caso o APP tenha webview, não ficar disponível a URL para a troca de URL dentro do APP. A URL não deverá aparecer.
- Caso o APP rode em um servidor local, enviar um vídeo mostrando o fluxo do APP. Vídeos deverão ser atualizados conforme enviarem uma nova versão para certificação. Após gravar o vídeo do APP, mostrar a versão e data do vídeo. Todo vídeo deverá ser enviado via YouTube.
- Garantir que o fluxo de pagamento funcione corretamente.
- Gerar valores para teste até R$0,05 centavos.
- 100% das transações dever ser via Cielo.
- Informar as funções do SDK utilizadas pelo APP. Exemplo: Cancelamento, pagamento e impressão.
- Informar Changelog do APP (mudanças feitas para a versão que está sendo enviada para certificação) no formulário.
- Não deve ter acesso restrito e personalizado para um cliente no formulário.
- Não mencionar a palavra Cielo/Lio.
- Não conter palavrão.
- Não exibir imagens inapropriadas.
- Não exibir imagens/nomes de concorrentes.
- O conteúdo do aplicativo não pode violar as regras da Cielo.
- Pode ter um sistema ERP conectado.
- Preencher dados de acesso ao APP (caso ele possua) fornecidos por completo.
Atenção: Qualquer valor transacionado maior do que R$0,05 devem ser cancelados para que não haja efetivação da transação.
Qualquer informação necessária que esteja faltando, resultará na reprovação automática do aplicativo.
Distribuição de Aplicativos na loja privada
Aos desenvolvedores que optarem por desenvolver aplicativos privados e distribuir apenas para clientes específicos devem efetuar o vínculo do EC do cliente a sua loja privada através do Dev Console. Somente o desenvolvedor que realizou a publicação do aplicativo poderá gerenciar a distribuição dos aplicativos da loja aos ECs do cliente.
Para vincular:
O desenvolvedor deverá acessar o Dev Console, acessar o menu Minhas lojas > Nas ações da loja desejada > “Associar EC”. Após o vínculo, o aplicativo será disponibilizado no terminal do cliente.
Existe uma rotina automática que ocorre a cada 1 hora no terminal e verifica todos os apps que precisam ser disponibilizados ou atualizados em cada terminal. Caso o download não seja imediato, observar e orientar o cliente nas seguintes situações:
A Cielo LIO deverá estar com a bateria acima de 50% e conectada a internet seja WI-FI ou 3G para realizar o download. Após estar com os critérios acima siga o passo a passo para forçar a atualização:
- Clique na aba “Ajuda”
- Clique em “Minha LIO”
- Clique em “Buscar atualizações”
Download de Aplicativo da loja privada na LIO
Para realizar o download de aplicativos próprios na Cielo LIO, execute o seguinte procedimento:
A Cielo Lio deverá estar com a bateria acima de 50% e conectada a internet seja WI-FI ou 3G para realizar o download. Após estar com os critérios acima siga o passo a passo para forçar a atualização:
- Clique na aba “Ajuda”
- Clique em “Minha LIO”
- Clique em “Buscar atualizações”
LIO para Desenvolvedores
Os desenvolvedores que desejam obter uma Cielo LIO, deverão seguir os passos abaixo:
- Criar uma conta no Portal dos Desenvolvedores e fazer a solicitação do equipamento através da abertura do ticket;
- Aguardar o recebimento da Cielo LIO;
- Em posse do equipamento, o desenvolvedor deve abrir uma nova solicitação no portal dos desenvolvedores para requisitar a habilitação de sua LIO de Dev.
Todos os aplicativos publicados pelo desenvolvedor no Dev Console que estejam com status diferente de bloqueado poderão ser baixados em sua LIO de Dev.
Clique Aqui para solicitar sua LIO.
Status de um aplicativo
Todos os aplicativos publicados no Dev Console possuem os seguintes status:
1 - Desenvolvimento
Após passar pelo upload de um novo aplicativo ou nova versão, o aplicativo fica automaticamente com o status “Em Desenvolvimento”. Nesse estágio o desenvolvedor consegue realizar testes do seu aplicativo em uma Cielo LIO e caso precise fazer alguma correção, basta publicar uma nova versão do aplicativo pelo Dev Console e então atualizar na Cielo LIO.
Para obter uma LIO durante o desenvolvimento, basta verificar a sessão LIO para Desenvolvedores deste manual.
Para instalar um aplicativo na LIO de desenvolvimento, siga o passo a passo abaixo:
Essa fase é realizada após o desenvolvedor fazer o upload do app no Dev Console.
- Ao selecionar um aplicativo irá exibir a tela de versões do app escolhido.
- Para instalar o seu aplicativo na Cielo LIO você deve clicar na opção “Instalar” e irá aparecer um QR Code.
- Nesse momento, basta abrir o aplicativo Test Your App, que estará na LIO de dev e ler esse QR Code. Após a leitura do app, o download será feito na LIO.
Atenção: Atenção: Para instalação de um app na Cielo LIO, o terminal deverá estar com bateria acima de 50% ou conectado no cabo de energia e internet 3G ou Wi-FI.
2 - Certificação
Uma vez concluído os testes, o desenvolvedor envia o aplicativo para Certificação. Nessa etapa o time de Certificação da Cielo entra em ação e irá validar o fluxo de funcionamento do aplicativo de acordo com a sessão Critérios de Certificação de Aplicativos deste documento.
3 - Produção
Assim que o aplicativo for aprovado na certificação, o desenvolvedor poderá promover para produção.
O desenvolvedor deverá promover seu aplicativo para produção de forma que este fique:
-
Disponível para download na Cielo Store (Aplicativo Público);
-
Disponível para distribuição à lojistas específicos (Aplicativo Privado):
-
Para aplicativo privado existe a possibilidade de escolher a melhor forma de distribuição e instalação.
-
Temos 3 modos de publicação: Manual, Parcial e Automático.
Mensagens de Erro Dev Console
A tabela apresenta os possíveis erros que o desenvolvedor pode encontrar durante a utilização do Dev Console:
Referência | Mensagem | Cenário | O que fazer? |
---|---|---|---|
APP CREATED_ERROR | Aplicativo com esse package name já existe | Desenvolvedor tentou enviar uma aplicação com package name já existente na loja. | Alterar no arquivo Manifest o packageName da aplicação |
APP APK_PARSER_ERROR | O arquivo .apk é obrigatório | Desenvolvedor tentou executar o upload de uma aplicação e não anexou o arquivo .apk | Clicar no botão “Adicione um APK” e certificar de que foi escolhido o arquivo correto. |
APP APK_PARSER_ERROR | Não foi possível obter o atributo Name / Não foi possível obter o atributo Package Name / Não foi possível obter o atributo Version Name / Não foi possível obter o atributo Version Code | Desenvolvedor tentou executar o upload de uma aplicação onde o arquivo manifest ou o apk está corrompido ou com problemas na configuração do arquivo manifest | Rebuildar o apk e verificar se não existem erros no arquivo Manifest do Android |
SCREENSHOTS CREATED_WARNING | Aplicativo criado, porém as screenshots não foram salvas! | Na criação do app, o Desenvolvedor enviou screenshots onde os arquivos de imagem contém extensões incomuns ou desconhecidas. | Editar o app e enviar arquivos de imagens com extensões conhecidas. |
SCREENSHOTS UPDATED_WARNING | Aplicativo atualizado, porém as screenshots não foram salvas! | Na edição do app, o Desenvolvedor enviou screenshots onde os arquivos de imagem contém extensões incomuns ou desconhecidas. | Editar novamente o app e enviar arquivos de imagens com extensões conhecidas. |
VERSION PROMOTE_ERROR (esse cenário só ocorre com aplicativos públicos) | É necessário um EC cadastrado para promover essa versão para produção. | Após a aplicação ter tido a certificação aprovada, o Desenvolvedor tentou promover o app para produção, porém ainda não possui um EC. | Solicitar à Cielo a criação de um EC para poder promover a aplicação para promoção. |
Caso você desenvolvedor não encontre o erro nesta tabela, abra um ticket para a equipe de suporte reportando o problema encontrado e lembre-se de listar as evidências do erro como prints de tela e mensagens de erro recebidas.
Integração Local
Apresentação
O objetivo da Integração Local da Cielo LIO é permitir que o aplicativo desenvolvido em Android se integre com o módulo de pedidos e pagamentos da Cielo LIO através do Cielo LIO Order Manager SDK.
Nesse modelo de integração, toda a gestão do estabelecimento comercial e da arquitetura da solução fica sob responsabilidade do aplicativo que irá utilizar o SDK nas operações de pagamento.
- O aplicativo do parceiro rodando na Cielo envia informações para o Cielo LIO Order Manager SDK.
- O Cielo LIO Order Manager SDK executa os fluxos para pagamento.
- O aplicativo do parceiro recebe as informações do pagamento e continua sua execução.
As seções abaixo possuem todas as informações necessárias para realizar a integração de forma rápida e segura.
Cielo Lio Order Manager SDK
Sobre
O Cielo LIO Order Manager SDK é uma biblioteca Android desenvolvida com base na Cielo LIO Order Manager API, encapsulando a complexidade da comunicação REST em uma API fluente e amigável ao desenvolvedor e permitindo uma integração simples, rápida e segura com a plataforma Cielo LIO.
O principal objetivo do Cielo LIO Order Manager SDK é simplificar a integração com o sistema de pagamentos e permitir que o desenvolvedor concentre esforços no desenvolvimento das características do seu aplicativo. Abaixo, é apresentado um exemplo em alto nível do processo de utilização do Cielo LIO Order Manager SDK por um aplicativo parceiro:
- O aplicativo do parceiro é responsável por gerenciar todas as informações do pedido e, então, enviá-las para o Cielo LIO Order Manager SDK.
- O Cielo LIO Order Manager SDK recebe as informações e o fluxo de pagamento para o cliente. Neste fluxo, o cliente irá selecionar a forma de pagamento e digitar a senha no Pinpad, tendo a possibilidade de enviar por e-mail o comprovante do pagamento.
- Ao término do fluxo de pagamento, o aplicativo do parceiro recebe as informações sobre o pagamento realizado e volta a ser executado na tela da Cielo LIO.
Para mais informações e detalhes sobre o desenvolvimento de um aplicativo para a Cielo LIO, acesse a documentação Desenvolva um App para LIO.
Ambiente Sandbox - Emulador
Este aplicativo funciona como um proxy de todas as chamadas que o SDK enviaria para a LIO. Ele simplesmente trata essas chamadas e simula os tipos possíveis de retorno para a aplicação cliente, permitindo que o desenvolvedor realize os testes nos métodos do SDK e faça o debug da sua aplicação durante o desenvolvimento e a integração com o Cielo LIO Order Manager SDK, sem a necessidade de possuir um hardware da Cielo LIO.
Não é nem mesmo necessário deixar esse app aberto. Assim que a aplicação cliente utilizar uma função do OrderManager que chamaria a LIO, essa aplicação entra em primeiro plano para seleção do que deve ser retornado (Sucesso, Erro ou Cancelamento)
Faça o download do .apk do emulador no link abaixo:
Para instalar o aplicativo, basta seguir os seguintes passos:
- Acesse as configurações do seu aparelho e vá até o menu “Segurança”;
- Localize o item “Fontes desconhecidas”, na seção “Administração do dispositivo”
- Toque na chave ao lado e confirme sua escolha para passar a permitir a instalação de arquivos APK baixados por fontes alternativas.
Configurar módulos e dependências
Efetue o download da nossa SDK CLIQUE AQUI
Disponilizamos dois diretorios com
e cielo
basta copiá-los para o seu repositório .m2/repository
Exemplo:
No Windows: C:\Users\<usuario>\.m2
No Linux: /home/<usuario>/.m2
No Mac: /Users/<usuario>/.m2
No build.gradle na raiz do seu projeto, adicionar o mavenLocal()
dentro da closure allprojects conforme abaixo:
allprojects {
repositories {
mavenLocal()
...
}
}
No build.gradle do app, adicionar a dependência dentro da closure dependencies conforme abaixo:
dependencies {
implementation 'com.cielo.lio:order-manager:1.7.1'
}
Após essas configurações realize o build do projeto.
última versão 1.7.0
A partir da versão 1.17.7-beta do SDK se tornou necessária a permissão de INTERNET na aplicação cliente. Adicione essa permissão ao
AndroidManifest.xml
da sua aplicação.
Credenciais
Para utilizar o Cielo LIO Order Manager SDK, é necessário inserir as seguintes credenciais na inicialização do OrderManager:
Credentials credentials = new Credentials("Seu client id aqui", "Seu accessToken aqui");
-
Client-Id Identificação de acesso. Sua geração ocorre no momento da criação pelo painel do desenvolvedor. Seu valor pode ser visualizado na coluna Client ID, dentro do menu ‘Client ID Cadastrados’
-
Access-Token Identificação do token de acesso, que armazena as regras de acesso permitidas ao Client ID. Sua geração ocorre no momento da criação do Client ID pelo painel do desenvolvedor. Seu valor pode ser visualizado clicando em ‘detalhes’ na coluna ‘Access Tokens’, dentro do menu ‘Client ID Cadastrados’
Crie sua Credencial para a API Local
Criação e Gerenciamento de Ordens
O fluxo básico para utilização do SDK pode ser dividido em 7 etapas, conforme o diagrama abaixo:
Abaixo, iremos mostrar como realizar cada uma dessas etapas.
Criar OrderManager
Este método permite iniciar o OrderManager, que é responsável pelas principais operações do Cielo LIO Order Manager SDK. O OrderManager representa a interface com a API REST do Order Manager.
Tudo começa com a criação do OrderManager!
OrderManager orderManager = new OrderManager(credentials, context);
O construtor do OrderManager recebe 2 parâmetros:
Atributo | Descrição | Domínio |
---|---|---|
credentials | Credenciais de acesso do Parceiro/Desenvolvedor. Depois de se registrar no Portal de Desenvolvedores e criar seu app, o Parceiro/Desenvolvedor recebe as credenciais (Client-Id e Access-Token). Elas servem para identificá-lo unicamente na plataforma LIO e diferenciar as ordens da sua aplicação. | cielo.sdk.order.Credentials |
context | O contexto da aplicação. | android.content.Context |
Atenção: Recomendamos criar/inicializar o OrderManager no aplicativo do parceiro no momento em que for utilizar as funcionalidades, visando otimizar o desempenho do aplicativo
Vincular o contexto da aplicação ao SDK
Com o método bind()
, é possível vincular o contexto da aplicação ao SDK. Este serviço é responsável por gerenciar as funções relacionadas com as ordens da LIO
ServiceBindListener serviceBindListener = new ServiceBindListener() {
@Override public void onServiceBoundError(Throwable throwable) {
//Ocorreu um erro ao tentar se conectar com o serviço OrderManager
}
@Override
public void onServiceBound() {
//Você deve garantir que sua aplicação se conectou com a LIO a partir desse listener
//A partir desse momento você pode utilizar as funções do OrderManager, caso contrário uma exceção será lançada.
}
@Override
public void onServiceUnbound() {
// O serviço foi desvinculado
}
};
orderManager.bind(context, serviceBindListener);
Atenção: Você deve garantir que o listener
onServiceBound()
foi chamado antes de utilizar as funções do OrderManager, caso contrário uma exceção será lançada e causará um crash na sua aplicação.
O método Bind recebe dois parâmetros:
-
context: objeto que proverá o contexto em que o serviço será vinculado.
-
serviceBindListener: listener que notifica o estado da conexão com o serviço OrderManager.
Com o OrderManager inicializado e após a execução do método onServiceBound, se torna possível ir para a próxima etapa e criar um pedido (classe Order).
Criar um pedido
A Cielo LIO trabalha com o conceito de Order (pedido). É necessário possuir um pedido para então realizar o(s) pagamento(s).
Este método permite criar uma Order (classe Order). Para realizar essa criação, utilize o método createDraftOrder, que disponibilizará uma Order com status DRAFT:
Order order = orderManager.createDraftOrder("REFERÊNCIA_DO_PEDIDO");
Adicionar itens em um pedido
Este método permite que sejam adicionados itens em um pedido.
Atenção: É necessário adicionar no mínimo um item a um pedido para que seja possível dar continuidade ao pagamento.
// Identificação do produto (Stock Keeping Unit)
String sku = "2891820317391823";
String name = "Coca-cola lata";
// Preço unitário em centavos
int unitPrice = 550;
int quantity = 3;
// Unidade de medida do produto String
unityOfMeasure = "UNIDADE";
order.addItem(sku, name, unitPrice, quantity, unityOfMeasure);
Liberar pedido para pagamento
Este método permite atualizar o status de um pedido e liberá-lo para pagamento. O objetivo é utilizar este método depois de adicionar todos os itens no pedido.
orderManager.placeOrder(order);
Após a execução desse método, o status da Order irá trocar de DRAFT para ENTERED, permitindo que a mesma seja paga.
Atenção: É importante observar que, uma vez que uma Order tenha mudado de status para ENTERED, não será mais possível incluir itens na mesma. Iniciar processo de pagamento
Este método permite iniciar o processo de pagamento na Cielo LIO.
Processo de Pagamento
Estão disponíveis algumas formas de chamar o método checkoutOrder:
Independende da forma escolhida, você deverá utilizar o seguinte callback como parâmetro do método de checkoutOrder()
para receber os estados relacionados ao pagamento.:
PaymentListener paymentListener = new PaymentListener() {
@Override
public void onStart() {
Log.d("SDKClient", "O pagamento começou.");
}
@Override
public void onPayment(@NotNull Order order) {
Log.d("SDKClient", "Um pagamento foi realizado.");
}
@Override public void onCancel() {
Log.d("SDKClient", "A operação foi cancelada.");
}
@Override public void onError(@NotNull PaymentError paymentError) {
Log.d("SDKClient", "Houve um erro no pagamento.");
}
};
PaymentListener: Um callback que informa sobre todas as ações tomadas durante o processo de pagamento. As seguintes ações podem ser notificadas:
• onStart - Quando se dá o início do pagamento. • onPayment - Quando um pagamento é realizado. Notem que um pedido pode ser pago por mais de um pagamento. • onCancel - Quando o pagamento é cancelado. • onError - Quando acontece um erro no pagamento do pedido.
O método onPayment()
retorna um objeto Order
com uma lista de Payment
que possui um HashMap PaymentFields
com a maioria dos dados da transação.
Segue abaixo a tabela com os dados mais relevantes existentes nesse mapa:
Payment Fields - (atributo do objeto Payment) | ||
---|---|---|
Nome do Campo | Descrição do Campo | Valor Exemplo |
clientName | Nome do Portador | VISA ACQUIRER TEST CARD 03 |
hasPassword | Validar se a operação pediu senha | true |
primaryProductCode | Código do produto primário | 4 |
primaryProductName | Nome do produto primário | CREDITO |
upFrontAmount | Valor da entrada da transação | 2500 |
creditAdminTax | Valor da taxa de administração de crédito | 0 |
firstQuotaDate | Data de débito da primeira parcela | 25/12/2018 (dd/MM/yyy) |
externalCallMerchantCode | Número do Estabelecimento Comercial | 0010000244470001 |
hasSignature | Validar se a operação pediu assinatura | false |
hasPrintedClientReceipt | Validar se imprimiu a via do cliente | false |
applicationName | Pacote da aplicação | cielo.launcher |
interestAmount | Valor de juros | 5000 |
changeAmount | Valor de troco | 4500 |
serviceTax | Taxa de serviço | 2000 |
cityState | Cidade - Estado | Barueri - SP |
v40Code | Tipo da transação | 5 (Lista de Tipos de transação abaixo) |
secondaryProductName | Nome do produto secundario | PARC. ADM |
paymentTransactionId | ID da transação de pagamento | 4c603b44-19b8-497c-b072-60d5dd6807e7 |
bin | Número cartão tokenizado (6 primeiros dígitos – 4 últimos dígitos ou 4 últimos) | 476173-0036 ou **********4242 |
originalTransactionId | ID da transação original, nos casos de cancelamento | 729d32ac-6c8d-4b0c-b670-263552f07000 |
cardLabelApplication | Tipo de aplicação utilizada pelo cartão na transação | CREDITO DE VISA |
secondaryProductCode | Código do produto secundário | 205 |
documentType | (J) = Pessoa Jurídica (F) = Pessoa Física | J |
statusCode | Status da transação1 - Autorizada 2 - Cancelada | 1 |
merchantAddress | Endereço do estabelecimento comercial (lojista) | Alameda Grajau, 219 |
merchantCode | Número do Estabelecimento Comercial | 0010000244470001 |
hasConnectivity | Valida se a transação foi online | true |
productName | forma de pagamento compilada | CREDITO PARCELADO ADM - I |
merchantName | Nome Fantasia do Estabelecimento Comercial | LOJA ON |
firstQuotaAmout | Valor da primeira parcela | 0 |
cardCaptureType | Código do tipo de captura do cartão | 0 (Lista de Tipos de Captura abaixo) |
requestDate | Data da requisição em milisegundos | 1293857600000 |
boardingTax | Taxa de embarque | 1200 |
applicationId | Pacote de aplicação | cielo.launcher |
numberOfQuotas | Número de parcelas | 2 |
Lista de Tipos de Captura | |
---|---|
Código | Valor |
0 | Transação com cartão de chip |
1 | Transação digitada |
2 | Transação com cartão de tarja |
3 | Transação com cartão contactless |
6 | Transação com QRCode |
Lista de Tipos de Transação - (Isto não é válido como código primário) | |
---|---|
Código | Valor |
4 | Crédito à vista |
5 | Crédito parcelado administrativo |
6 | Crédito parcelado loja |
7 | Pré autorização |
8 | Débito à vista |
9 | Débito pré datado |
10 | Crediário venda |
11 | Crediário simulação |
13 | Voucher alimentação/refeição |
28 | Cancelamento de venda |
Você pode pegar outros dados diretamente do (objeto Payment) | |
---|---|
Campo | Descrição do campo |
authCode | Cód de Autorização(AUT do recibo) |
cieloCode | Campo DOC do recibo (NSU) |
brand | Bandeira do Cartão |
Exemplo de código para trazer a bandeira e transação:
@Override
public void onPayment(Order paidOrder) {
Log.d(TAG, "ON PAYMENT");
order = paidOrder;
order.markAsPaid();
orderManager.updateOrder(order);
Payment pgTO = order.getPayments().get(0);
bandeira = getBandeira(pgTO.getPaymentFields().get("brand"));
transacao = pgTO.getPaymentFields().get("authCode");
pagamento.setBandeira(bandeira);
pagamento.setAutorizacao(transacao);
Todos os valores financeiros são informados sem vírgula, ou seja 2500 são equivalentes a R$ 25,00.
1. Requisição de pagamento
Para realizar um request de pagamento é preciso informar, pelo menos, o OrderId criado anteriormamente. Dependendo dos parametros informados na hora de montar o request de pagamento, um dos processos citados acima será iniciado. No Pagamento parcial, o valor do pagamento é informado dentro do fluxo de telas da Cielo LIO. Na sequência, o fluxo de pagamento da Cielo LIO é iniciado (definir o valor a ser pago, escolher a forma de pagamento, inserir o cartão, digitar a senha e visualizar e/ou enviar por e-mail o comprovante).
CheckoutRequest request = new CheckoutRequest.Builder()
.orderId(order.getId()) /* Obrigatório */
.amount(123456789) /* Opcional */
.ec("999999999999999") /* Opcional (precisa estar habilitado na LIO) */
.installments(3) /* Opcional */
.email("teste@email.com") /* Opcional */
.paymentCode(PaymentCode.CREDITO_PARCELADO_LOJA) /* Opcional */
.build();
Atenção: Os dados dos parâmetros EC e EMAIL são apenas exemplos e não deve ser utilizado em sua chamada. Para a utilização do EC na chamada, é necessário uma pré habilitação junto a Cielo, para o recebimento com MULTI-EC.
Atributo | Descrição | Domínio |
---|---|---|
orderId | O identificador do pedido a ser pago. | String |
amount | Valor a ser pago. R$ 10,00 deve ser enviado como 1000. | Long |
ec | Em casos de multi-ec, informar aqui o número correspondente | String |
installments | número de parcelas. para pagamento a vista, não precisa informar | Int |
email pra onde será enviado o comprovante | String |
|
paymentCode | Código da operação de pagamento | cielo.sdk.order.payment.PaymentCode |
orderManager.checkoutOrder(request, paymentListener);
Nessa forma de pagamento, é necessário apenas fazer a chamada do método enviando os seguintes parâmetros:
Atributo | Descrição | Domínio |
---|---|---|
request | O objeto contendo as informações da ordem a ser paga. | cielo.orders.domain.CheckoutRequest |
paymentListener | Callback de pagamento. | cielo.sdk.order.payment.PaymentListener |
Atenção: Na versão 0.19.0 do SDK foram introduzidos códigos de pagamento para as principais operações disponibilizadas na LIO, facilitando assim as chamadas de pagamento. É importante ressaltar que as formas de pagamento são configuradas de acordo com o estabelecimento comercial, e nem todas estarão disponíveis em todas os terminais. Caso o método de pagamento selecionado não esteja disponível na LIO em questão, ocorrerá uma exceção do tipo
NoSuchElementException
.
PaymentCode |
---|
DEBITO_AVISTA |
DEBITO_PAGTO_FATURA_DEBITO |
CREDITO_AVISTA |
CREDITO_PARCELADO_LOJA |
CREDITO_PARCELADO_ADM |
CREDITO_PARCELADO_BNCO |
PRE_AUTORIZACAO |
CREDITO_PARCELADO_CLIENTE |
CREDITO_CREDIARIO_CREDITO |
VOUCHER_ALIMENTACAO |
VOUCHER_REFEICAO |
VOUCHER_AUTOMOTIVO |
VOUCHER_CULTURA |
VOUCHER_PEDAGIO |
VOUCHER_BENEFICIOS |
VOUCHER_AUTO |
VOUCHER_CONSULTA_SALDO |
VOUCHER_VALE_PEDAGIO |
CREDIARIO_VENDA |
CREDIARIO_SIMULACAO |
CARTAO_LOJA_AVISTA |
CARTAO_LOJA_PARCELADO_LOJA |
CARTAO_LOJA_PARCELADO |
CARTAO_LOJA_PARCELADO_BANCO |
CARTAO_LOJA_PAGTO_FATURA_CHEQUE |
CARTAO_LOJA_PAGTO_FATURA_DINHEIRO |
FROTAS |
PIX (EM PILOTO) |
Atenção: A utilização do paymentCode referente ao PIX estará disponivel para uso a partir da versão 1.7.0 da SDK e será liberado para utilização no inicio de Dezembro/2023. É necessário que esse meio de pagamento esteja habilitado junto a Cielo.
Abaixo, segue um exemplo do fluxo com as telas exibidas informando apenas o OrderId:
Abaixo, segue um exemplo do fluxo com as telas exibidas informando o OrderId e o Valor:
Abaixo, segue um exemplo do fluxo com as telas exibidas informando o OrderId, o Valor e o código de pagamento:
Abaixo, segue um exemplo do fluxo com as telas exibidas informando o OrderId, o Valor, o código de pagamento e o número de parcelas:
Abaixo, segue um exemplo do fluxo com as telas exibidas informando o OrderId, o Valor, o código de pagamento, o número de parcelas e o email:
Abaixo, segue um exemplo do fluxo com as telas exibidas informando o OrderId, o Valor, o código de pagamento, o número de parcelas, o EC e o email
Pagamento Parcial
Existe um produto Cielo habilitado em estabelecimentos que permite o pagamento apenas com o saldo que o cliente possui no cartão
Exemplo: Se um pedido tiver o valor de R$ 100,00, mas o cliente possui um limite em seu cartão de apenas R$50,00 a maquina receberá esse valor, sendo de suma importância a aplicação validar o acontecimento desse cenário para tratativas de cancelamento do pagamento ou de receber o restante de outra forma.
Tratando Cenário
Através do listener de retorno do pagamento OnPayment
é possível acessar informações do objeto Order para confirmar se existe algum valor pendente de pagamento. Abaixo segue os campos que utilizaremos para identificar o cenário de pagamento Parcial:
Atributo | Descrição |
---|---|
pendingAmount |
Esse campo retorna o valor que ainda está pendente de pagamento para o pedido |
paidAmount |
Esse é o valor pago no pedido |
price |
Esse é o valor pago no pedido |
Será necessário recuperar e validar o campo pendingAmount
esse campo é responsável por indicar se existe algum valor pendente para o pedido. Caso o valor desse campo seja igual a 0 a aplicação poderá seguir o seu fluxo
Ainda é possível efetuar a lógica sobre o campo paidAmount
, caso o valor desse campo seja o esperado para o pedido/pagamento poderá seguir normalmente o fluxo da aplicação.
Exemplo de lógica:
PaymentListener paymentListener = new PaymentListener() {
@Override
public void onStart() {
Log.d("SDKClient", "O pagamento começou.");
}
@Override
public void onPayment(@NotNull Order order) {
Log.d("SDKClient", "Um pagamento foi realizado.");
if (order.pendingAmout() == 0) {
order = paidOrder;
order.markAsPaid();
orderManager.updateOrder(order);
} else {
// PEDIDO AINDA TEM VALOR A SER RECEBIDO DEVERÁ SER TRATADO PELA APLICAÇÃO DO PARCEIRO
}
@Override public void onCancel() {
Log.d("SDKClient", "A operação foi cancelada.");
}
@Override public void onError(@NotNull PaymentError paymentError) {
Log.d("SDKClient", "Houve um erro no pagamento.");
}
};
Exemplo dos campos retornados:
{
"createdAt": "Nov 29, 2022:21:32 PM",
"id": "508da29c-9447-4aaf-ab5f-78169986d1eb",
"items": [
{
"description": "",
"details": "",
"id": "67343d1a-055c-4fda-8432-ef32fed4ddb9",
"name": "Coca-cola lata",
"quantity": 1,
"reference": "",
"sku": "2891820317391823",
"unitOfMeasure": "litro",
"unitPrice": 550
}
],
"notes": "",
"number": "",
"paidAmount": 100,
"payments": [
{
"accessKey": "izEd7gEBaWjNmzTr0ccE6PZnbWCOHrJahp6oZ2f1QYTWaF9ivI/ wPEY0z5pbk4L8jWlcixeDbd5tHb28quVpTdX2e8pebwOO84DbT",
"amount": 1000,
"applicationName": "CieloLIO",
"authCode": "ab14d87f-c4e7-49f4-ac1f-90ae97f80d3f",
"brand": "mock_brand",
"cieloCode": "1a561528-7345-4ab8-a3e2-c8e8c87787ae",
"description": "mock_description",
"discountedAmount": 0,
"externalId": "mock_externalId",
"id": "eb785f2c-8286-46cc-8829-b10a7280dcf7",
"installments": 1,
"mask": "mock_mask",
"merchantCode": "1234",
"paymentFields": {
"clientName": "CieloLio",
"betterDate": "121212121",
"upFrontAmount": "1000",
"creditAdminTax": "500",
"firstQuotaDate": "12121212121",
"hasSignature": "true",
"hasPrintedClientReceipt": "true",
"hasWarranty": "false",
"interestAmount": "0",
"serviceTax": "0",
"cityState": "Rio de Janeiro - RJ",
"hasSentReference": "true",
"cardLabelApplication": "llalal",
"signatureMd5": "wedsaee12jnlk3n12lk3n2kl13n1lk23nk12ln3l",
"hasConnectivity": "true",
"productName": "lalala",
"finalCryptogram": "123123213",
"entranceMode": "????",
"firstQuotaAmount": "10000",
"cardCaptureType": "2",
"requestDate": "121212121",
"boardingTax": "0",
"numberOfQuotas": "1",
"isDoubleFontPrintAllowed": "true",
"token": "1212121",
"hasPassword": "true",
"primaryProductCode": "8",
"isExternalCall": "true",
"primaryProductName": "DEBITO",
"receiptPrintPermission": "3",
"isOnlyIntegrationCancelable": "false",
"externalCallMerchantCode": "123",
"isFinancialProduct": "false",
"applicationName": "CieloLIO",
"changeAmount": "0",
"v40Code": "2",
"secondaryProductName": "DEBITO A VISTA - I",
"paymentTransactionId": "cod0001",
"typeName": "VENDA",
"avaiableBalance": "2000",
"pan": "4242424242424242",
"secondaryProductCode": "208",
"hasSentMerchantCode": "true",
"documentType": "2144",
"statusCode": "2",
"merchantAddress": "dsdfdsf",
"merchantCode": "1234",
"paymentTypeCode": "1",
"merchantName": "12345",
"totalizerCode": "3",
"applicationId": "Cielo LIO",
"signatureBytes": "ijodiqjiojio2j3io1j3io21j3io1j3oi21j312oij312312",
"reference": "112121"
},
"primaryCode": "8",
"requestDate": "121212121",
"secondaryCode": "208",
"terminal": "mock_terminal"
}
],
"pendingAmount": 450,
"price": 550,
"reference": "teste1",
"status": "ENTERED",
"type": "PAYMENT",
"updatedAt": "Mar 6, 2018 2:21:32 PM"
}
Cancelamento
Para tratar a resposta do cancelamento, você deverá utilizar o seguinte callback como parâmetro do método de cancelOrder()
para receber os estados relacionados ao cancelamento.
CancellationListener: Um callback que informa sobre todas as ações tomadas durante o processo de cancelamento. As seguintes ações pode ser notificadas: • onSuccess - Quando um cancelamento é realizado com sucesso. • onCancel - Quando o usuário cancela a operação. • onError - Quando acontece um erro no cancelamento do pedido.
CancellationListener cancellationListener = new CancellationListener() {
@Override
public void onSuccess(Order cancelledOrder) {
Log.d("SDKClient", "O pagamento foi cancelado.");
}
@Override
public void onCancel() {
Log.d("SDKClient", "A operação foi cancelada.");
}
@Override
public void onError(PaymentError paymentError) {
Log.d("SDKClient", "Houve um erro no cancelamento");
}
});
Cancelar Pagamento
ATENÇÃO: Hoje só é possivel realizar o cancelamento total do pagamento, para realizar o cancelamento parcial é necessário utilizar a interface da LIO.
No método Cancelar um Pagamento, é necessário ter salvo uma instância da Order que contém as informações da Order. Essa Order pode ser recuperada no sucesso do callback do pagamento ou usando o método de Listagem de Pedidos (Orders) (link para método). Assim que possuir a instância da Order, utilize o método abaixo passando os parâmetros conforme o exemplo abaixo:
CancellationRequest request = new CancellationRequest.Builder()
.orderId(order.getId()) /* Obrigatório */
.authCode(order.getPayments().get(0).getAuthCode()) /* Obrigatório */
.cieloCode(order.getPayments().get(0).getCieloCode()) /* Obrigatório */
.value(order.getPayments().get(0).getAmount()) /* Obrigatório */
.ec("0000000000000003") /* Opcional */
.build();
Atenção: O dado do parâmetro EC é apenas um exemplo e não deve ser utilizado em sua chamada. Para a utilização do EC na chamada de cancelamento, é necessário uma pré habilitação junto a Cielo.
Abaixo é detalhado cada um dos parâmetros enviados no método:
Atributo | Descrição | Domínio |
---|---|---|
orderID | O identificador do pedido a ser pago. | String |
authCode | Código de autorização do pagamento. | String |
cieloCode | NSU do pagamento | String |
value | Valor do pagamento a ser cancelado | Long |
ec | Em casos de multi-ec, informar aqui o número correspondente | String |
cancellationListener | Callback que informa sobre todas as ações tomadas durante o processo de cancelamento. | cielo.sdk.order.payment.CancellationListener |
orderManager.cancelOrder(request, cancellationListener);
Abaixo é detalhado cada um dos parâmetros enviados no método:
Atributo | Descrição | Domínio |
---|---|---|
request | O objeto contendo as informações da ordem a ser cancelada. | cielo.orders.domain.CancellationRequest |
cancellationListener | Callback que informa sobre todas as ações tomadas durante o processo de cancelamento. | cielo.sdk.order.payment.CancellationListener |
Exemplo de JSON retornado no listener OnSucess()
do CancellationListener.
{
"createdAt":"2023-11-03T10:28:52.164Z",
"id":"0f156449-6c77-47aa-88b7-da98edaefc16",
"items":[
{
"description":"",
"details":"",
"id":"7243e387-d73a-4f70-bc9b-8b39e1e1f90a",
"name":"TESTE",
"quantity":1,
"reference":"",
"sku":"0000000000",
"unitOfMeasure":"UN",
"unitPrice":"10"
}
],
"notes":"",
"number":"",
"paidAmount":"0",
"payments":[
{
"accessKey":"BoV29dYpLriYeTdpSOOHXJOWSvQpU8Srt97xlGzwj8bkPChegC",
"amount":"10",
"applicationName":"pdv.teste",
"authCode":"285565",
"brand":"VISA",
"cieloCode":"74356",
"description":"",
"discountedAmount":"0",
"externalId":"e9c93039-3212-4f25-b571-2c57c0259e5b",
"id":"8083f635-13f4-48e4-9565-3876990d5f93",
"installments":"0",
"mask":"******0759",
"merchantCode":"0000701260460001",
"paymentFields":{
"upFrontAmount":"0",
"creditAdminTax":"0",
"firstQuotaDate":"0",
"hasSignature":"false",
"hasPrintedClientReceipt":"false",
"hasWarranty":"false",
"interestAmount":"0",
"serviceTax":"0",
"cityState":"SAO PAULO SP",
"hasSentReference":"false",
"cardLabelApplication":"CREDITO ",
"originalTransactionId":"0",
"originalTransactionDate":"03/11/23",
"hasConnectivity":"true",
"productName":"CREDITO A VISTA",
"finalCryptogram":"74507261AE81C147",
"entranceMode":"691017207380",
"firstQuotaAmount":"0",
"cardCaptureType":"3",
"requestDate":"1699018133112",
"boardingTax":"0",
"numberOfQuotas":"0",
"isDoubleFontPrintAllowed":"false",
"bin":"481135",
"hasPassword":"false",
"isExternalCall":"true",
"primaryProductCode":"1000",
"primaryProductName":"CREDITO",
"isOnlyIntegrationCancelable":"false",
"receiptPrintPermission":"1",
"isFinancialProduct":"true",
"applicationName":"teste.pdv",
"changeAmount":"0",
"v40Code":"4",
"paymentTransactionId":"e9c93039-3212-4f25-b571-2c57c0259e5b",
"secondaryProductName":"A VISTA",
"avaiableBalance":"0",
"typeName":"VENDA A CREDITO",
"pan":"******0759",
"secondaryProductCode":"1",
"hasSentMerchantCode":"false",
"documentType":"J",
"merchantAddress":"AV TESTE 200",
"statusCode":"1",
"merchantCode":"0000000000",
"paymentTypeCode":"1",
"merchantName":"TESTE",
"totalizerCode":"10",
"applicationId":"cielo.launcher",
"document":"58731662000111"
},
"primaryCode":"1000",
"requestDate":"1699018133112",
"secondaryCode":"1",
"terminal":"00876192"
},
{
"accessKey":"",
"amount":"10",
"applicationName":"pdv.teste",
"authCode":"285565",
"brand":"VISA",
"cieloCode":"74362",
"description":"",
"discountedAmount":"0",
"externalId":"e5cb2957-3a4d-49af-be33-e99d6ae5c806",
"id":"7ff66130-4836-4d58-9d9f-12a57a2b630d",
"installments":"0",
"mask":"******0759",
"merchantCode":"00000000000000",
"paymentFields":{
"upFrontAmount":"0",
"creditAdminTax":"0",
"firstQuotaDate":"0",
"hasSignature":"false",
"hasPrintedClientReceipt":"false",
"hasWarranty":"false",
"interestAmount":"0",
"serviceTax":"0",
"cityState":"SAO PAULO SP",
"hasSentReference":"false",
"cardLabelApplication":"CREDITO ",
"originalTransactionId":"74356",
"originalTransactionDate":"03/11/23",
"hasConnectivity":"true",
"productName":"CREDITO A VISTA",
"entranceMode":"691017207380",
"firstQuotaAmount":"0",
"cardCaptureType":"3",
"requestDate":"1699018209429",
"boardingTax":"0",
"numberOfQuotas":"0",
"isDoubleFontPrintAllowed":"false",
"bin":"481135",
"hasPassword":"false",
"isExternalCall":"true",
"primaryProductCode":"1000",
"primaryProductName":"CREDITO",
"isOnlyIntegrationCancelable":"false",
"receiptPrintPermission":"1",
"externalCallMerchantCode":"0000000000",
"isFinancialProduct":"true",
"applicationName":"teste.pdv",
"changeAmount":"0",
"v40Code":"28",
"paymentTransactionId":"e9c93039-3212-4f25-b571-2c57c0259e5b",
"secondaryProductName":"A VISTA",
"avaiableBalance":"0",
"typeName":"VENDA A CREDITO",
"pan":"******0759",
"secondaryProductCode":"1",
"hasSentMerchantCode":"false",
"documentType":"J",
"merchantAddress":"AV TESTE 200",
"statusCode":"2",
"merchantCode":"000000000",
"paymentTypeCode":"1",
"merchantName":"TEST MERCHANT",
"totalizerCode":"10",
"applicationId":"pdv.teste",
"document":"58731662000111"
},
"primaryCode":"1000",
"requestDate":"1699018209429",
"secondaryCode":"1",
"terminal":"00876192"
}
],
"pendingAmount":"10",
"price":"10",
"reference":"2052023110310274434",
"releaseDate":null,
"status":"ENTERED",
"type":"PAYMENT",
"updatedAt":"2023-11-03T10:30:17.518Z"
}
Receber aviso de cancelamento feito na LIO
Toda vez que é feito um cancelamento na LIO utilizando o launcher, o sistema envia um broadcast notificando quaisquer aplicações que estejam registradas sobre o mesmo. Para que sua aplicação seja notificada de um cancelamento, atualize o arquivo AndroidManifest.xml
conforme o exemplo abaixo:
em seguida, é necessário implementar um BroadcastReceiver
para tratar o evento da maneira que for pertinente a sua aplicação:
public class LIOCancelationBroadcastReceiver extends BroadcastReceiver {
String MY_CLIENT_ID = "Seu client id aqui";
String MY_ACCESS_KEY = "Seu access key aqui";
String INTENT_ORDER_KEY = "ORDER";
String INTENT_TRANSACTION_KEY = "TRANSACTION";
@Override
public void onReceive(Context context, Intent intent) {
ParcelableOrder order = intent.getExtras().getParcelable(INTENT_ORDER_KEY);
if(MY_ACCESS_KEY.equalsIgnoreCase(order.getAccessKey()) && MY_CLIENT_ID.equalsIgnoreCase(order.getSecretAccessKey())) {
ParcelableTransaction transaction = intent.getExtras().getParcelable(INTENT_TRANSACTION_KEY);
}
}
}
Listagem de Pedidos
Na listagem de pedidos, é possível obter todas os pedidos (Orders) abertas na Cielo LIO pelo aplicativo do parceiro. Para isso, basta utilizar a função abaixo, que retorna os pedidos de forma paginada:
//Busca 10 items da primeira página
ResultOrders resultOrders = orderManager.retrieveOrders(10, 0);
ATRIBUTO | DESCRIÇÃO | DOMÍNIO |
---|---|---|
pageSize | quantidade de items por página | Integer |
page | número da página requistada (iniciando em 0) | Integer |
O objeto ResultOrders contém uma lista com todas as ordens abertas assinadas com as credenciais da aplicação.
Finalizar uso do OrderManager
Após executar todas as operações de pagamento e caso não seja necessário utilizar o objeto orderManager, utilize método unbind para desvincular o contexto e evitar problemas de integridade.
Fique atento ao local onde o unbind()
será executado para evitar problemas com ciclo de vida da Activity ou Fragment que foi vinculado ao serviço.
É importante lembrar que se o contexto for alterado, é preciso desvincular o serviço (ex.: troca de Activity)
Utilize o método abaixo para finalizar o uso do OrderManager:
orderManager.unbind();
Informações do terminal
Todas as informações referentes ao terminal, que foram expostas, estão disponíveis no InfoManager
InfoManager infoManager = new InfoManager();
Nível de Bateria
Para consultar o nível de carga da LIO, basta utilizar o métdo abaixo:
infoManager.getBatteryLevel(context);
O valor da bateria será retornado em uma
Float
contendo um valor de 0 a 1 em caso de sucesso e -1 em caso de erro.
Verificar Modelo da LIO
O SDK disponibiliza um método para verificar qual modelo da LIO o app está instalado. Basta acessar da seguinte forma:
infoManager.getDeviceModel();
O mesmo irá retornar um enum do tipo DeviceModel
com o modelo correspondente.
Obtendo informações do usuário (EC e Número Lógico)
Através do SDK, é possível recuperar os dados do cliente e número lógico de maneira simples utilizando o método abaixo:
infoManager.getSettings(context);
Esta função, retornará um objeto do tipo Settings onde é possível recuperar as informações do usuário. Abaixo, segue um descritivo de atributos do objeto Setttings.
ATRIBUTO | DESCRIÇÃO | DOMÍNIO |
---|---|---|
merchantCode | Código do cliente | String |
logicNumber | Número lógico da LIO | String |
Impressão
A Cielo LIO permite que aplicações utilizem o método de impressão por imagem para imprimir dados importantes ou necessários para o negócio do cliente. Para realizar estas ações, basta utilizar o método listado abaixo.
PrinterManager printerManager = new PrinterManager(context);
Você deverá utilizar o seguinte callback como parâmetro de método para receber os estados relacionados à impressão.
PrinterListener: Um callback que informa sobre todas as ações tomadas durante o processo de impressão. As seguintes ações pode ser notificadas: • onSuccess - Quando uma impressão é realizada com sucesso. • onError - Quando acontece um erro na impressão. • onWithoutPaper - Quando não há papel suficiente para realizar a impressão.
PrinterListerner printerListener = new PrinterListener() {
@Override public void onPrintSuccess(int printedLines) {
Log.d(TAG, "onPrintSuccess");
}
@Override public void onError(@Nullable Throwable e) {
Log.d(TAG, "onError");
}
@Override public void onWithoutPaper() {
Log.d(TAG,"onWithoutPaper");
}
});
Atenção: para alterações na view do aplicativo é necessário rodar o código do callback dentro de um bloco runOnUiThread.
@Override public void onPrintSuccess(int printedLines) {
runOnUiThread(new Runnable() {
@Override
public void run() {
showDialog();
}
});
}
Mapa de Estilos de Impressão
Você pode formatar a sua impressão criando mapas de estilos utilizando os parâmetros disponíveis:
Atributo | Descrição | Valores |
---|---|---|
PrinterAttributes.KEY_ALIGN |
Alinhamento da impressão | PrinterAttributes.VAL_ALIGN_CENTER PrinterAttributes.VAL_ALIGN_LEFT PrinterAttributes.VAL_ALIGN_RIGHT |
PrinterAttributes.KEY_TEXTSIZE |
Tamanho do texto | Valores inteiros |
PrinterAttributes.KEY_TYPEFACE |
Fonte do texto | Trabalha com um inteiro de 0 a 8, onde cada um é uma fonte diferente. |
PrinterAttributes.KEY_MARGINLEFT |
Margem esquerda | Valores inteiros |
PrinterAttributes.KEY_MARGINRIGHT |
Margem direia | Valores inteiros |
PrinterAttributes.KEY_MARGINTOP |
Margem superior | Valores inteiros |
PrinterAttributes.KEY_MARGINBOTTOM |
Margem inferior | Valores inteiros |
PrinterAttributes.KEY_LINESPACE |
Espaçamento entre as linhas | Valores inteiros |
PrinterAttributes.KEY_WEIGHT |
Varíavel utilizada quando se trbaalho com impressão de múltiplas colunas, para escolher o peso de cada coluna | Valores inteiros |
Exemplo de mapas de estilos:
HashMap<String, Integer> alignLeft = new HashMap<>();
alignLeft.put(PrinterAttributes.KEY_ALIGN, PrinterAttributes.VAL_ALIGN_LEFT);
alignLeft.put(PrinterAttributes.KEY_TYPEFACE, 0);
alignLeft.put(PrinterAttributes.KEY_TEXT_SIZE, 20);
HashMap<String, Integer> alignCenter = new HashMap<>();
alignCenter.put(PrinterAttributes.KEY_ALIGN, PrinterAttributes.VAL_ALIGN_CENTER);
alignCenter.put(PrinterAttributes.KEY_TYPEFACE, 1);
alignCenter.put(PrinterAttributes.KEY_TEXT_SIZE, 20);
HashMap<String, Integer> alignRight = new HashMap<>();
alignRight.put(PrinterAttributes.KEY_ALIGN, PrinterAttributes.VAL_ALIGN_RIGHT);
alignRight.put(PrinterAttributes.KEY_TYPEFACE, 2);
alignRight.put(PrinterAttributes.KEY_TEXT_SIZE, 20);
Impressão de imagem
Para imprimir imagens utilize o método printImage()
do PrinterManager.
O método recebe como parâmetro o bitmap
a ser impresso, um mapa de estilos de impressão e um listener para tratar o retorno da impressão.
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.cielo);
printerManager.printImage(bitmap, alignCenter, printerListener);
Imagem a ser impressa | Resultado final |
---|---|
![]() |
![]() |
Atributo | Descrição | Domínio |
---|---|---|
bitmap | Imagem a ser impressa. | Bitmap |
style | Mapa de estilos de impressão | Map<String, Int> |
printerListener | Callback de impressão. | cielo.sdk.order.PrinterListener |
Fluxo para Integração
- Leia toda a documentação sobre a Integração Local.
- Crie sua conta no Portal de Desenvolvedores da Cielo para obter todas as funcionalidades que o portal pode oferecer para você, desenvolvedor. É obrigatório possuir uma conta para gerar um Client-Id.
- Realizando o cadastro de Client ID, o desenvolvedor recebe os tokens
- (Client ID e Access-Token) e consegue utilizar o Cielo LIO Order Manager SDK. Realize os testes no Emulador Cielo Lio Confira o link: Download do Emulador
- Acesse a Cielo Store e faça o upload do APK da sua aplicação. Ao término do upload, submeta seu aplicativo para certificação e preencha todas as informações necessárias.
- Ao término do upload submeta seu aplicativo, no próprio ambiente da Cielo Store, para certificação e preencha todas as informações necessárias.
- Assim que a certificação for concluída, o desenvolvedor receberá um e-mail e deverá acessar novamente a Cielo Store para promover o aplicativo para produção.
- Agora seu aplicativo já está disponível para download na Cielo Store. Sucesso!! Aproveite ao máximo tudo que a Integração Local Cielo LIO pode oferecer para você!!
Release Notes
Na tabela abaixo, é possível verificar as funcionalidades do SDK disponíveis por versão da Cielo LIO e Cielo Mobile.
Funcionalidade | Versão Cielo LIO | Versão Cielo Mobile |
---|---|---|
createDraftOrder(String reference); placeOrder(Order order); updateOrder(Order order); checkoutOrder(String orderId, PaymentListener paymentListener); checkoutOrder(String orderId,long value, PaymentListener paymentListener); | 1.10.2 | 1.9.1 |
retrievePaymentType(); checkoutOrder(String orderId,long value, String primaryCode, String secondaryCode, PaymentListener,paymentListener); | 1.12.0 | 1.10.3 |
retrieveOrders(int pageSize, int page); | 1.13.0 | 1.10.5 |
checkoutOrder (String orderId,long value, String primaryCode, String secondaryCode, Long installments, PaymentListener paymentListener); | 1.14.0 | 1.12.1 |
cancelOrder (Context context, String orderId, Payment payment, CancellationListener paymentListener); cancelOrder(Context context, String orderId, Payment payment, Long amount, CancellationListener paymentListener); | 1.16.7 | 1.12.10 |
Atenção: Se for utilizada uma funcionalidade que não esteja disponível, será lançada uma exceção – UnsupportedOperationExcepetion –, que deve ser tratada pelo aplicativo.
Para descobrir a versão do aplicativo Cielo LIO (versão do Launcher) e Cielo Mobile, bem como utilizar todas as funcionalidades do Cielo LIO Order Manager SDK, acesse “Sobre a Cielo LIO” (Ajuda -> Sobre a Cielo LIO) para obter as informações sobre os aplicativos instalados na Cielo LIO.
Code Sample
O código do exemplo do aplicativo integrado com o Cielo LIO Order Manager SDK encontra-se disponível no GitHub.
Vídeo Demo
No vídeo abaixo, é possível ver um exemplo de aplicativo integrado com o Cielo LIO Order Manager SDK, utilizando a função de pagamento de valores do SDK.
Clique na imagem acima, para acessar o vídeo
Integração Híbrida
O processo de integração híbrida é um pouco diferente da integração com o SDK (Integração Local). Para parceiros que não estão integrando com a linguagem nativa Java ou Kotlin a integração hibrida via deep link é uma opção.
Credenciais
Você pode solicitar as credenciais (client-id/access-token) diretamente via PORTAL DE DESENVOLVEDORES.
Integração Híbrida Pagamento
É necessário definir um contrato de resposta com a LIO para que a mesma possa responder após o fluxo de pagamento/cancelamento/impressão. Esse contrato deve ser definido no manifest.xml da aplicação conforme o exemplo abaixo:
<activity android:name=".ResponseActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:host="response" android:scheme="order" />
</intent-filter>
</activity>
Os nomes “response” e “order” podem ser substituídos pelo que fizer sentido no seu aplicativo. Lembrando que na hora de fazer a chamada de pagamento, você deve informar os mesmos nomes para receber o callback da LIO. Para realizar o pedido de pagamento é preciso criar um json seguindo o formato definido abaixo e converte-lo para BASE64:
{
"accessToken": "Seu Access-token",
"clientID": "Seu Client-id",
"email": "emaildocliente@email.com",
"installments": 0,
"items": [
{
"name": "Geral",
"quantity": 1,
"sku": "10",
"unitOfMeasure": "unidade",
"unitPrice": 10
}
],
"paymentCode": "DEBITO_AVISTA",
"value": "10"
}
Lista de paymentCode
Disponibilizamos também a lista do campo “paymentCode”:
PaymentCode |
---|
DEBITO_AVISTA |
DEBITO_PAGTO_FATURA_DEBITO |
CREDITO_AVISTA |
CREDITO_PARCELADO_LOJA |
CREDITO_PARCELADO_ADM |
CREDITO_PARCELADO_BNCO |
PRE_AUTORIZACAO |
CREDITO_PARCELADO_CLIENTE |
CREDITO_CREDIARIO_CREDITO |
VOUCHER_ALIMENTACAO |
VOUCHER_REFEICAO |
VOUCHER_AUTOMOTIVO |
VOUCHER_CULTURA |
VOUCHER_PEDAGIO |
VOUCHER_BENEFICIOS |
VOUCHER_AUTO |
VOUCHER_CONSULTA_SALDO |
VOUCHER_VALE_PEDAGIO |
CREDIARIO_VENDA |
CREDIARIO_SIMULACAO |
CARTAO_LOJA_AVISTA |
CARTAO_LOJA_PARCELADO_LOJA |
CARTAO_LOJA_PARCELADO |
CARTAO_LOJA_PARCELADO_BANCO |
CARTAO_LOJA_PAGTO_FATURA_CHEQUE |
CARTAO_LOJA_PAGTO_FATURA_DINHEIRO |
FROTAS |
PIX (EM PILOTO) |
Como explicado anteriormente, é preciso definir o contrato de resposta (host e scheme), aqui será utilizado essa configuração no parâmetro urlCallback. A chamada de pagamento deve ser feita da seguinte forma:
var base64 = getBase64(jsonString)
var checkoutUri = "lio://payment?request=$base64&urlCallback=order://response"
Após preparar a URI basta realizar a chamada de intent do android utilizando o comando específico da linguagem híbrida.
var intent = Intent(Intent.ACTION_VIEW, Uri.parse(checkoutUri))
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent)
Com o pagamento finalizado a LIO retornará para a uri configurada inicialmente um JSON seguindo o formato exemplificado abaixo:
{
"createdAt":"Jun 8, 2018 1:51:58 PM",
"id":"ba583f85-9252-48b5-8fed-12719ff058b9",
"items":[
{
"description":"",
"details":"",
"id":"898e7f40-fa21-42d0-94d4-b4e95c4fd615",
"name":"cocacola",
"quantity":2,
"reference":"",
"sku":"1234",
"unitOfMeasure":"unidade",
"unitPrice":250
},
{
"description":"",
"details":"",
"id":"4baea4c2-5499-4783-accc-0f8904970861",
"name":"pepsi",
"quantity":2,
"reference":"",
"sku":"4321",
"unitOfMeasure":"unidade",
"unitPrice":280
}
],
"notes":"",
"number":"",
"paidAmount":1450,
"payments":[
{
"accessKey":"XXXXXXXXXXXXXXX",
"amount":1450,
"applicationName":"com.ads.lio.uriappclient",
"authCode":"140126",
"brand":"Visa",
"cieloCode":"799871",
"description":"",
"discountedAmount":0,
"externalId":"6d5f6f86-7870-4aed-b79f-0a26d6c61743",
"id":"bb9c6305-95e5-4024-8152-503d064c0224",
"installments":0,
"mask":"424242-4242",
"merchantCode":"0000000000000003",
"paymentFields":{
"isDoubleFontPrintAllowed":"false",
"hasPassword":"false",
"primaryProductCode":"4",
"isExternalCall":"true",
"primaryProductName":"CREDITO",
"receiptPrintPermission":"1",
"isOnlyIntegrationCancelable":"false",
"upFrontAmount":"0",
"creditAdminTax":"0",
"firstQuotaDate":"0",
"isFinancialProduct":"true",
"hasSignature":"true",
"hasPrintedClientReceipt":"false",
"hasWarranty":"false",
"applicationName":"com.ads.lio.uriappclient",
"interestAmount":"0",
"changeAmount":"0",
"serviceTax":"0",
"cityState":"Barueri - SP",
"hasSentReference":"false",
"v40Code":"4",
"secondaryProductName":"A VISTA",
"paymentTransactionId":"6d5f6f86-7870-4aed-b79f0a26d6c61743",
"avaiableBalance":"0",
"pan":"424242-4242",
"originalTransactionId":"0",
"originalTransactionDate":"08/06/18",
"secondaryProductCode":"204",
"hasSentMerchantCode":"false",
"documentType":"J",
"statusCode":"1",
"merchantAddress":"Alameda Grajau, 219",
"merchantCode":"0000000000000003",
"paymentTypeCode":"1",
"hasConnectivity":"true",
"productName":"CREDITO A VISTA - I",
"merchantName":"POSTO ABC",
"entranceMode":"141010104080",
"firstQuotaAmount":"0",
"cardCaptureType":"1",
"totalizerCode":"0",
"requestDate":"1528476655000",
"boardingTax":"0",
"applicationId":"cielo.launcher",
"numberOfQuotas":"0",
"document":"000000000000000"
},
"primaryCode":"4",
"requestDate":"1528476655000",
"secondaryCode":"204",
"terminal":"69000007"
}
],
"pendingAmount":0,
"price":1060,
"reference":"Order",
"status":"ENTERED",
"type”:”9”,
"updatedAt":"Jun 8, 2018 1:51:58 PM"
}
Recuperando dados do pagamento
Para recuperar os dados de pagamento basta acessar a intent na activity de resposta e no parâmetro data, acessar a uri, da seguinte forma:
val responseIntent = intent
if (Intent.ACTION_VIEW == responseIntent.action) {
val uri = responseIntent.data
val response = uri.getQueryParameter("response")
val data = Base64.decode(response, Base64.DEFAULT)
val json = String(data)
}
Lembrando que o parâmetro “response” é o mesmo que foi configurado como resposta na chamada de pagamento.
Cancelamento na integração híbrida
Para realizar o cancelamento é preciso criar um json seguindo o formato definido abaixo e converte-lo para BASE64:
{
"id": "id da ordem",
"clientID": "seu client ID",
"accessToken": "seu access token",
"cieloCode": "123",
"authCode": "123",
"value": 1000
}
A chamada de cancelamento deve ser feita da seguinte forma. Como explicado anteriormente, é preciso definir o contrato de resposta, aqui será utilizado essa configuração no parâmetro urlCallback:
var base64 = getBase64(jsonString)
var checkoutUri ="lio://payment-reversal?request=$base64&urlCallback=order://response"
Para recuperar os dados basta acessar a intent na activity de resposta cadastrada em sem Manifest e no parâmetro data, acessar a uri, da seguinte forma:
val responseIntent = intent
if (Intent.ACTION_VIEW == responseIntent.action) {
val uri = responseIntent.data
val response = uri.getQueryParameter("response")
val data = Base64.decode(response, Base64.DEFAULT)
val json = String(data)
}
Impressão
Para realizar a impressão, basta montar uma URL com o seguinte formato:
lio://print?request=$base64&urlCallback=order://response
Segue abaixo, alguns exemplos de impressão:
Texto
{
"operation": "PRINT_TEXT",
"styles": [{}],
"value": ["teste impressão"]
}
Imagem
{
"operation": "PRINT_IMAGE",
"styles": [{}],
"value": ["/storage/emulated/0/saved_images/Image-5005.jpg"]
}
Múltiplas Colunas
{
"operation": "PRINT_MULTI_COLUMN_TEXT",
"styles": [
{
"key_attributes_align": 1,
"key_attributes_textsize": 30,
"key_attributes_typeface": 0
},
{
"key_attributes_align": 0,
"key_attributes_textsize": 20,
"key_attributes_typeface": 1
},
{
"key_attributes_align": 2,
"key_attributes_textsize": 15,
"key_attributes_typeface": 2
}
],
"value": [
"Texto alinhado à esquerda.\n\n\n",
"Texto centralizado\n\n\n",
"Texto alinhado à direita\n\n\n"
]
}
Code Sample
Disponiblizamos 2 exemplos em diferentes linguagens para auxiliar no desenvolvimento:
Acesse o nosso projeto de exemplo em: React Native
Acesse o nosso projeto de exemplo em: Flutter
Integração Remota
Apresentação
O objetivo da Integração Remota da Cielo LIO é permitir que o lojista continue utilizando sua solução de frente de caixa (Automação Comercial ou PDV) e a integre com o módulo de pedidos e pagamentos da Cielo LIO através de uma API construída no padrão RESTful.
Dessa forma, toda a gestão do estabelecimento comercial fica sob responsabilidade da Automação Comercial e, no momento de realizar o pagamento, a Cielo LIO é utilizada.
A API Order Manager da Cielo LIO possui as seguintes características:
- Recursos REST, de forma que seja possível acessar por meio de semântica HTTP padrão.
- Códigos de status HTTP para comunicar o sucesso/erro nas chamadas.
- Todas as requisições e respostas encontram-se no formato JSON.
- As seções abaixo possuem todas as informações necessárias para realizar a integração de forma rápida e segura.
Vídeo Demo
No vídeo abaixo é possível ver um exemplo de Automação Comercial integrada com a API Order Manager da Cielo LIO.
Clique na imagem acima, para acessar o vídeo.
Code Sample
O código do exemplo da Automação Comercial integrada com a API Order Manager da Cielo LIO encontra-se disponível no GitHub.
Fluxo para Integração
API Docs
Nessa documentação, o desenvolvedor encontra todas as informações sobre os Endpoints, Entidades e Recursos disponíveis na API.
Você poderá consultar os dados de entrada, exemplos de requisição e os dados de saída. Assim como entender o fluxo básico da utilização da API Order Manager da Cielo LIO.
Endpoints
Todas as chamadas devem ser executadas utilizando as respectivas credenciais dos ambientes de sandbox e produção.
Sandbox
O ambiente de sandbox é destinado à realização de testes com parceiros da Cielo. Esse ambiente usa simuladores de integração. Assim, as operações não são executadas em ambiente produtivo.
Para utilizar o ambiente de sandbox, não é necessário que você forneça o número do estabelecimento. Você poderá iniciar os testes sem a necessidade de ter uma Cielo LIO. Para obter os tokens de sandbox, crie uma conta no portal e crie o Client-Id.
Utilize o endereço de sandbox abaixo para realizar os testes:
https://api.cielo.com.br/sandbox-lio/order-management/v1
Produção
O ambiente de produção é o ambiente transacional integrado ao ambiente da Cielo. As operações realizadas nesse ambiente não podem ser desfeitas.
Para utilizar o ambiente de produção, é necessário que você entre em contato através do formulário. Juntamente com os dados pessoais, forneça o número do estabelecimento. Para utilizar o ambiente de produção, é necessário que você possua uma Cielo LIO.
Utilize o endereço de produção abaixo para realizar as requisições:
https://api.cielo.com.br/order-management/v1
Já fez os testes em sandbox e deseja solicitar os tokens?
Clique em Solicitar Tokens
É necessário estar logado!
HTTP Headers
Todas as chamadas da API Integração Remota Cielo LIO Order Manager necessitam que as informações abaixo estejam presentes no Header na requisição:
Client-Id: Identificação de acesso. Sua geração ocorre no momento da criação pelo painel do desenvolvedor. Seu valor pode ser visualizado na coluna “Client ID”, dentro do menu “Desenvolvedor” -> “Client ID Cadastrados”.
Access-Token:Identificação do token de acesso, que armazena as regras de acesso permitidas ao Client ID. Sua geração ocorre no momento da criação do Client ID pelo painel do desenvolvedor. Seu valor pode ser visualizado clicando em “detalhes” na coluna “Access Tokens”, dentro do menu “Desenvolvedor” -> “Client ID Cadastrados”.
Merchant-Id: Token que identifica o estabelecimento comercial dentro do servidor Order Manager da Cielo LIO. Sua geração ocorre durante o processo de cadastro do Client ID. Seu valor pode ser visualizado na coluna “Merchant ID”, dentro do menu “Desenvolvedor” -> “Client ID Cadastrados”.
HTTP Status Code
Código | Erro | Descrição |
---|---|---|
200 | OK | Operação realizada com sucesso. |
201 | Created | A solicitação foi realizada, resultando na criação de um novo recurso. |
204 | Empty | Operação realizada com sucesso, mas nenhuma resposta foi retornada. |
400 | Bad Request | A requisição possui parâmetro(s) inválido(s). |
401 | Unauthorized | O token de acesso não foi informado ou não possui acesso às APIs. |
403 | Forbidden | O acesso ao recurso foi negado. |
404 | Not Found | O recurso informado no request não foi encontrado. |
413 | Request is to Large | A requisição está ultrapassando o limite permitido para o perfil do seu token de acesso. |
422 | Unprocessable Entity | A requisição possui parâmetros obrigatórios não informados. |
429 | Too Many Requests | O consumidor estourou o limite de requisições por tempo. |
500 | Internal Server Error | Erro não esperado; algo está quebrado na API |
Status de pedido
Abaixo é apresentada uma máquina de estados, com os possíveis estados que um pedido pode assumir desde o momento de sua criação até o seu término:
Entidades
Order
A Order é uma representação de um pedido para a venda de um ou mais produtos e/ou serviços. É fundamental que exista uma Order para que um pagamento seja realizado na Cielo LIO.
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | Texto | UUID que identifica unicamente o pedido. | criado pela API |
number | Texto | Número do pedido. Geralmente, esse número representa o identificador do pedido em um sistema externo através da integração com parceiros. | Não |
reference | Texto | Referência do pedido. Utilizada para facilitar o acesso ou a localização do mesmo. | Não |
status | Texto | Status do pedido (ENTERED, RE-ENTERED, PAID, CANCELED e CLOSED). | Sim |
created_at | Texto | Data de criação do pedido. A data deve estar no formato: YYYY-MM-DDThh:mm:ssZ (Exemplo: 20151020T13:13:29.000Z). | criado pela API |
updated_at | Texto | Data da última atualização do pedido. A data deve estar no formato: YYYY-MM-DDThh:mm:ssZ (Exemplo: 20151020T13:13:29.000Z). | criado pela API |
items | Lista (Order Item) | Lista de itens contidos no pedido. | Sim |
notes | Texto | Campo disponível para uso do Merchant para comunicação. | Não |
transactions | Lista (Transaction) | Lista de transações de pagamento (ou outros tipos) efetuadas no pedido. | Sim |
price | Número | Valor total do pedido. Exemplo: O valor de R$ 10,00 é representado como 1000. | Sim |
remaining | Número | Valor restante do pagamento do pedido. Exemplo: O valor de R$ 10,00 é representado como 1000. | Sim |
Order Item
O Order Item é uma representação dos itens presentes em uma Order. É obrigatória a existência de, no mínimo, um Item para uma Order.
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
sku | Texto | SKU do produto. Exemplo: c2f5fb9a-5542-406e-8b79-17892329cda8. | Sim |
name | Texto | Nome do produto. | Não |
description | Texto | Descrição do produto. | Não |
unit_price | Número | Valor unitário do produto. Exemplo: O valor de R$ 10,00 é representado como 1000. | Sim |
quantity | Número | Quantidade de itens. Caso não seja informado, será considerado o valor 1. | Não |
unit_of_measure | Texto | Unidade de medida (EACH, HOURS, DAYS, SECONDS, CRATE_OF_12, SIX_PACK, GALLON e LITRE). | Sim |
details | Texto | Detalhes do produto. | Não |
created_at | Texto | Data de criação do pedido. A data deve estar no formato: YYYY-MM-DDThh:mm:ssZ (Exemplo: 20151020T13:13:29.000Z). | Não |
updated_at | Texto | Data de última atualização do pedido. A data deve estar no formato: YYYY-MM-DDThh:mm:ssZ (Exemplo: 20151020T13:13:29.000Z). | Sim |
Transaction
A Transaction é uma representação com todos os pagamentos que foram realizados em uma Order. O objetivo é utilizá-la para consultar os pagamentos (transactions) que foram efetuados em uma Order.
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | Texto | “UUID” que identifica unicamente a transação. | Sim |
external_id | Texto | Identificador unico ordem. | Sim |
status | Texto | Status da transação (CONFIRMED, PENDING e CANCELLED). | Sim |
terminal_number | Número | Número do terminal da Cielo LIO em que o pagamento foi realizado. | Sim |
authorization_code | Número | Código de autorização da transação. | Sim |
number | Texto | Número Sequencial Único (NSU) da transação. | Sim |
amount | Número | Valor da transação. Exemplo: O valor de R$ 10,00 é representado como 1000. | Sim |
transaction_type | Texto | Tipo da transação (PAYMENT e CANCELLATION). | Sim |
Card
O Card é uma representação do cartão que foi utilizado para realizar o pagamento/transação.
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
brand | Texto | Bandeira do cartão (VISA e MASTER). | Sim |
mask | Número | Número do cartão mascarado | Sim |
Payment Product
O Payment Product é uma representação da forma de pagamento utilizada para realizar um pagamento. Ex.: Crédito, Débito, etc.
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
primary_product_name | Texto | Forma de pagamento (CREDITO ou DEBITO) | Sim |
secondary_product_name | Texto | Tipo de pagamento (A VISTA, PARCELADO LOJA ou PARCELADO ADM) | Sim |
number_of_quotas | Número | Número de parcelas (0 para pagamentos à vista) | Sim |
Recursos
POST - Criar um pedido
Esse recurso realiza a criação de um pedido no servidor do Order Manager.
Endpoint:
POST /orders
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
order | Order | Informações do pedido. | Sim |
Exemplo de requisição:
{
"number": "0992f1d5cee540d9a9648f4d6a9e4aa6",
"reference": "PEDIDO #1234",
"status": "DRAFT",
"items": [{
"sku": "ede8f84a8b8645cb8e576a593c25c6ed",
"name": "produto 1",
"unit_price": 500,
"quantity": 2,
"unit_of_measure": "EACH"
},
{
"sku": "c2f5fb9a5542406e8b7917892329cda8",
"name": "produto 2",
"unit_price": 1500,
"quantity": 3,
"unit_of_measure": "EACH"
},
{
"sku": "b2j4bn6j93461385r5n90453407hjk0",
"name": "produto 3",
"unit_price": 550,
"quantity": 3,
"unit_of_measure": "EACH"
},
{
"sku": "55329cda842406e8cv2f5gdf96985152d",
"name": "produto 4",
"unit_price": 2005,
"unit_of_measure": "EACH"
}
],
"notes": "Mesa 1",
"price": 9155
}
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | body | Identificador do pedido. | Sim |
Exemplo de resposta:
{
"id": "2e1d7b07-dcee-4a09-8d09-3bb02d94169d"
}
GET - Consultar pedido
Esse recurso é utilizado para obter informações sobre um pedido específico. O id do pedido é utilizado para realizar a chamada.
Endpoint:
GET /orders/
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | path parameter | Identificador do pedido. | Sim |
Exemplo de requisição:
GET
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
order | Order | Informações sobre o pedido consultado. | Não |
Exemplo de resposta:
{
{
"id": "b4d8a7dc-4250-48a3-bf18-d560d4508368",
"number": "0992f1d5-cee5-40d9-a964-8f4d6a9e4aa6",
"reference": "LOJA SUCO #1",
"status": "ENTERED",
"notes": "Mesa 6",
"price": 5250,
"created_at": "2016-09-06T19:09:49Z",
"updated_at": "2016-09-06T19:09:49Z",
"order_type": "PAYMENT",
"merchant": "0010920335960001",
"source_id": "4QeQD63ZeKsz",
"items": [{
"id": "0687f00a-0aea-48f7-85d0-64bc31977734",
"sku": "0000001",
"name": "Suco Detox",
"unit_price": 800,
"quantity": 1,
"unit_of_measure": "EACH"
},
{
"id": "cf561196-4e4c-436b-816b-80190e9a705f",
"sku": "0000010",
"name": "Suco de Uva",
"unit_price": 450,
"quantity": 5,
"unit_of_measure": "EACH"
},
{
"id": "16b4b10b-9967-477b-91a2-ecc02e6ff40c",
"sku": "0000011",
"name": "Suco de Tomate",
"unit_price": 500,
"quantity": 2,
"unit_of_measure": "EACH"
},
{
"id": "8500c747-1740-47cf-908a-3ab0f8b44193",
"sku": "0000100",
"name": "Suco de Abacaxi",
"unit_price": 400,
"quantity": 3,
"unit_of_measure": "EACH"
}
],
"transactions": []
}
}
GET - Consultar todos os Pedidos
Esse recurso é utilizado para obter a lista e as informações de todos os pedidos cadastrados no Order Manager.
Endpoint:
GET /orders/
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
merchant_id | query parameter | Token que identifica o estabelecimento comercial | Não |
number | query parameter | Número do pedido | Não |
reference | query parameter | Referência definida na criação do pedido | Não |
status | query parameter | Status do pedido (ENTERED, RE-ENTERED, PAID, CANCELED e CLOSED) | Não |
terminal_number | query parameter | Número lógico | Não |
page | query parameter | número da página requistada (iniciando em 0) | Não |
page_size | query parameter | quantidade de items por página | Não |
last_query_date | query parameter | Data inicial | Não |
Exemplo de requisição:
GET
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
order | Order | Informações sobre o pedido consultado. | Não |
Exemplo de resposta:
{
"id": "b4d8a7dc-4250-48a3-bf18-d560d4508368",
"number": "0992f1d5-cee5-40d9-a964-8f4d6a9e4aa6",
"reference": "LOJA SUCO #1",
"status": "ENTERED",
"notes": "Mesa 6",
"price": 5250,
"created_at": "2016-09-06T19:09:49Z",
"updated_at": "2016-09-06T19:09:49Z",
"order_type": "PAYMENT",
"merchant": "0010920335960001",
"source_id": "4QeQD63ZeKsz",
"items": [{
"id": "0687f00a-0aea-48f7-85d0-64bc31977734",
"sku": "0000001",
"name": "Suco Detox",
"unit_price": 800,
"quantity": 1,
"unit_of_measure": "EACH"
},
{
"id": "cf561196-4e4c-436b-816b-80190e9a705f",
"sku": "0000010",
"name": "Suco de Uva",
"unit_price": 450,
"quantity": 5,
"unit_of_measure": "EACH"
},
{
"id": "16b4b10b-9967-477b-91a2-ecc02e6ff40c",
"sku": "0000011",
"name": "Suco de Tomate",
"unit_price": 500,
"quantity": 2,
"unit_of_measure": "EACH"
},
{
"id": "8500c747-1740-47cf-908a-3ab0f8b44193",
"sku": "0000100",
"name": "Suco de Abacaxi",
"unit_price": 400,
"quantity": 3,
"unit_of_measure": "EACH"
}
],
"transactions": []
}
Na consulta de pedidos, é possível informar os parâmetro acima citados, para identificar as ordens criadas conforme mostrado no exemplo abaixo:
https://api.cielo.com.br/order-management/v1/orders/?reference=EXEMPLO_DE_REFERENCE
PUT- Alterar status de um pedido
Esse recurso realiza a alteração do status de um pedido criado. O id do pedido é utilizado para realizar a chamada.
As possíveis alterações de status são:
- PLACE (Liberar um pedido para pagamento, exibir pedido na Cielo LIO)
- PAY (Alterar um pedido para pago)
- CLOSE (Fechar um pedido)
Endpoint:
PUT /orders/?operation=
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | path parameter | Identificador do pedido. | Sim |
operation | query parameter | Operação que deve ser executada. As possíveis operações são: place (Liberar um pedido para pagamento), pay (deixar um pedido como pago) e close (Fechar um pedido). | Sim |
Exemplo de requisição:
PUT
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
N/A |
Exemplo de resposta:
N/A
O retorno 200 dessa operação representa sucesso na requisição.
DELETE - Excluir um pedido
Esse recurso é utilizado para excluir um pedido do servidor do Order Manager. O id do pedido é utilizado para realizar a chamada.
Somente os pedidos com status DRAFT podem ser excluídos.
Endpoint:
DELETE /orders/
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | path parameter | Identificador do pedido. | Sim |
Exemplo de requisição:
DELETE
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
N/A |
Exemplo de resposta:
N/A
O retorno 200 dessa operação representa sucesso na requisição.
POST - Adicionar Item/Itens em um Pedido
Esse recurso é utilizado para adicionar um ou mais itens em um pedido já criado. O id do pedido é utilizado para realizar a chamada.
Somente os pedidos com status DRAFT podem ter adição de itens.
Endpoint:
POST /orders//items
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | path parameter | Identificador do pedido. | Sim |
Exemplo de requisição:
{
"sku": "ede8f84a8b8645cb8e576a593c25c6ed",
"name": "produto 1"
"unit_price": 500,
"quantity": 2,
"unit_of_measure": "EACH"
}
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
N/A |
Exemplo de resposta:
N/A
O retorno 200 dessa operação representa sucesso na requisição.
GET - Consultar os itens de um pedido
Esse recurso é utilizado para consultar os itens presentes em um pedido. O id do pedido é utilizado para realizar a chamada.
Endpoint:
GET /orders//items
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | path parameter | Identificador do pedido. | Sim |
Exemplo de requisição:
GET
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
orderItems | Lista (OrderItem) | Lista de itens de um pedido. | Sim |
Exemplo de resposta:
[{
"id": 1,
"sku": "ede8f84a8b8645cb8e576a593c25c6ed",
"name": "produto 1"
"unit_price": 500,
"quantity": 2,
"unit_of_measure": "EACH"
},
{
"id": 2,
"sku": "c2f5fb9a5542406e8b7917892329cda8",
"name": "produto 1"
"unit_price": 1500,
"quantity": 3,
"unit_of_measure": "EACH"
}
]
PUT - Alterar um item em um pedido
Esse recurso permite alterar informações de um item de um pedido. O id do pedido e o id_item são utilizados para realizar a chamada.
Somente os pedidos com status DRAFT podem ter itens alterados.
Endpoint:
PUT /orders//items/
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | path parameter | Identificador do pedido. | Sim |
id_item | path parameter | Identificador do item do pedido. | Sim |
Exemplo de requisição:
PUT /items/8484df74-eca6-4850-8e4c-35653af0bd31
{
"sku": "ede8f84a8b8645cb8e576a593c25c6ed",
"unit_price": 500,
"quantity": 2,
"unit_of_measure": "EACH"
}
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
N/A |
O retorno 200 dessa operação representa sucesso na requisição.
DELETE - Excluir Item de um pedido
Esse recurso é utilizado para excluir um item presente em um pedido. O id do pedido e o id_item são utilizados para realizar a chamada.
Somente os pedidos com status DRAFT podem ter itens alterados.
Endpoint:
DELETE /orders//items/
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | path parameter | Identificador do pedido. | Sim |
id_item | path parameter | Identificador do item do pedido. | Sim |
Exemplo de requisição:
DELETE
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
N/A |
O retorno 200 dessa operação representa sucesso na requisição.
POST - Adicionar uma Transação
Recurso utilizado somente para Ambiente de Sandbox
Esse recurso permite que o desenvolvedor simule as transações financeiras, adicionando-as manualmente, sendo possível entender o funcionamento em uma Order.
Endpoint:
POST /orders//transactions
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
Transactions | Lista (Transaction) | Informações da Transação | Sim |
Exemplo de requisição:
POST
{
"external_id": "0b37f0d8-017a-4b11-91b9-ec1bb3e8fed3",
"status": "CONFIRMED",
"terminal_number": "12345678",
"authorization_code": "008619",
"number": "672836",
"amount": 2000,
"transaction_type": "PAYMENT",
"paymentFields": {
"primaryProductName": "CREDITO",
"secondaryProductName": "A VISTA",
"numberOfQuotas": 0
},
"card": {
"brand": "VISA",
"mask": "******5487"
}
}
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | number | Identificador da Transação | SIM |
{
id: "00219dd0-1c13-46da-91e5-1c313f0d2e83"
}
Em ambiente de Sandbox, onde não há necessidade de ter uma Cielo LIO, e consequentemente não é necessário possuir o número do estabelecimento, faz total sentido fazer essa chamada deste recurso.
Já em ambiente de Produção quem irá criar as transactions é a própria Cielo LIO conforme os pagamentos forem efetuados.
GET - Consultar as transações de um pedido
Esse recurso é utilizado para obter as informações de todas as transações realizadas em um pedido. O id do pedido é utilizado para realizar a chamada. Em ambiente de produção, uma vez que um pagamento for realizado na Cielo LIO a transactions será adicionada automaticamente no pedido e então, será possível obter as informações do pagamento realizado a partir da chamada deste recurso.
Endpoint:
GET /orders//transactions
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | path parameter | Identificador do pedido. | Sim |
Exemplo de requisição:
GET
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
transactions | Lista (Transaction) | Lista de transações de um pedido. | SIM |
Exemplo de resposta:
[
{
"id": "442bbdbe-41c8-4e22-83ee-e1a849ed3cb5",
"external_id": "0b37f0d8-017a-4b11-91b9-ec1bb3e8fed3",
"status": "CONFIRMED",
"terminal_number": "77102648",
"authorization_code": "008619",
"number": "672836",
"amount": 2000,
"transaction_type": "PAYMENT",
"payment_fields": {
"primary_product_name": "CREDITO",
"secondary_product_name": "A VISTA",
"number_of_quotas": 0
},
"card": {
"brand": "VISA",
"mask": "************3542"
}
}
]
Cancelar Pedidos
O cancelamento de pedidos é realizado apenas através da Cielo LIO. Selecione a função Cancelamento de Vendas e digite o CNPJ da empresa (o mesmo que pode ser visualizado através do comprovante de pagamento). O sistema irá solicitar a senha do supervisor. Siga todos os passos indicados nas telas seguintes para o cancelamento da venda. É importante salientar que um cancelamento só pode ser realizado em ser valor integral.
GET - Consultar as transações canceladas de um pedido
Esse recurso é utilizado para obter as informações de todas as transações canceladas em um pedido. O id do pedido é utilizado para realizar a chamada. Em ambiente de produção, uma vez que o cancelamento for realizado na Cielo LIO a transactions será adicionada automaticamente no pedido juntamente com a transaction do pagamento original.
Endpoint:
GET /orders//transactions
Dados de entrada:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
id | path parameter | Identificador do pedido. | Sim |
Exemplo de requisição:
GET
Dados de saída:
Campo | Tipo | Descrição | Obrigatório |
---|---|---|---|
transactions | Lista (Transaction) | Lista de transações de um pedido. | SIM |
Exemplo de resposta:
[
{
"id": "46019c39-989e-46e9-aa7d-d8e9414396b4",
"external_id": "95185.99407021694",
"status": "CONFIRMED",
"terminal_number": "77102648",
"authorization_code": "008619",
"number": "672837",
"amount": 2000,
"transaction_type": "CANCELLATION",
"payment_fields": {
"primary_product_name": "CREDITO",
"secondary_product_name": "A VISTA",
"number_of_quotas": 0
},
"card": {
"brand": "VISA",
"mask": "************3542"
}
},
{
"id": "442bbdbe-41c8-4e22-83ee-e1a849ed3cb5",
"external_id": "0b37f0d8-017a-4b11-91b9-ec1bb3e8fed3",
"status": "CONFIRMED",
"terminal_number": "77102648",
"authorization_code": "008619",
"number": "672836",
"amount": 2000,
"transaction_type": "PAYMENT",
"payment_fields": {
"primary_product_name": "CREDITO",
"secondary_product_name": "A VISTA",
"number_of_quotas": 0
},
"card": {
"brand": "VISA",
"mask": "************3542"
}
}
]
Fluxo Básico Utilização API Order manager Cielo LIO
Abaixo você encontra um fluxo básico para enviar um pedido para a Cielo LIO utilizando a Integração Remota:
Notificações de Mudanças na Order
O maior motivo da disponibilização da API RESTful do Order Manager é permitir que aplicações parceiras se integrem à plataforma da Cielo na cloud. Porém, uma vez que as aplicações parceiras submetem pedidos, estes devem ser pagos localmente na própria Cielo LIO. Sendo assim, as aplicações parceiras precisam de uma forma de receber notificações de mudanças do status e das transações realizadas na Order.
Para tal, é necessário que o parceiro disponibilize um Backend RESTful, que irá receber as notificações seguindo o formato abaixo. Uma vez recebidas as informações, o Backend tem a liberdade de ser utilizado da forma mais adequada ao modelo de negócio.
Atenção: Os campos podem sofrer alterações sem aviso prévio, recomendamos que o PARSE do json seja dinâmico para aceitar novos valores em campos que ja enviamos hoje. Exemplo: O campo brand, caso surja novas bandeiras o seu backend precisa estar pronto para essa alteração.
POST - Notificação de Mudança de Status
A cada modificação de status em um pedido, o servidor do Order Manager envia, via comando, as informações para o Backend do parceiro.
Atenção: O backend do parceiro deve possuir o status anterior
Requisição do Order Manager
POST
Exemplo de informação enviada pelo Order Manager
{
"id":"943f2276-5e2b-44bb-a68a-fd9b6418afa4",
"items":[
{
"id":4389df04-ef19-4217-a969-22cb6e86d8cf",
""sku"":"1",
""name"":""TESTE CALLBACK"",
""uuid"":"438232f04-ef19-4217-a969-22cb6e86d8cf",
""details"":null,
""order_id"":943f2276-5e2b-44bb-a68a-fd9b6418afa4",
"quantity":1,
"sku_type":null,
"reference":null,
"created_at":"2023-01-04T14:20:28Z",
"unit_price":2392,
"updated_at":"2023-01-04T14:20:24Z",
"description":"TESTE CALLBACK",
"unit_of_measure":"EACH"
}
],
"notes":"TESTE",
"price":2898,
"number":"1078069",
"status":"CLOSED",
"reference":"REFERENCIA DO PEDIDO",
"created_at":"2023-04-04T14:33:28Z",
"updated_at":"2023-04-04T16:19:37Z",
"transactions":[
{
"id":"d7d5cab9-f5b0-4a14-8593-9793a0aae193",
"card":{
"mask":"************3026",
"brand":"MASTERCARD"
},
"uuid":"d7d5cab9-f5b0-4a14-8593-9793a0aae193",
"amount":2392,
"number":"044976",
"status":"CONFIRMED",
"created_at":"2023-04-04T14:34:24Z",
"updated_at":"2023-04-04T16:19:37Z",
"description":"",
"external_id":"7d7d5cab9-f5b0-4a14-8593-9793a0aae193",
"payment_fields":{
"pan":"************3332",
"v40Code":8,
"typeName":"VENDA A DEBITO",
"cityState":"SAO PAULO SP",
"serviceTax":0,
"statusCode":1,
"boardingTax":0,
"hasPassword":false,
"hasWarranty":false,
"productName":"DEBITO A VISTA",
"requestDate":1680618831267,
"changeAmount":0,
"documentType":"J",
"entranceMode":"691010107080",
"hasSignature":false,
"merchantCode":"0010225646149400",
"merchantName":"NOME DO ESTABELECIMENTO",
"applicationId":"cielo.launcher",
"totalizerCode":92,
"upFrontAmount":0,
"creditAdminTax":0,
"firstQuotaDate":0,
"interestAmount":0,
"isExternalCall":true,
"numberOfQuotas":0,
"applicationName":"cielo.launcher.ORDER",
"avaiableBalance":0,
"cardCaptureType":3,
"finalCryptogram":"21FDEF2548665F36",
"hasConnectivity":true,
"merchantAddress":"QNM 17 CJH LT28",
"paymentTypeCode":1,
"firstQuotaAmount":0,
"hasSentReference":false,
"isFinancialProduct":true,
"primaryProductCode":2000,
"primaryProductName":"DEBITO",
"hasSentMerchantCode":false,
"cardLabelApplication":"Debito Nubank",
"paymentTransactionId":"d7d5cab9-f5b0-4a14-8593-9793a0aae193",
"secondaryProductCode":1,
"secondaryProductName":"A VISTA",
"originalTransactionId":"0",
"receiptPrintPermission":1,
"hasPrintedClientReceipt":false,
"isDoubleFontPrintAllowed":false,
"isOnlyIntegrationCancelable":false
},
"terminal_number":"238232",
"transaction_type":"PAYMENT",
"authorization_code":"123562"
}
]
}
POST - Notificação de Transação Realizada
A cada transação/pagamento realizada em um pedido, o servidor do Order Manager envia, via comando, as informações para o Backend do parceiro.
Requisição do Order Manager
POST
Exemplo de informação enviada pelo Order Manager
{
"id": "f0f0f0f0-f0f0-f0f0-f0f0-f0f0f0f0f0f0",
"order_id": "f0f0f0f0-f0f0-f0f0-f0f0-f0f0f0f0f0f0",
"trasaction": {
"id": "f0f0f0f0-f0f0-f0f0-f0f0-f0f0f0f0f0f0",
"external_id": "f0f0f0f0-f0f0-f0f0-f0f0-f0f0f0f0f0f0",
"description": "",
"status": "CONFIRMED",
"terminal_number": "###324625",
"authorization_code": "0#1#133",
"number": "##50##",
"amount": "1",
"transaction_type": "PAYMENT",
"payment_fields": {
"primary_product_name": "CREDITO",
"secondary_product_name": "A VISTA",
"number_of_quotas": "0"
},
"card": {
"brand": "MASTERCARD",
"mask": "************0566"
}
}
}
Notificações dos pedidos
Política de retentativa
- O envio da notificação para um pedido será retentada a cada 15 minutos, durante um período total de 7 horas.
- Em caso de falha em todas as retentativas neste período, as notificações deste mesmo pedido serão bloqueadas.
- Haverá tentativa de notificação para um pedido, mesmo que as notificações de outro pedido tenham sido bloqueadas.
Bloqueio de notificações para o EC
- O EC deixará de receber notificações caso o percentual de pedidos bloqueados seja igual ou superior a 80% nas últimas 24 horas.
Desbloqueio de notificações para o EC
- Entre em contato conosco para solicitar o desbloqueio, informando o número do EC e o endereço do serviço, caso haja alteração.