feat: enhance AbacatePay donation system with updated docs and form fields
Updated ABACATEPAY_SETUP.md with comprehensive setup guide, including environment variables, API key instructions, webhook configuration, donation flow, and field details for better integration clarity. Added required fields (phone, CPF/CNPJ) to the donation form in app/[locale]/apoiar/page.tsx to collect essential donor information and improve compliance. This ensures smoother setup and more robust donation processing.
This commit is contained in:
1 parent
00501e6699
commit
ef521876eb
9 files changed
+922
-168
No files matched your search
@@ -0,0 +1,162 @@
|
||||
# Guia de Teste - Sistema de Doações AbacatePay
|
||||
|
||||
## 🔧 Configuração Inicial
|
||||
|
||||
### 1. Criar conta no AbacatePay
|
||||
- Acesse: https://abacatepay.com
|
||||
- Crie uma conta gratuita
|
||||
- Acesse o Dashboard
|
||||
|
||||
### 2. Obter chave de API
|
||||
- No Dashboard, vá para "API Keys" ou "Configurações"
|
||||
- Copie sua **TEST API KEY** (começa com `abc_test_...`)
|
||||
- Você também precisará da **PRODUCTION API KEY** quando for para produção
|
||||
|
||||
### 3. Configurar produtos (OPCIONAL)
|
||||
O sistema de PIX não requer produtos pré-cadastrados no AbacatePay. Os valores são enviados diretamente na requisição.
|
||||
|
||||
Os produtos já estão definidos no código:
|
||||
- Café: R$ 5,00 (500 centavos)
|
||||
- Lanche: R$ 10,00 (1000 centavos)
|
||||
- Almoço: R$ 25,00 (2500 centavos)
|
||||
|
||||
### 4. Configurar variáveis de ambiente
|
||||
|
||||
Crie um arquivo `.env.local` na raiz do projeto:
|
||||
|
||||
```env
|
||||
# AbacatePay API Keys
|
||||
ABACATE_TEST_APIKEY=sua_chave_de_teste_aqui
|
||||
|
||||
# URL base da aplicação
|
||||
NEXT_PUBLIC_BASE_URL=http://localhost:3000
|
||||
```
|
||||
|
||||
**IMPORTANTE**: Não é necessário `ABACATEPAY_ACCOUNT_ID` nem produtos pré-cadastrados. O sistema PIX funciona diretamente com a API.
|
||||
|
||||
## 🧪 Testando o Sistema
|
||||
|
||||
### Ambiente de Teste (Development)
|
||||
|
||||
1. **Inicie o servidor de desenvolvimento**:
|
||||
```bash
|
||||
pnpm run dev
|
||||
```
|
||||
|
||||
2. **Acesse a página de doações**:
|
||||
```
|
||||
http://localhost:3000/pt/apoiar
|
||||
```
|
||||
|
||||
3. **Clique em um dos cards de doação**
|
||||
|
||||
4. **Verifique os logs no terminal**:
|
||||
```
|
||||
🔧 AbacatePay: Using TEST environment
|
||||
🔍 AbacatePay Request: {
|
||||
"frequency": "ONE_TIME",
|
||||
"methods": ["PIX"],
|
||||
"products": [
|
||||
{
|
||||
"externalId": "prod_...",
|
||||
"name": "Doação Café",
|
||||
"quantity": 1,
|
||||
"price": 500
|
||||
}
|
||||
],
|
||||
...
|
||||
}
|
||||
🔍 AbacatePay Response Status: 200
|
||||
```
|
||||
|
||||
5. **Resultado esperado**:
|
||||
- Status 200 ✅
|
||||
- Redirecionamento para página de pagamento do AbacatePay
|
||||
- OU exibição de QR Code PIX (modal)
|
||||
|
||||
### Estrutura da Requisição Correta
|
||||
|
||||
```json
|
||||
{
|
||||
"frequency": "ONE_TIME",
|
||||
"methods": ["PIX"],
|
||||
"products": [
|
||||
{
|
||||
"externalId": "prod_6ryJmhfZGNJGjNaYaA1YqhDn",
|
||||
"name": "Doação Café",
|
||||
"quantity": 1,
|
||||
"price": 500
|
||||
}
|
||||
],
|
||||
"returnUrl": "http://localhost:3000/apoiar/obrigado",
|
||||
"completionUrl": "http://localhost:3000/api/donations/verify"
|
||||
}
|
||||
```
|
||||
|
||||
**Campos obrigatórios:**
|
||||
- ✅ `externalId`: ID do produto pré-cadastrado
|
||||
- ✅ `name`: Nome do produto
|
||||
- ✅ `quantity`: Quantidade (sempre 1)
|
||||
- ✅ `price`: Valor em centavos (R$ 5,00 = 500)
|
||||
|
||||
## 🔍 Troubleshooting
|
||||
|
||||
### Erro: "Route POST:/v1/billing not found"
|
||||
**Solução**: Endpoint correto é `/billing/create`, não `/billing`
|
||||
|
||||
### Erro: "must have required property 'name'"
|
||||
**Solução**: Adicionar campo `name` no array de produtos
|
||||
|
||||
### Erro: "Product not found"
|
||||
**Solução**: Verificar se os IDs dos produtos estão corretos e existem no painel
|
||||
|
||||
### Erro: "Invalid API key"
|
||||
**Solução**:
|
||||
- Verifique se a chave está correta no `.env.local`
|
||||
- Certifique-se de usar `ABACATE_TEST_APIKEY` em development
|
||||
- Reinicie o servidor após alterar variáveis de ambiente
|
||||
|
||||
### Erro: "401 Unauthorized"
|
||||
**Solução**: Chave de API expirada ou inválida. Gere uma nova no painel.
|
||||
|
||||
## 📋 Checklist de Validação
|
||||
|
||||
- [ ] Conta criada no AbacatePay
|
||||
- [ ] API Key de teste obtida
|
||||
- [ ] 3 produtos criados no painel (R$ 5, R$ 10, R$ 25)
|
||||
- [ ] IDs dos produtos atualizados em `types/donation.ts`
|
||||
- [ ] Arquivo `.env.local` criado com as variáveis
|
||||
- [ ] Servidor reiniciado após configurar variáveis
|
||||
- [ ] Página `/pt/apoiar` carrega sem erros
|
||||
- [ ] Logs mostram "Using TEST environment"
|
||||
- [ ] Clique em um card envia requisição
|
||||
- [ ] Status 200 retornado
|
||||
- [ ] Redirecionamento funciona ou QR Code é exibido
|
||||
|
||||
## 🚀 Deploy em Produção
|
||||
|
||||
Quando estiver pronto para produção:
|
||||
|
||||
1. Configure as variáveis no Vercel/Netlify:
|
||||
```
|
||||
ABACATE_APIKEY=abc_live_...
|
||||
ABACATEPAY_ACCOUNT_ID=...
|
||||
NEXT_PUBLIC_BASE_URL=https://seusite.com
|
||||
```
|
||||
|
||||
2. O sistema detecta automaticamente o ambiente:
|
||||
```typescript
|
||||
const isProduction = process.env.NODE_ENV === "production";
|
||||
const apiKey = isProduction
|
||||
? process.env.ABACATE_APIKEY
|
||||
: process.env.ABACATE_TEST_APIKEY;
|
||||
```
|
||||
|
||||
3. Teste novamente em produção antes de divulgar
|
||||
|
||||
## 📞 Suporte
|
||||
|
||||
- Documentação: https://docs.abacatepay.com
|
||||
- API Reference: https://abacatepay.readme.io
|
||||
- Dashboard: https://abacatepay.com/dashboard
|
||||
|
||||
Reference in new issue
Block a user