Aguarde, Carregando...

18/06/2018

  • Erlon Martins Tostes

Integração com Cielo utilizando a API para receber pagamentos de forma transparente

Com a API da Cielo você pode efetuar transação de cartão de crédito, débito totalmente transparente além transferência eletrônica e boleto

Bora fazer requisições de pagamento com a Cielo de forma transparente sem sair da sua página e garantir uma boa conversão com transações via cartão de crédito?

Salve salve WebMasters, Gustavo Web aqui com mais uma aula para o nosso UpInsidePlay e com mais um meio de pagamento para enriquecer nossas aplicações e ter mais uma opção de requisição de pagamento!

Antes de começar, fique tranquilo e saiba que a integração com a Cielo é muuuuito simples! E o pessoal que desenvolve as API's tiveram uma boa sacada que facilita muito a nossa vida... Mas vamos por partes!

Ambientes

Assim como em outros meios de pagamento, temos o sandbox para testes e integrações e também o de produção. O que difere os ambientes são as url's de serviço (que no caso da Cielo são duas url's), o merchantId e o merchantKey.

Ponto positivo pra Cielo por não exigir que seja já filiado a eles para desenvolver a integração. As url's são fixas, portanto sem problemas... Mas já os outros dois parâmetros (merchantId e merchantKey) são gerados através de um formulário simples com a requisição de 3 inputs. Só te pedem um nome (pode ser o seu ou da aplicação), um telefone (não vi uso) e e-mail (até o momento nenhum informativo ou spam :) rs).

Esse form para resgatar essas informações, está disponível nesse link! Só efetuar o cadastro e você já sai com tudo o que precisa para autenticar dentro do sistema deles.

Quando você faz o seu cadastro junto a Cielo, obviamente que será gerado os dados do ambiente de produção.

Até aqui sem novidades.

Postman

Para quem acompanha nossas aulas do UpInsidePlay já deve ter visto diversas vezes eu e o Robson fazendo o uso desse programa. Basicamente ele auxilia você debugar requisições feitas para outras URL's, uma vez que consegue converter a requisição e a resposta para praticamente todos os padrões que temos hoje... XML, JSON, RAW... Enfim!

O programa é bem leve, tem uma interface muito amigável e no meu caso aqui está disponível somente em Inglês até o momento. E embora a pronuncia seja nula, isso não faz muita diferença na leitura e escrita :)

A principal questão aqui, é que a Cielo disponibiliza um mini tutorial de como você configura um Enviroment (ambiente) para que você não precise ficar digitando diversas vezes os parâmetros como token, id, url...

De forma geral, vamos ter 4 parâmetros dentro desse nosso ambiente que pode obviamente ser replicado para os dados de produção com poucos cliques.

E como sequência desse assunto, eles disponibilizam uma Collection do Postman com todas as requisições já prontas e com dados alimentados para que você possa ver quais são as informações de entrada e saída da integração.

Dá uma olhada no print abaixo como que fica simples e tranquilo de fazer as requisições para a Cielo.

Já deu para ver que a url está marcada como {{apiUrl}} porque é uma variável do nosso ambiente, temos o endPoint como /1/card, a requisição foi feita via POST utilizando o JSON, há 3 parâmetros no header da requisição e a resposta também foi em JSON com uma posição chamada CardToken.

Que mais precisa para desenvolver não? Tudo na mão! Mal precisa ler a documentação para conseguir criar um token de cartão de crédito.

Isso sem contar ainda que o Postman tem um "Gerador de Código" de acordo com a sua linguagem! Tem um botãozinho ali beeem discreto que quando você clica, abre uma modal onde te solicita a linguagem de programação que você quer, e voilá! Seu código está na tela :)

Agora tudo o que você precisa fazer é organizar o código!

Sua responsabilidade...

Organizar o projeto para que você possa reutilizar o código! É claro que já temos o bloco de código pronto acima, mas precisamos criar um mecanismo para que o POST e o GET possam ser reutilizados. Não só isso! É preciso também que você modele essa arquitetura de acordo com as diretrizes do seu sistema.

Lembre-se sempre que é necessário baixar o acoplamento de suas classes para que você possa ter métodos com responsabilidades específicas.

