Programação / PHP

Pagamento Recorrente de forma transparente com PagSeguro

Faça sua aplicação consumir o WebService do PagSeguro através de REST de uma forma totalmente transparente

Por Gustavo Web

Publicado por Gustavo Web
em 11/12/2017 às 18h15

Lista VIP UpInside

Entre para nossa lista VIP e receba vídeo aulas, artigos e tutoriais exclusivos e com prioridade

  QUERO ENTRAR

Aula exclusiva UpInside Play

Acessar aula no Play

Compartilhe:

Salve salve moqueridos, Gustavo Web aqui com mais uma aula para o UpInside Play!

Se prepara porque nessa aula você vai fazer integração com o WebService do PagSeguro para que seus clientes possam adquirir planos de você. Isso significa, que vamos implementar o pagamento recorrente de forma transparente.

Se o termo pagamento recorrente não foi familiar para você, é uma assinatura de serviço! Isso significa que o cliente não faz uma compra e parcela em 12x por exemplo... No dia certo do vencimento, será debitado o valor estipulado automaticamente do cartão de crédito dele e a maior vantagem disso é que não compromete o saldo do cartão do cliente...

... e já começou a pensar nas possibilidades? Os seus pagamentos de hospedagem, contratos de prestação de serviço, até mesmo as cobranças daquela aplicação SAAS que você está pensando!

Referências:

Pois bem, antes de mais delongas, vou deixar aqui todos os links de referência que utilizamos nessa aula para chegar até o resultado final.

Link para a página de Pagamentos Recorrentes do PagSeguro

Link para a página de Pagamentos Transparentes

Link para a página da Documentação e Referências da API

Link para a página de API de Notificações

Link para o página para logar no seu Painel de Vendedor (SandBox)

Overview PagSeguro:

Antes de por a mão na massa, vamos compreender como funciona o pagamento transparente, as formas que temos de criar nossos planos e os itens básicos para fazermos uma adesão.

Formas de Recorrência:

O PagSeguro disponibiliza duas formas de recorrência. Essas duas formas são distintas de acordo com o que é configurado em cada plano. O plano é o conjunto de informações pertinentes a periodicidade de que cada pagamento será feito, bem como o valor.

É possível setar algumas propriedades a mais como: Tempo de Teste (trial), Número máximo de clientes que podem estar nesse plano, Quantidade de recobranças.... Enfim! Para maiores detalhes, dá uma consultada nas páginas que deixei aqui nas referências! Vamos as formas:

Recorrência Automática:

Depois de feita a configuração, toda a responsabilidade por efetuar a cobrança fica por conta do PagSeguro. Embora algumas opções são limitadas na configuração do plano, é nesse formato que vamos executar aqui nessa aula.

Recorrência Personalizada:

Nesse formato você tem algumas personalizações a mais que podem ser feitas no plano, mas todo o mês na periodicidade que confere esse plano, você deverá fazer uma chamada de um serviço no WebService para que possa ser feito a cobrança do seu cliente.

Itens Essenciais:

Você também notará que eu inicio o meu projeto já com 3 vetores simples definidos, e esses são os nossos itens básicos para que possamos fazer a aquisição de um plano e vincular ele com um cliente de nossa base:

Plano:

Está claro que precisamos ter um plano parametrizado no PagSeguro de acordo com as especificidades indicadas pela documentação. O processo de criação é bastante simples! Você vai notar que é um passo um pouco mais demorado, mas não por conta do plano em si... mas sim por ter que criar a estrutura REST para que seja executado com sucesso o nosso primeiro objetivo.

Usuário:

Esse é um usuário da nossa base de dados! Ou seja, o cliente que fará a aquisição do plano! Se você notar na aula, eu tenho um e-mail parametrizado com @sandbox.pagseguro.com.br, isso porque para fazer uma compra de teste, eu preciso que o meu comprador seja um de teste também! Se você tentar com outro e-mail, por mais que seja fictício, o WS não deixará você concluir a ação.

Cartão de Crédito:

