Como manipular IPNs no Pagarme
IPNs: Um projeto de E-commerce feito pela Next4 precisou de uma implementação de manipulação de IPns (recurso interno do wooCommerce onde uma ferramenta externa pode-se comunicar através de requisições a loja, comumente usando uma url da loja para esta comunicação) do WooCommerce por meio do Pagarme, desta forma teríamos o controle sobre as transações de tal forma que poderíamos passar estes status em on demand para APIs externas, assim teríamos diversos tipos de tratamentos.
O WooCommerce possibilita uma infinidade de customizações com utilização do seus hooks (gatilhos, meio pelo qual um programador pode fazer customizações no código sem afetar o core do sistema) vinculados a cada processo que o produto irá passar, desde a construção até o consumo de ordem de pagamento no histórico do cliente.
Porém o Gateway de pagamento utilizado (Pagarme), não proveu em sua documentação mecanismos para que fizéssemos esta manipulação de forma segura e profissional.
Isso deve-se pelo foco do Pagarme fornecer um meio pelo qual o usuário possa fazer a compra usando seu mecanismo no wooCommerce de forma segura, somente isso, que é totalmente compreensível pois não existe como atendermos a todas demandas de customização sem o processo moroso e muitas vezes verborrágico de atualizações por meio de processos e testes. Cada caso é um caso em específico e uma extensão que se preze tentará trazer recursos que atendam globalmente a comunidade, focando principalmente no que se propõem a fazer.
Outro ponto é que a extensão em questão é de uso publico e sua licença é gratuita, então não há como cobrar a mais do que ela já entrega.
Por este motivo tivemos que analisar o código do pagarme e localizarmos quantos hooks (gatilhos, meio pelo qual um programador pode fazer customizações no código sem afetar o core do sistema) existiam desenvolvidos nele, e se é possível trazê-los para um ambiente onde teríamos um controle maior como um plugin customizado.
Em nossa varredura localizamos algo interessante
Note que a ultima action faz menção a api do woocomerce e chama uma função chamada ipn_handler, isso nos ajudou a entender que este hook tinha ligação direta a troca de status do pagarme as transações feitas.
Localizamos a função ipn_handler e descobrimos como ela faz os tratamentos vindos do pagarme e com isso tivemos a certeza de que ao usufruir deste método podíamos fazer as devidas modificações sem afetar o código principal da extensão.
Por fim construímos um plugin para ler as requisições e tratá-las devidamente como o cliente precisava, segue um modelo simplificado do recurso implementado:
Note que sem o hook woocommerce_api_wc_pagarme_credit_card_gateway não teríamos como fazer a implementação a ultima alternativa seria ir no ipn_handler e forçar a customização por lá. Isso não é bom, pois o código implementado pode-se perder a cada atualização de extensão.
Através deste código podemos receber e manipular toda e qualquer transação vinda do Pagarme pela IPN do wooCommerce.
Você tem algum caso similar a esse que estamos publicando? Conte aqui nos comentários e será um prazer trocar informações da área com você programador.
Sinta-se à vontade para nos perguntar sobre IPNs.
Sobre a Agência Next4
Com mais de 16 anos de expertise em Marketing Digital, oferecemos aos nossos clientes uma gama de serviços personalizados para que alcancem mais performance no âmbito digital e comercial.
Serviços como: Criação de sites e Sistemas web, Gestão de RD Station Marketing e CRM, Gestão de campanhas ADS, Gestão de Redes Sociais, Criação de conteúdo, Criação de peças publicitárias, Criação de Vídeos e muito mais.
Se a sua empresa precisa de serviços de Marketing Digital para posicionamento da marca e geração de Leads para sua equipe comercial, fale com um especialista da Next4.
Desde 2005 até hoje. In hoc Signus vinces.