# Cash and PIX Payment Configuration

This document explains how to configure and use manual payment methods (Cash and PIX) with WhatsApp redirect to superadmin.

## Overview

The system now supports manual payments via:
- **Cash**: Cash payment
- **PIX**: PIX payment (Brazilian instant payment system)

When a tenant chooses one of these methods:
1. Account is created with `pending` status
2. A pending payment record is created
3. Tenant is redirected to a confirmation page
4. A button allows direct WhatsApp contact with superadmin
5. Superadmin confirms payment and activates account manually

## Automatic Database Configuration

**No need to run SQL migrations manually!** 

The system automatically creates all necessary tables and configurations when restarting the server. The following changes are applied automatically:

### Database Changes (Automatic)

1. **PIX gateway added** to `payment_gateway_settings` table
2. **'pending' status** added to tenants table status ENUM
3. **WhatsApp settings** for superadmin in `system_settings_kv`:
   - `superadmin_whatsapp_phone`
   - `superadmin_support_email`
4. **Default instructions** for PIX and Cash

### How It Works

When starting the server, the `config/database.js` file automatically executes:

```javascript
// Add PIX gateway
INSERT IGNORE INTO payment_gateway_settings (gateway_name, enabled, cash_instructions)
VALUES ('pix', FALSE, 'Contact via WhatsApp to receive PIX payment instructions.');

// Add superadmin WhatsApp settings
INSERT IGNORE INTO system_settings_kv (setting_key, setting_value, description)
VALUES ('superadmin_whatsapp_phone', '', 'SuperAdmin WhatsApp phone for payment support');

// Update tenants table status to include 'pending'
status ENUM('active', 'suspended', 'cancelled', 'trial', 'grace_period', 'pending')
```

## Superadmin Panel Configuration

### 1. Configurar WhatsApp do Superadmin

Acesse: **Configurações > Contato**

Configure:
- **WhatsApp**: Número com código do país (ex: +5511999999999)
- **Email de Suporte**: Email para contato alternativo

### 2. Habilitar Métodos de Pagamento

Acesse: **Configurações > Gateways de Pagamento**

#### Para Dinheiro (Cash):
1. Ative o gateway "Cash"
2. Configure:
   - **Instruções**: Mensagem personalizada para pagamento em dinheiro
   - **Email de Contato**: Email para dúvidas
   - **Telefone de Contato**: Telefone para contato (opcional)

#### Para PIX:
1. Ative o gateway "PIX"
2. Configure:
   - **Instruções**: Mensagem personalizada para pagamento PIX
   - **Email de Contato**: Email para dúvidas
   - **Telefone de Contato**: Telefone para contato (opcional)

## Fluxo de Registro do Tenant

### 1. Tenant Escolhe Plano e Método de Pagamento

O tenant acessa a página de registro e:
1. Preenche os dados da empresa
2. Escolhe um plano
3. Seleciona método de pagamento: **Dinheiro** ou **PIX**

### 2. Criação da Conta

Ao finalizar o registro:
- Conta é criada com status `pending`
- Registro de pagamento pendente é criado
- Tenant é redirecionado para página de confirmação

### 3. Página de Confirmação

A página `/payment-pending.html` exibe:
- ✅ Confirmação de cadastro realizado
- 📧 Email do tenant
- 📦 Plano escolhido
- 💰 Valor a pagar
- 💳 Método de pagamento
- 📱 Botão "Finalizar Pagamento via WhatsApp"

### 4. Contato via WhatsApp

Ao clicar no botão, o tenant é redirecionado para o WhatsApp com mensagem pré-configurada:

```
Olá! Acabei de me cadastrar na plataforma.

📧 Email: tenant@example.com
🏢 Empresa: Minha Empresa
📦 Plano: Plano Premium
💰 Valor: BRL 99.90
💳 Método: PIX

Gostaria de finalizar o pagamento para ativar minha conta.
```

### 5. Superadmin Confirma Pagamento

O superadmin:
1. Recebe a mensagem no WhatsApp
2. Fornece instruções de pagamento (chave PIX, dados bancários, etc.)
3. Confirma o recebimento do pagamento
4. Acessa o painel: **Tenants > [Tenant] > Ativar**
5. Marca "Pagamento Confirmado"
6. A conta é ativada automaticamente

## API Endpoints

### Público (sem autenticação)

#### Obter Configurações de Contato
```http
GET /api/public/contact-settings
```

Resposta:
```json
{
  "success": true,
  "data": {
    "whatsapp_phone": "+5511999999999"
  }
}
```

#### Criar Sessão de Pagamento
```http
POST /api/public/create-payment-session
Content-Type: application/json

{
  "tenant_id": 123,
  "plan_id": 1,
  "gateway": "pix"
}
```

