Colocar um botão “Pagar com Yappy” é a parte visível. O que evita dor de cabeça é o invisível: o valor é calculado no servidor, o pedido tem estados claros, e o sistema sabe o que fazer se o cliente fechar o app no meio do pagamento.
Este guia descreve um padrão backend-first com Laravel. Se a vitrine é WordPress ou WooCommerce, o CMS permanece como escaparate; a lógica sensível fica fora do tema. A mesma abordagem serve para Yappy (Banco General), BAC Credomatic, Paguelo Fácil e gateways unificados.
Por que importa no Panamá
Yappy é uma forma de cobrança muito usada. Um fluxo mal desenhado não só “falha no staging”: gera vendas fantasma, cobranças sem pedido, ou pedidos pagos que ninguém consegue provar para suporte ou contabilidade.
- Confiança: o cliente precisa saber se pagou ou não, sem ambiguidade.
- Operação: a equipe deve reconciliar banco vs pedidos sem Excel eterno.
- Segurança: se o navegador decide o preço, alguém o manipula.
- Escalabilidade: amanhã você pode querer BAC ou Paguelo Fácil sem reescrever a loja.
O que é o Yappy na prática
Pense no Yappy como um “guichê digital”: seu servidor pede uma intenção de cobrança, o cliente completa o pagamento no app ou redirect, e seu sistema recebe a confirmação por um canal confiável (não só pela URL de retorno).
- Cadastro do comércio e credenciais (
merchantId/ secret) no portal comercial. - O servidor gera URL ou intenção de pagamento com o valor correto.
- O usuário conclui o pagamento no fluxo do Yappy (app / redirect).
- Redirect + notificação no endpoint atualizam o pedido após validação de assinatura.
Regra de ouro: o pagamento nasce no backend
Antes de exibir o botão, o servidor deve fazer o trabalho pesado:
- Criar ou recuperar o pedido com itens, moeda e impostos.
- Calcular o total no servidor (nunca confiar no JSON do navegador).
- Salvar um registro de pagamento em estado
pendingcomorder_idinterno. - Solicitar ao Yappy a URL / token com esses valores.
- Devolver ao front apenas o necessário para continuar (redirect ou dados mínimos).
WordPress / WooCommerce sem sujar o tema
Em sites com Elementor, temas sob medida ou WooCommerce, os secrets não devem viver em functions.php nem em snippets do page builder. É como colar a chave do cofre na vitrine.
- WooCommerce cria o pedido local.
- Um endpoint ou plugin fino chama a API Laravel (gateway).
- Laravel conversa com Yappy / BAC / Paguelo Fácil.
- WordPress reflete o estado quando o backend confirma.
Implementação em Laravel (passos)
- Modelos
Order+Paymentcom estados normalizados. - Serviço
PaymentGatewaycom adapters atrás de uma interface. - Endpoint protegido para iniciar pagamento: valida carrinho, calcula total, persiste
pending. - Endpoint de callback/IPN: verifica assinatura, é idempotente, despacha job de conciliação.
- Página de retorno que consulta o estado no DB; não marca
paidpor query string. - Fila para retentativas quando o banco notifica tarde.
- Secrets apenas no env do host (Coolify: variáveis do serviço, não
.envno Git).
Estados normalizados
| Estado interno | Significado |
|---|---|
pending | Intenção criada; ainda sem confirmação confiável |
paid | Cobrança confirmada por callback / validação de assinatura |
rejected | Rejeitado pelo provedor |
cancelled | O usuário abortou |
expired | Timeout operacional |
Erros frequentes em produção
- Confirmar venda só porque o usuário chegou em
/pago-exitoso. - Deixar o secret em um plugin WordPress versionado no Git.
- Misturar lógica de Yappy, BAC e Paguelo Fácil em um único
ifgigante. - Esquecer o caso “usuário pagou e fechou o app” sem callback visível.
- Deploy com tag
lateste secrets embutidos na imagem Docker. - Não persistir o payload do provedor: impossível auditar depois.
Checklist técnico
- Credenciais apenas em variáveis de ambiente.
- Sandbox e produção separados.
- Idempotência: o mesmo
order_idnão cria duas cobranças. - Persistir payload para auditoria.
- Validar o que o provedor envia de volta (assinatura / campos).
- Jobs para retentativas de conciliação.
- Logs sem secrets nem dados de cartão.
- Página de resultado que consulta o backend.
- Healthcheck e workers ativos no deploy.
- Runbook de rotação de secrets e reprocessamento de IPN.
A integração conecta com Docker, CI/CD e Coolify, auditoria de segurança e pagamentos online .