Rafobase Logo

Webhooks

Configure webhooks para receber eventos de pedidos em tempo real do Guru e Yampi.

Webhooks

Rafobase usa webhooks para receber eventos de pedidos da sua plataforma de checkout. Quando um cliente usa um cupom de indicação, o checkout envia um webhook que ativa o processo de atribuição e recompensa.

Plataformas Suportadas

PlataformaEventosStatus
Gurutransaction.approved, transaction.refunded✅ Suportado
Yampiorder.paid, order.status.updated✅ Suportado

Como Funciona

Cliente                  Checkout              Rafobase
   │                        │                     │
   │  Usa código de cupom   │                     │
   │───────────────────────►│                     │
   │                        │                     │
   │  Pagamento aprovado    │   Webhook POST      │
   │◄──────────────────────│────────────────────►│
   │                        │                     │
   │                        │                     │  Extraia cupom
   │                        │                     │  Encontre membro
   │                        │                     │  Crie indicação
   │                        │                     │  Credite carteira
   │                        │                     │
   │                        │   200 OK            │
   │                        │◄────────────────────│

Guia de Configuração

Configure a URL do Webhook

No seu painel de administração do Guru:

  1. Vá para Configurações → Webhooks
  2. Clique em Adicionar Webhook
  3. Digite a URL:
    https://api.rafobase.com/webhooks/guru

Selecione Eventos

Ative os seguintes eventos:

  • transaction.approved - Quando o pagamento é confirmado
  • transaction.refunded - Quando o pedido é reembolsado

O evento transaction.approved dispara a atribuição de indicação. O evento transaction.refunded cancela créditos pendentes.

Configure o Segredo

  1. Copie o segredo do webhook do Guru
  2. No Painel do Rafobase, vá para Configurações → Integrações → Guru
  3. Cole o segredo do webhook
  4. Salve

Teste a Integração

  1. Crie um pedido de teste com um cupom de indicação
  2. Verifique Painel Rafobase → Webhooks para o evento
  3. Verifique se a indicação foi criada

Configure a URL do Webhook

No seu painel de administração do Yampi:

  1. Vá para Configurações → Integrações → Webhooks
  2. Adicione um novo endpoint de webhook:
    https://api.rafobase.com/webhooks/yampi

Selecione Eventos

Ative os seguintes eventos:

  • order.paid - Quando o pagamento é confirmado
  • order.status.updated - Para reembolsos e cancelamentos

Configure o Segredo

  1. Gere ou copie o segredo do webhook do Yampi
  2. No Painel do Rafobase, vá para Configurações → Integrações → Yampi
  3. Cole o segredo do webhook
  4. Salve

Teste a Integração

  1. Faça um pedido de teste usando um cupom de indicação
  2. Monitore Painel Rafobase → Webhooks
  3. Confirme que a indicação aparece corretamente

Exemplos de Carga de Webhook

Guru - Transação Aprovada

{
  "event": "transaction.approved",
  "data": {
    "id": "trx_xxxxx",
    "status": "approved",
    "amount": 20000,
    "currency": "BRL",
    "customer": {
      "email": "newcustomer@example.com",
      "name": "Novo Cliente",
      "document": "12345678900"
    },
    "coupon": {
      "code": "NUT-JOHN-A7X"
    },
    "subscription_id": "sub_xxxxx",
    "created_at": "2024-01-15T10:30:00Z"
  }
}

Yampi - Pedido Pago

{
  "event": "order.paid",
  "data": {
    "id": 123456,
    "status": "paid",
    "total": 20000,
    "customer": {
      "email": "newcustomer@example.com",
      "name": "Novo Cliente",
      "cpf": "123.456.789-00"
    },
    "coupon_code": "NUT-JOHN-A7X",
    "created_at": "2024-01-15T10:30:00Z"
  }
}

Segurança de Webhook

Verificação de Assinatura

Todos os webhooks incluem um cabeçalho de assinatura para verificação:

X-Rafobase-Signature: sha256=xxxxxxxxxxxxxxxx

Verifique assinaturas em seu código:

import crypto from 'crypto'

function verifySignature(payload, signature, secret) {
  const expected = `sha256=${crypto.createHmac('sha256', secret).update(payload).digest('hex')}`

  return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))
}

On this page