Resposta para PIX/Dinheiro:
```json
{
  "success": true,
  "data": {
    "gateway": "pix",
    "payment_method": "PIX",
    "status": "pending",
    "instructions": "Entre em contato via WhatsApp...",
    "whatsapp_url": "https://wa.me/5511999999999?text=...",
    "whatsapp_phone": "+5511999999999",
    "redirect_url": "http://localhost:3000/payment-pending.html?...",
    "tenant_email": "tenant@example.com",
    "plan_name": "Plano Premium",
    "amount": 99.90,
    "currency": "BRL"
  }
}
```

### Superadmin (requer autenticação)

#### Obter Configurações de Contato
```http
GET /api/superadmin/settings/contact
Authorization: Bearer {token}
```

#### Atualizar Configurações de Contato
```http
PUT /api/superadmin/settings/contact
Authorization: Bearer {token}
Content-Type: application/json

{
  "whatsapp_phone": "+5511999999999",
  "support_email": "support@example.com"
}
```

#### Ativar Tenant (Confirmar Pagamento)
```http
POST /api/superadmin/tenants/{id}/activate
Authorization: Bearer {token}
Content-Type: application/json

{
  "payment_confirmed": true
}
```

## Gerenciamento de Tenants Pendentes

### Listar Tenants Pendentes

No painel do superadmin:
1. Acesse **Tenants**
2. Filtre por status: **Pending**
3. Visualize todos os tenants aguardando confirmação de pagamento

### Ativar Tenant

1. Clique no tenant pendente
2. Verifique os dados do pagamento
3. Clique em **Ativar Conta**
4. Marque "Pagamento Confirmado"
5. Confirme a ativação

O sistema irá:
- Atualizar status do tenant para `active`
- Atualizar status do pagamento para `completed`
- Definir data de expiração da assinatura (1 mês)
- Enviar email de confirmação ao tenant

## Segurança

- O número do WhatsApp do superadmin é armazenado de forma segura
- Apenas o número é exposto publicamente (não outras informações)
- Tenants pendentes não podem fazer login até ativação
- Logs de todas as ativações são mantidos

## Troubleshooting

### Tenant não recebe redirecionamento para WhatsApp

Verifique:
1. WhatsApp do superadmin está configurado em **Configurações > Contato**
2. Número está no formato correto: +[código país][DDD][número]
3. Gateway (Cash ou PIX) está habilitado

### Botão do WhatsApp não funciona

Verifique:
1. Formato do número: deve incluir código do país sem espaços
2. Exemplo correto: +5511999999999
3. Exemplo incorreto: (11) 99999-9999

### Tenant não consegue fazer login

Isso é esperado! Tenants com status `pending` não podem fazer login até que o superadmin ative a conta após confirmar o pagamento.

## Customização

### Personalizar Mensagem do WhatsApp

Edite o arquivo `controllers/PaymentGatewayController.js`, método `createPaymentSession`:

```javascript
const message = encodeURIComponent(
  `Sua mensagem personalizada aqui\n\n` +
  `Email: ${tenant.email}\n` +
  // ... adicione mais campos
);
```

### Personalizar Página de Confirmação

Edite o arquivo `public/payment-pending.html` para customizar:
- Cores e estilos
- Textos e mensagens
- Layout e estrutura

## Suporte

Para dúvidas ou problemas:
- Consulte a documentação completa
- Verifique os logs do sistema
- Entre em contato com o suporte técnico


## Suporte a Múltiplos Idiomas

A página de pagamento pendente (`/payment-pending.html`) suporta tradução automática em:

- **Português** (pt) - Idioma padrão
- **Inglês** (en)
- **Espanhol** (es)
- **Chinês** (zh)

### Como Funciona

As traduções são carregadas automaticamente do sistema de i18n usando as chaves `payment_pending.*`:

```json
{
  "payment_pending": {
    "page_title": "Pagamento Pendente - Cadastro Realizado",
    "title": "Conta Criada com Sucesso!",
    "subtitle": "Seu cadastro foi realizado...",
    "email_label": "Email:",
    "plan_label": "Plano:",
    "amount_label": "Valor:",
    "method_label": "Método:",
    "whatsapp_button": "Finalizar Pagamento via WhatsApp",
    "note_title": "⚠️ Importante:",
    "note_text": "Sua conta ficará pendente..."
  }
}
```

### Adicionar Novo Idioma

Para adicionar suporte a um novo idioma:

1. Crie/edite o arquivo `locales/{codigo}.json`
2. Adicione a seção `payment_pending` com todas as chaves traduzidas
3. Reinicie o servidor

O sistema detectará automaticamente o idioma do navegador do usuário e exibirá a página no idioma correspondente.

## Inicialização Automática

**Importante:** Todas as configurações de banco de dados são criadas automaticamente ao iniciar o servidor!

Não é necessário executar scripts SQL manualmente. O arquivo `config/database.js` garante que:

✅ Gateway PIX seja criado  
✅ Status 'pending' seja adicionado aos tenants  
✅ Configurações de WhatsApp do superadmin sejam criadas  
✅ Instruções padrão sejam definidas  

Basta iniciar o servidor e configurar o WhatsApp no painel do superadmin!
