# Modelo: Checkout Próprio (Cloudflare Native)

Este modelo é destinado a checkouts integrados diretamente no seu site (WooCommerce, Shopify, ou checkouts customizados). O rastreamento cobre desde a entrada no checkout até a confirmação de compra na infraestrutura Cloudflare.

---

## 🏗️ ARQUITETURA TÉCNICA (Quantum Tier)

Fluxo de conversão:
1. **Site**: Captura de passos (`InitiateCheckout`, `AddPaymentInfo`) via Fetch direto.
2. **Servidor (Worker)**: Processamento e despacho para as APIs.
3. **D1 Database**: Repositório de pedidos e perfis de compradores.

---

## 📘 IDENTIFICADORES

| Evento | Gatilho | Dados Enviados |
|---|---|---|
| `InitiateCheckout` | Entrada na página de checkout | `email`, `phone` (se preenchidos) |
| `AddPaymentInfo` | Seleção da forma de pagamento | `email`, `payment_type` |
| `Purchase` | Clique no botão de finalizar | `email`, `value`, `order_id` |

---

## 🛠️ PASSO 1: CONFIGURAÇÃO DO SITE

### 1.1 Script de Tracking de Checkout
Este script captura dados à medida que o usuário preenche o formulário.

```javascript
<script>
(function() {
  const WORKER_URL = 'https://api.seusite.com/track';
  
  // Atualização de identidade ao sair do campo (Blur Event)
  const inputs = document.querySelectorAll('input[type="email"], input[type="tel"]');
  inputs.forEach(input => {
    input.addEventListener('blur', function() {
      window.cdpTrack('IdentityUpdate', {
        email: document.querySelector('[name="email"]')?.value || '',
        phone: document.querySelector('[name="phone"]')?.value || ''
      });
    });
  });

  // Evento: Entrada no Checkout
  window.cdpTrack('InitiateCheckout', {
    num_items: 1,
    content_name: 'Produto Premium'
  });

  // Evento: Finalizar Compra
  const purchaseBtn = document.querySelector('#btn-finalizar');
  purchaseBtn?.addEventListener('click', function() {
    window.cdpTrack('Purchase', {
      value: 197.00,
      currency: 'BRL',
      order_id: 'ord_' + Date.now()
    });
  });
})();
</script>
```

---

## ⚡ PASSO 2: SERVIDOR (CLOUDFLARE WORKER)

O Worker gerencia o estado da transação e a persistência.

### 2.1 Persistência de Pedido
Ao receber o evento `Purchase`, o Worker salva na tabela `leads` com o status correspondente.

### 2.2 Despacho para APIs
- O Worker envia `Purchase` para as APIs (Meta CAPI v25.0, TikTok v1.3).
- O `InitiateCheckout` prévio no D1 permite automação de recuperação de carrinho.

---

## 📊 PASSO 3: BANCO DE DADOS D1

```sql
INSERT INTO leads (
  event_name, event_id, email, value, currency, utm_source, page_url
) VALUES (?, ?, ?, ?, ?, ?, ?);
```

---

## ✅ VALIDAÇÃO TÉCNICA

- **Captura Intermediária**: Verifique se o e-mail é enviado ao Worker antes do clique final (evento Blur).
- **Deduplicação**: O `order_id` deve ser utilizado como `event_id`.
- **Integridade D1**: O valor da compra e moeda devem ser gravados corretamente no banco.

---

## 🔄 EXEMPLOS DE INTEGRAÇÃO

### Stripe
```javascript
stripe.confirmPayment({ ... }).then(result => {
  if (!result.error) {
    cdpTrack.track('Purchase', { value: 197.0, order_id: result.paymentIntent.id });
  }
});
```

### Mercado Pago / PagSeguro
Chamar o disparo de `Purchase` no callback de `status === 'approved'`.