Para a recorrência automática, só é permitido a aquisição de planos por meio de cartão de crédito! Portanto, boleto não será implementado.

De acordo com os passos que seguimos durante a aula, eu vou alimentando os meus vetores com as informações faltantes até que tenhamos todos os dados necessários para fazer a aquisição.

Integração:

Antes de sair codificando, eu fiz um trabalho minucioso de ler várias páginas da documentação e aconselho você ler todas as páginas da referência também para diagnosticar todas as possibilidades e fluxos desse recurso.

Não vou mentir, a integração é relativamente chata de se fazer... Mas não por questões técnicas... Por culpa do próprio PagSeguro ser/estar meio desorganizado. Explico:

SDK:

O PagSeguro disponibiliza uma SDK (System Development Kit) para fazer a integração, mas infelizmente até o momento não há esse recurso dentro do lib que eles fornecem!  Então, para não utilizar um fragmento do SDK em conjunto das classes que vamos criar, resolvi criar tudo do zero! Assim fazemos a intepretação do WS e criamos nossos métodos.

Há uma etapa (resgatar o token do cartão de crédito) que é necessário trabalharmos com Javascript, no meu ponto de vista, mais uma falha do PagSeguro não ter disponibilizado métodos para fazer somente com PHP...

Outro problema que noto no WebService ainda, é que alguns métodos retornam em JSON e outros em XML... Então temos que ficar tratando os elementos para resgatar cada um dos tipos.

Na aula você vai notar que executo tudo por etapas! Como eu não tenho um banco de dados eu executo os exemplos e alimento vetores... Assim a aula fica mais objetiva.

Nossa Integração:

Será feita dentro dos padrões do REST. E se você se perguntar, como se diagnostica isso eu te dou a resposta...

... temos uma URI (endereço do WS) para nos comunicar com o PagSeguro, nossas transações utilizam protocolos simples (HTTP), através de verbos (POST e GET), temos um objeto trabalhável por várias linguagens como resposta (Callback em JSON ou XML) e não preciso abstrair toda a regra de negócio do PagSeguro para criar qualquer item.

Iremos trabalhar com CURL com cada um dos verbos para se comunicar com o WS.

Embora a parte do Javascript não foi encapsulada e nem criada uma estrutura para que possa ser reutilizada em outros momentos dentro da nossa aplicação, acredito que você conseguirá modularizar essa questão para adaptar a sua necessidade sem ter muito trabalho! Inclusive deixo isso como lição de casa :)

Resultado:

O que você pode esperar dessa aula é ter uma classe com responsabilidade definida com métodos de alta coesão e baixo acoplamento para implementar dentro do seu sistema. Embora aplicamos os métodos essenciais para cadastro de plano, adesão de plano, retorno de trasação e retorno de assinatura, você pode replicar os demais métodos do WS com poucas linhas. Inclusive, depois de criado a estrutura base, o método que faz a consulta de uma transação tem apenas duas linhas... é sério, saca só!

Pagamento Recorrente de forma transparente com PagSeguro

É ou não é o método que você estava esperando? E te digo mais, o método para obter a assinatura é identico... Também só possui duas linhas, simplesmente trocando o atributo action.

O método mais extenso que temos aqui é o de aquisição do plano... Mas isso é por conta dos vários parâmetros que o pagSeguro solicita, inclusive, deixo claro na aula que isso pode interferir diretamente na conversão que você tem! Mas vale lembrar, que nem todos eles são obrigatórios... Portanto, fique de olho!

Material:

Como sempre aqui nas aulas do play, eu criei um repositório público no github da Up para que vocês possam resgatar o código de lá. O método que eu cito na aula (createMemberShip) está dentro da classe Payment, só copiar e colar! Clica aqui que eu te levo para o repo :)

Se você ainda não segue a organização da Up lá no GitHub, faça isso e deixa uma estrelinha lá :)

Observações: Eu deixei o código todo comentado, e já removi os meus dados para você ter o código todo limpo! Basta alimentar as posições do vetor com seus dados e voilà, tudo pronto!

Compartilhe:

Em Programação:

Deixe seu comentário: