# COBRANEX

Sistema de gerenciamento de assinaturas e disparos multicanal (WhatsApp, E-mail, SMS)
com banco de dados em arquivos JSON.

## ESTE PACOTE JÁ ESTÁ ORGANIZADO PARA IR DIRETO DENTRO DA SUA PASTA `cobranex`

Sua URL final é `apps.rplay.com.br/cobranex`, e como essa pasta já existe no
seu servidor e não tem nível acima acessível, TODA a estrutura abaixo já vem
pronta para ficar **dentro** dela. Os arquivos sensíveis ficam em subpastas
protegidas por `.htaccess` (bloqueio total de acesso via navegador):

```
(conteúdo deste zip = conteúdo da sua pasta cobranex)
├── index.php               (página de login — pública)
├── dashboard.php            (painel — público, mas exige login)
├── logout.php               (público)
├── assets/                  (CSS/JS/logo — público)
├── api/                     (endpoints da API — público, mas exige login/token)
├── core/                    (PHP compartilhado — BLOQUEADO por .htaccess)
│   ├── auth.php
│   ├── db_helper.php
│   ├── notificacoes.php
│   └── gateway_pix.php
├── db/                      (arquivos .json — BLOQUEADO por .htaccess)
├── cron/                    (scripts agendados — BLOQUEADO por .htaccess)
└── logs/                    (logs do cron — BLOQUEADO por .htaccess)
```

### Como enviar

1. Abra o Gerenciador de Arquivos e entre na pasta `cobranex` que já existe no
   seu servidor (a que aparece em `apps.rplay.com.br/cobranex`).
2. **Apague tudo o que estiver dentro dela agora** (a tentativa anterior ficou
   duplicada/desorganizada).
3. Extraia este zip **direto dentro dessa pasta `cobranex`** — os arquivos e
   pastas deste zip (`index.php`, `core/`, `db/`, `cron/` etc.) devem ficar
   soltos dentro de `cobranex`, sem criar mais uma pasta `cobranex` dentro dela.
4. Acesse `https://apps.rplay.com.br/cobranex/` — deve aparecer a tela de login.

## Primeiro acesso
Usuário: RENEE
Senha: adm123
**Troque a senha imediatamente após o primeiro login.**

## Checklist pós-envio
- PHP 8.0 ou superior selecionado para o domínio.
- Pastas em 755, arquivos em 644. Se o sistema não conseguir salvar
  clientes/usuários, dê permissão de escrita (775) na pasta `db/`.
- Teste se estas URLs retornam erro 403 (proibido) — é o esperado:
  - `https://apps.rplay.com.br/cobranex/db/config.json`
  - `https://apps.rplay.com.br/cobranex/core/auth.php`
  - `https://apps.rplay.com.br/cobranex/cron/cron_notificar.php`
  Se qualquer uma delas abrir conteúdo em vez de dar erro, avise — alguns
  servidores usam Nginx puro, que ignora `.htaccess`, e aí precisamos de outra
  proteção.

## Configuração obrigatória antes de ir para produção
Edite `db/config.json` (dentro da pasta cobranex):
- Dados SMTP (envio de e-mail)
- API do gateway de SMS
- Token(s) da instância de WhatsApp (compatível com WPPConnect/Baileys/Evolution API — ajuste o payload em `cron/processar_fila.php` e `core/notificacoes.php::enviar_sms` conforme o provedor real)
- Access token do gateway PIX (Mercado Pago ou Asaas) e webhook secret

## Cron jobs necessários
No painel de hospedagem, procure "Cron Jobs" e use o **caminho físico completo**
do servidor até esta pasta (o próprio painel costuma mostrar esse caminho, algo
como `/home/rplaycom/apps.rplay.com.br/cobranex/` — confirme o caminho exato
com o suporte ou no próprio Gerenciador de Arquivos):

```
# Enfileira os lembretes de vencimento. Desde a última atualização, cadastrar
# ou editar um cliente já dispara um aviso instantâneo se o vencimento cair
# em cima da hora — mas ainda assim, deixe este cron rodando DE HORA EM HORA
# (não só 1x ao dia) para cobrir os clientes que já estavam cadastrados
# antes e foram "alcançados" pelo tempo sem ninguém mexer neles.
0 * * * * /usr/bin/php /caminho/ate/cobranex/cron/cron_notificar.php >> /caminho/ate/cobranex/logs/cron.log 2>&1

# Processa a fila de WhatsApp a cada minuto (anti-bloqueio com atraso aleatório)
* * * * * /usr/bin/php /caminho/ate/cobranex/cron/processar_fila.php >> /caminho/ate/cobranex/logs/fila.log 2>&1

# Processa a fila de E-MAILS a cada minuto — só envia de fato a partir do
# horário configurado em Mensagens > Agendamento, respeitando o intervalo
# entre cada envio (ex: 09:00, 09:00:30, 09:01:00...)
* * * * * /usr/bin/php /caminho/ate/cobranex/cron/processar_fila_emails.php >> /caminho/ate/cobranex/logs/fila_emails.log 2>&1
```

### Como funciona o agendamento de lembretes
Em **Mensagens > Agendamento de Lembretes Automáticos**, você configura:
- Em quais dias antes do vencimento avisar (ex: 5, 3, 2, 1 dia) — o aviso do
  dia do vencimento (0 dias) sempre é enviado, não precisa marcar.
- Horário de início dos e-mails (ex: 09:00).
- Intervalo entre cada e-mail (em segundos) — evita que o provedor de e-mail
  marque como spam por enviar tudo de uma vez.
- Quantos e-mails processar por execução do cron (lote).

O template "Aviso de vencimento próximo" usa a tag `{DIAS}` para mostrar
quantos dias faltam — o mesmo texto serve para 5, 3, 2 ou 1 dia, o sistema
só troca o número.

## E-mail (PHPMailer)
Rode `composer require phpmailer/phpmailer` dentro da pasta `core/` (dentro de
cobranex) para habilitar o envio de e-mail em HTML via SMTP. Sem isso, o
sistema usa `mail()` nativo como fallback.

## Webhook do Gateway PIX
Configure no painel do Mercado Pago/Asaas a URL:
`https://apps.rplay.com.br/cobranex/api/retorno_pix.php`

## Endpoint de Teste Grátis (formulário externo)
`https://apps.rplay.com.br/cobranex/api/teste_gratis.php` (POST JSON: nome, whatsapp, email opcional)

## Segurança
- `db/`, `core/`, `cron/` e `logs/` têm `.htaccess` com `Deny from all`.
  Mesmo estando dentro da pasta pública, ficam bloqueados a qualquer acesso
  direto via navegador — só o PHP interno consegue ler/escrever neles.
- Todas as leituras/escritas em JSON usam `flock()` para evitar corrupção em acesso concorrente.
