Documentação da API

Integre seus produtos e serviços com a plataforma LeadsAI através de nossa API de webhooks.

Webhooks simples e seguros para integração

Integrações com Plataformas Externas

A LeadsAI permite que você integre facilmente seus produtos digitais existentes com nossa plataforma. Isso significa que você pode usar a LeadsAI para vender e gerenciar leads para seus produtos ou serviços externos, enquanto nós cuidamos de todo o processo de vendas, pagamentos e qualificação de leads.

1

Configure seu produto

Durante a criação do seu produto, marque a opção "Usar plataforma externa após pagamento" e insira a URL para onde os clientes serão redirecionados após a compra, bem como a URL do webhook para receber notificações.

2

Receba notificações de pagamentos

Quando um cliente compra seu produto, processamos o pagamento e enviamos uma notificação detalhada para seu webhook, contendo todas as informações necessárias sobre o pagamento e o cliente.

3

Ative o acesso do cliente

Com os dados recebidos no webhook, você pode ativar automaticamente o acesso do cliente ao seu produto ou serviço. O cliente também será redirecionado para a URL de redirecionamento configurada.

Documentação do Webhook

Nosso webhook envia uma requisição HTTP POST para a URL configurada sempre que um pagamento for concluído com sucesso. Abaixo está a documentação completa do formato dos dados e como implementar um receptor de webhook.

Eventos do Webhook

EventoDescrição
payment.completedEnviado quando um pagamento é concluído com sucesso

Formato da Carga Útil (Payload)

A carga útil enviada para seu webhook segue o formato JSON abaixo:

{
  "event": "payment.completed",
  "payment": {
    "id": "pay_123456789",
    "reference": "REF123456",
    "amount": 1000,
    "currency": "MZN",
    "status": "COMPLETED",
    "completedAt": "2025-04-04T15:30:00Z"
  },
  "product": {
    "id": "prod_987654321",
    "name": "Curso Premium",
    "price": 1000,
    "quantity": 1,
    "category": "Educação",
    "description": "Curso completo de..."
  },
  "productOwneruserId": "user_123456",
  "customer": {
    "id": "lead_123456789",
    "email": "cliente@example.com",
    "phone": "+258865504448",
    "name": "Nome do Cliente"
  },
  "metadata": {
    "platform": "LeadsAI",
    "timestamp": "2025-04-04T15:30:00Z"
  }
}

Implementando o Receptor de Webhook

Seu receptor de webhook deve:

  • Aceitar requisições HTTP POST na URL configurada
  • Processar a carga útil JSON recebida
  • Verificar o evento (sempre será "payment.completed")
  • Ativar o acesso do cliente ao seu produto ou serviço
  • Retornar um código de status HTTP 200 para confirmar o recebimento

Importante

Seu endpoint de webhook deve responder com um código de status HTTP 200 dentro de 10 segundos. Se o endpoint não responder, consideraremos a entrega como falha e tentaremos novamente até 3 vezes.

Exemplos de Implementação

Exemplo em Node.js (Express)

// Exemplo de receptor de webhook usando Express
const express = require('express');
const app = express();
app.use(express.json());

// Endpoint para receber notificações de pagamento
app.post('/webhook/leadsai-payment', async (req, res) => {
  try {
    const data = req.body;
    
    // Verifica se é um evento de pagamento completo
    if (data.event === 'payment.completed') {
      const payment = data.payment;
      const customer = data.customer;
      const product = data.product;
      
      console.log(`Pagamento concluído: ${payment.id} para o cliente ${customer.name}`);
      
      // TODO: Implemente a lógica para ativar o acesso do cliente ao seu produto
      // Por exemplo, criar uma conta de usuário, ativar uma licença, etc.
      await activateCustomerAccess({
        customerId: customer.id,
        customerEmail: customer.email,
        customerPhone: customer.phone,
        customerName: customer.name,
        productId: product.id,
        paymentReference: payment.reference
      });
      
      // Responde com sucesso
      res.status(200).json({ success: true, message: 'Webhook processado com sucesso' });
    } else {
      // Evento desconhecido
      console.warn(`Evento desconhecido recebido: ${data.event}`);
      res.status(400).json({ success: false, message: 'Evento desconhecido' });
    }
  } catch (error) {
    console.error('Erro ao processar webhook:', error);
    res.status(500).json({ success: false, message: 'Erro ao processar webhook' });
  }
});

async function activateCustomerAccess(customerData) {
  // Implemente sua lógica para ativar o acesso do cliente
  // Por exemplo, atualizar um banco de dados, chamar outra API, etc.
}

app.listen(3000, () => {
  console.log('Servidor de webhook rodando na porta 3000');
});

Exemplo em PHP

<?php
// Exemplo de receptor de webhook em PHP

// Obtém a carga útil JSON
$payload = file_get_contents('php://input');
$data = json_decode($payload, true);

// Verifica se os dados são válidos
if (!$data || !isset($data['event'])) {
    http_response_code(400);
    echo json_encode(['success' => false, 'message' => 'Payload inválido']);
    exit;
}

// Verifica se é um evento de pagamento completo
if ($data['event'] === 'payment.completed') {
    $payment = $data['payment'];
    $customer = $data['customer'];
    $product = $data['product'];
    
    // Registra o evento
    error_log("Pagamento concluído: {$payment['id']} para o cliente {$customer['name']}");
    
    // TODO: Implemente a lógica para ativar o acesso do cliente ao seu produto
    // Por exemplo, criar uma conta de usuário, ativar uma licença, etc.
    activateCustomerAccess([
        'customerId' => $customer['id'],
        'customerEmail' => $customer['email'],
        'customerPhone' => $customer['phone'],
        'customerName' => $customer['name'],
        'productId' => $product['id'],
        'paymentReference' => $payment['reference']
    ]);
    
    // Responde com sucesso
    http_response_code(200);
    echo json_encode(['success' => true, 'message' => 'Webhook processado com sucesso']);
} else {
    // Evento desconhecido
    error_log("Evento desconhecido recebido: {$data['event']}");
    http_response_code(400);
    echo json_encode(['success' => false, 'message' => 'Evento desconhecido']);
}

function activateCustomerAccess($customerData) {
    // Implemente sua lógica para ativar o acesso do cliente
    // Por exemplo, atualizar um banco de dados, chamar outra API, etc.
}
?>

Considerações de Segurança

Ao implementar integrações com webhooks, é importante considerar aspectos de segurança para garantir que apenas requisições legítimas sejam processadas pelo seu sistema.

Valide a origem das requisições

Recomendamos que você implemente uma validação adicional, como verificar se a requisição vem de nossos servidores ou adicionar um token de autenticação à URL do webhook.

Armazene dados de forma segura

Sempre armazene informações sensíveis de clientes de forma segura e em conformidade com as leis de proteção de dados aplicáveis.

Implemente idempotência

Garanta que sua implementação seja idempotente, ou seja, se o mesmo webhook for recebido múltiplas vezes, não cause efeitos colaterais indesejados.

Precisa de Ajuda com Integrações?

Nossa equipe está disponível para ajudar com qualquer dúvida sobre integrações e implementações técnicas. Entre em contato conosco para obter suporte personalizado.