Dos males, o menos menor! Somente interpretando o Postman conseguimos chegar no resultado da classe e dos métodos que precisamos para cumprir com o nosso objetivo. Isso não torna obsoleto a documentação como um todo, afinal a gente é guiado pelo feeling e o achismo... Mas tenha sempre a documentação em mente para que possa se nortear por onde a integração te leva.

Há diversos recursos na requisição que podem parecer "a mesma coisa", ou então "sem sentido" como por exemplo o Capture, Authenticate, Recurrent e outros. Nesse caso, deve se recorrer a documentação para ver a argumentação de cada um e as devidas responsabilidades.

Isso sem contar que com a documentação você descobre itens interessante, como a pesquisa BIN! Informe os 6 primeiros dígitos do cartão e ele te devolve qual é a bandeira o tipo (crédito ou débito), internacional ou não...

Postback

No caso da Cielo não há a necessidade de se trabalhar com o Postback, porque uma vez que a transação por cartão de crédito é feita e aprovada ou não no ato, não é necessário você ter que ficar aguardando resposta por outra URL.

Portanto, o seu controlador deve conter a regra do que fazer com a resposta, ou até mesmo resgatar toda a resposta e enviar para outro método da sua classe que fique responsável por dar baixa no pagamento, remover os itens do seu estoque, enviar um e-mail e pagamento aprovado ou qualquer outra alteração que seja necessária.

Boletos

A Cielo está fazendo a emissão de boletos somente através do Banco do Brasil e Bradesco até o momento! Mas note que ela simplesmente faz a emissão do boleto para sua conta. Ela não tem responsabilidade quanto as baixas.

E como o boleto é emitido diretamente para sua conta (no caso do titular da conta Cielo), é necessário que ele tenha conta aberta em um desses bancos, contrato assinado da devida carteira para fazer a emissão e faça as baixas via CNAB ou WebService do banco... No meu ponto de vista, muito trabalho para pouco resultado!

Material de Apoio

Já passamos por alguns links durante esse artigo, mas vamos sintetizar tudo isso para ficar mais organizado!

Postman: Caso não tenha instalado, é praticamente que indispensável para trabalhar com a Cielo

Documentação Cielo API: Esse link vai te levar para a raiz de toda a documentação que a Cielo possui. Salva nos favoritos aí... CTRL + D :)

Manual de Integrações: O link da documentação que utilizamos durante a aula

Sandbox Register: App para criar as credenciais de autenticação de sandbox da Cielo

Como material de apoio ainda, eu digo para que você assista as aulas onde abordamos a estrutura REST! Basicamente estamos trabalhando sempre com a mesma estrutura para todos os meios de pagamento, tem uma aula MONSTRA do tio Robson sobre o ActiveCampaing onde também aborda o assunto...

Assim você não vai ficar perdido quando chegarmos na parte de criação dos métodos post, get, composição, atributos privados da classe... Enfim! Aqui a orientação a objetos rola solto :)

Repositório

Para consultar como a classe ficou no final, só clicar aqui e eu te levo lá para nosso GitHub, onde você vai ver que com uma classe bastante simples, estamos fazendo tudo o que é necessário para tokenizar o cartão e receber um pagamento com sucesso.

Nesse exemplo, não trabalhamos nem com composer para gerar os autoload's! Simplesmente demos um require no arquivo :)

Feedback

É muito importante para nós sabermos o que você está achando da aula! Como que está o conteúdo, se conseguiu reproduzir aí na sua máquina, se vai colocar para rodar em algum cliente :)

Me conta aqui nos comentários abaixo, e eu quero ver esses códigos rodando!

Forte abraço, e a gente se vê numa próxima aula!

Veja também

Confira mais artigos relacionados

Debugando Função no PostgreSQL

08/05/2018

  • Erlon Martins Tostes

Debugando Função no PostgreSQL

Veja como dois comandos básicos você consegue fazer uma leitura de parâmetros ou então...

Subindo Ambiente WEB na Amazon AWS EC2 com Recursos Gratuitos

10/08/2018

  • Erlon Martins Tostes

Subindo Ambiente WEB na Amazon...

Crie uma máquina que seja capaz de abrigar o wordpress com os serviços necessários como...

Trabalhe com Drag and Drop para ordernar elementos da sua página

06/07/2018

  • Erlon Martins Tostes

Trabalhe com Drag and Drop para...

Veja uma maneira descomplicada de trabalhar com o drag and drop para ordenar os elementos...