ServiçoProServiçoPro

Plano de Testes - Integração ASAAS

Guia passo a passo para testar checkout recorrente e emissão de notas fiscais

0 / 16 completos
Progresso Geral0%

Configuração Inicial

1. Verificar Configuração ASAAS

Confirme que a configuração do ASAAS está ativa no banco de dados

Passos:

  1. •Acesse o painel administrativo
  2. •Verifique na entidade AsaasConfig se existe um registro ativo
  3. •Confirme que environment = 'sandbox'
  4. •Verifique se api_key está preenchida

Código:

// No console do navegador ou via API:
const config = await base44.entities.AsaasConfig.list();
console.log(config);

✓ Resultado Esperado:

Deve retornar 1 registro com is_active=true e environment='sandbox'

Teste de Integração

2. Criar Cliente no ASAAS

Teste a criação de um cliente (customer) no ASAAS via API

Passos:

  1. •Use a função asaas_create_customer
  2. •Envie os dados do cliente conforme o payload
  3. •O ASAAS retornará um customer ID (ex: cus_000005821234)
  4. •Guarde esse ID para os próximos testes

Código:

const result = await base44.functions.invoke('asaas_create_customer', {
  name: "João da Silva Teste",
  email: "joao.teste@email.com",
  cpfCnpj: "12345678909",
  phone: "4733334444",
  mobilePhone: "47999998888",
  address: "Rua das Flores",
  addressNumber: "123",
  complement: "Apto 101",
  province: "Centro",
  postalCode: "89000000"
});
console.log(result.data);

Payload de Teste:

{
  "name": "João da Silva Teste",
  "email": "joao.teste@email.com",
  "cpfCnpj": "12345678909",
  "phone": "4733334444",
  "mobilePhone": "47999998888",
  "address": "Rua das Flores",
  "addressNumber": "123",
  "complement": "Apto 101",
  "province": "Centro",
  "postalCode": "89000000"
}

✓ Resultado Esperado:

Retorno com id do cliente (cus_XXXX), status 200

3. Criar Assinatura Recorrente Mensal

Crie uma assinatura recorrente mensal no ASAAS

Passos:

  1. •Use o customer ID do teste anterior
  2. •Defina billingType como BOLETO ou CREDIT_CARD
  3. •Defina value (ex: 19.90 para plano básico)
  4. •Defina nextDueDate (próxima data de vencimento)
  5. •Defina cycle como MONTHLY
  6. •O ASAAS retornará subscription ID (ex: sub_XXXX)

Código:

const result = await base44.functions.invoke('asaas_create_subscription', {
    customer: "cus_000005821234", // SUBSTITUIR pelo ID do passo anterior
    billingType: "BOLETO",
    value: 19.90,
    nextDueDate: "2025-02-01",
    cycle: "MONTHLY",
    description: "Assinatura Plano Básico - ServiçoPro",
    externalReference: "PROF_123"
    });
    console.log(result.data);

✓ Resultado Esperado:

Retorno com id da assinatura (sub_XXXX), status ACTIVE

4. Criar Checkout Recorrente (Recomendado)

Crie um checkout hospedado pelo ASAAS com assinatura recorrente

Passos:

  1. •Esta é a forma MAIS SIMPLES de receber pagamentos recorrentes
  2. •O ASAAS cria automaticamente o cliente E a assinatura
  3. •Retorna um link de checkout pronto
  4. •Cliente preenche dados do cartão diretamente no ASAAS (mais seguro)

Código:

const result = await base44.functions.invoke('asaas_create_checkout', {
  billingTypes: ["CREDIT_CARD"],
  chargeTypes: ["RECURRENT"],
  minutesToExpire: 1440,
  callback: {
    cancelUrl: "https://servicopro.online/cancelado",
    expiredUrl: "https://servicopro.online/expirado",
    successUrl: "https://servicopro.online/sucesso"
  },
  items: [{
    name: "Plano Profissional",
    description: "Assinatura mensal do Plano Profissional",
    quantity: 1,
    value: 29.90
  }],
  customerData: {
    name: "Maria Teste",
    cpfCnpj: "98765432100",
    email: "maria@teste.com",
    phone: "47988887777",
    address: "Av. Brasil",
    addressNumber: "500",
    province: "Centro",
    postalCode: "89223005"
  },
  subscription: {
    cycle: "MONTHLY",
    nextDueDate: "2025-02-01"
  }
});
console.log('Link do checkout:', result.data.checkoutUrl);

✓ Resultado Esperado:

Retorno com checkoutUrl para redirecionar o cliente

Teste de Pagamento

5. Simular Pagamento no Sandbox

No ambiente sandbox, você pode simular pagamentos manualmente

Passos:

  1. •Acesse https://sandbox.asaas.com/
  2. •Faça login na conta de testes
  3. •Vá em Cobranças > Listar cobranças
  4. •Encontre a cobrança criada
  5. •Clique em 'Confirmar pagamento' (botão de teste do sandbox)
  6. •A cobrança mudará para status RECEIVED

✓ Resultado Esperado:

Cobrança marcada como paga no painel ASAAS

Teste de Webhook

6. Configurar Webhook no ASAAS

Configure o webhook para receber notificações de pagamentos

Passos:

  1. •Acesse https://sandbox.asaas.com/
  2. •Vá em Integrações > Webhooks
  3. •Configure a URL do webhook: [URL_DA_SUA_APP]/api/asaas_webhook
  4. •Selecione os eventos: PAYMENT_CREATED, PAYMENT_RECEIVED, PAYMENT_CONFIRMED
  5. •Salve a configuração

Código:

// A URL do webhook será algo como:
https://sua-app.base44.app/api/asaas_webhook

// Para testar localmente, use um túnel como ngrok

✓ Resultado Esperado:

Webhook configurado e ativo no painel ASAAS

7. Verificar Sincronização do Webhook

Confirme que os webhooks estão sendo recebidos e processados

Passos:

  1. •Simule um pagamento no sandbox (passo 5)
  2. •O ASAAS enviará webhook para sua função
  3. •Verifique os logs da função asaas_webhook
  4. •Confirme que foi criado/atualizado registro em AsaasPayment
  5. •Verifique se o status do profissional foi atualizado

Código:

// Verificar pagamentos criados:
const payments = await base44.entities.AsaasPayment.list();
console.log(payments);

// Verificar logs da função:
// Dashboard > Code > Functions > asaas_webhook > Logs

✓ Resultado Esperado:

Registro criado na entidade AsaasPayment com status atualizado

Teste de Nota Fiscal

8. Configurar Informações Fiscais (PENDENTE)

Configure os dados fiscais da empresa no ASAAS - AGUARDANDO CADASTRO MUNICIPAL

Passos:

  1. •⏸️ PAUSADO: Depende de cadastro municipal na prefeitura local
  2. •Acesse https://sandbox.asaas.com/
  3. •Vá em Minha Conta > Informações Fiscais
  4. •Preencha os dados da empresa (pode usar dados fictícios no sandbox):
  5. • - Email fiscal
  6. • - Inscrição Municipal
  7. • - CNAE
  8. • - RPS Série e Número
  9. • - Usuário e senha da prefeitura (sandbox aceita qualquer valor)
  10. •Salve as configurações

✓ Resultado Esperado:

Configurações fiscais salvas com sucesso

9. Configurar Emissão Automática de NF na Assinatura (PENDENTE)

Ative a emissão automática de notas fiscais para uma assinatura - AGUARDANDO CADASTRO MUNICIPAL

Passos:

  1. •Use a API do ASAAS: POST /v3/subscriptions/{id}/invoiceSettings
  2. •Configure effectiveDatePeriod como ON_PAYMENT_CONFIRMATION
  3. •Defina o serviço municipal (municipalServiceId ou municipalServiceCode)
  4. •Configure os impostos (ISS, COFINS, CSLL, etc.)

Código:

// Exemplo de configuração via função:
const result = await base44.functions.invoke('asaas_configure_invoice', {
  subscriptionId: "sub_XXXX", // Substituir pelo ID da assinatura criada no step 3 ou 4
  config: {
    municipalServiceCode: "1.01",
    municipalServiceName: "Análise e desenvolvimento de sistemas",
    effectiveDatePeriod: "ON_PAYMENT_CONFIRMATION",
    receivedOnly: false,
    taxes: {
      retainIss: false,
      iss: 3,
      cofins: 3,
      csll: 1,
      inss: 0,
      ir: 1.5,
      pis: 0.65
    }
  }
});

✓ Resultado Esperado:

Configuração de NF criada para a assinatura

Teste Completo

10. Fluxo Completo - Novo Profissional

Teste o fluxo completo de cadastro e pagamento de um novo profissional

Passos:

  1. 1. Profissional se cadastra no app (RegisterProfessional)
  2. 2. Escolhe um plano (Básico, Profissional ou Premium)
  3. 3. Sistema cria checkout via asaas_create_checkout
  4. 4. Profissional é redirecionado para link do checkout
  5. 5. Profissional preenche dados do cartão no ASAAS
  6. 6. ASAAS cria cliente + assinatura automaticamente
  7. 7. ASAAS envia webhook PAYMENT_CREATED
  8. 8. Nossa função asaas_webhook cria registro em AsaasSubscription e AsaasPayment
  9. 9. No vencimento, ASAAS cobra automaticamente o cartão
  10. 10. ASAAS envia webhook PAYMENT_RECEIVED
  11. 11. Nossa função atualiza status do profissional para 'active'
  12. 12. ASAAS emite nota fiscal automaticamente (se configurado)

✓ Resultado Esperado:

Profissional com assinatura ativa e pagamentos sendo processados automaticamente

Validações

11. Verificar Dados Sincronizados ✅

Confirme que todos os dados estão sincronizados corretamente - TESTADO E VALIDADO

Passos:

  1. •✅ VALIDADO: Webhook asaas_webhook funciona corretamente
  2. •✅ VALIDADO: AsaasSubscription é criada automaticamente com asaas_subscription_id
  3. •✅ VALIDADO: AsaasPayment é criada/atualizada com eventos PAYMENT_RECEIVED/PAYMENT_CONFIRMED
  4. •✅ VALIDADO: Professional.subscription_status muda para 'active' após pagamento confirmado
  5. •✅ VALIDADO: Subscription.status muda para 'active' após pagamento confirmado
  6. •📝 NOTA: Função usa valores em inglês ('active') conforme schema das entidades

Código:

// Verificar assinaturas ASAAS:
const asaasSubs = await base44.entities.AsaasSubscription.list();
console.log('Assinaturas ASAAS:', asaasSubs);

// Verificar pagamentos ASAAS:
const asaasPayments = await base44.entities.AsaasPayment.list();
console.log('Pagamentos ASAAS:', asaasPayments);

// Verificar profissionais ativos:
const activeProfessionals = await base44.entities.Professional.filter({
  subscription_status: 'active'
});
console.log('Profissionais ativos:', activeProfessionals);

// ✅ TESTADO: Webhook ativa assinatura corretamente ao receber pagamento

✓ Resultado Esperado:

✅ VALIDADO: Todos os dados sincronizados e consistentes. Webhook ativa assinatura automaticamente.

Testes de Cenários

12. Testar Renovação Automática

Simule a renovação automática da assinatura gerando as próximas cobranças

Passos:

  1. •Informe o ID de uma assinatura ASAAS existente (ex: sub_XXXX)
  2. •Clique em 'Executar Teste' para gerar o carnê do próximo mês
  3. •O sistema fará GET /v3/subscriptions/{id}/paymentBook para o próximo mês
  4. •Isso criará as próximas cobranças automaticamente no ASAAS
  5. •O ASAAS enviará webhooks PAYMENT_CREATED para cada cobrança gerada
  6. •Verifique os logs da função asaas_webhook
  7. •Confirme que novos registros foram criados em AsaasPayment

Código:

// O teste fará automaticamente:
const nextMonth = new Date();
nextMonth.setMonth(nextMonth.getMonth() + 1);
const month = nextMonth.getMonth() + 1;
const year = nextMonth.getFullYear();

const response = await fetch(
  `https://api-sandbox.asaas.com/v3/subscriptions/${subscriptionId}/paymentBook?month=${month}&year=${year}`,
  {
    method: 'GET',
    headers: {
      'accept': 'application/json',
      'access_token': ASAAS_API_KEY
    }
  }
);

✓ Resultado Esperado:

Nova cobrança criada automaticamente no mês seguinte e sincronizada via webhook

13. Testar Inadimplência

Simule um profissional que não pagou a mensalidade

Passos:

  1. •Este teste verifica se existem pagamentos vencidos (OVERDUE)
  2. •Lista todos os pagamentos ASAAS do banco de dados
  3. •Mostra pagamentos com status PENDING que já passaram da data de vencimento
  4. •No sandbox, você pode simular: criar cobrança > deixar vencer sem pagar
  5. •O ASAAS enviará webhook PAYMENT_OVERDUE automaticamente

Código:

// Verificar pagamentos em atraso:
    const payments = await base44.entities.AsaasPayment.filter({
    status: 'OVERDUE'
    });
    console.log('Pagamentos em atraso:', payments);

    // Verificar profissionais com assinatura vencida:
    const subs = await base44.entities.AsaasSubscription.filter({
    status: 'OVERDUE'
    });

✓ Resultado Esperado:

Sistema detecta inadimplência e webhook PAYMENT_OVERDUE é recebido

14. Testar Cancelamento de Assinatura

Teste o cancelamento de uma assinatura

Passos:

  1. •Informe o ID de uma assinatura ASAAS existente
  2. •O sistema chamará a API do ASAAS para cancelar a assinatura
  3. •A assinatura mudará para status CANCELED
  4. •Novas cobranças não serão mais geradas automaticamente
  5. •O sistema atualizará o status no banco de dados

Código:

const result = await base44.functions.invoke('asaas_cancel_subscription', {
    subscriptionId: "sub_XXXX" // Substituir pelo ID real
    });
    console.log(result.data);

✓ Resultado Esperado:

Assinatura cancelada, status = CANCELED no ASAAS

Validações Finais

15. Checklist de Segurança

Validações de segurança antes de ir para produção

Passos:

  1. •✓ API Key está armazenada como secret (não no código)
  2. •✓ Webhooks validam autenticidade (usar webhook token)
  3. •✓ Funções backend usam createClientFromRequest
  4. •✓ Nunca expor API Key no frontend
  5. •✓ Configurar whitelist de IPs no ASAAS (opcional)
  6. •✓ Testar todos os eventos de webhook
  7. •✓ Implementar logs de auditoria
  8. •✓ Configurar notificações de erro

✓ Resultado Esperado:

Todos os itens de segurança verificados

Migração para Produção

16. Checklist de Produção

Passos para migrar para ambiente de produção

Passos:

  1. 1. Criar conta ASAAS de produção em https://www.asaas.com/
  2. 2. Completar verificação de conta (enviar documentos reais)
  3. 3. Gerar nova API Key de produção
  4. 4. Atualizar secret ASAAS_API_KEY com chave de produção
  5. 5. Atualizar baseUrl nas funções: 'https://api.asaas.com/v3'
  6. 6. Configurar dados fiscais reais da empresa
  7. 7. Testar em produção com valores pequenos primeiro
  8. 8. Configurar webhook em produção
  9. 9. Monitorar logs nas primeiras semanas
  10. 10. Criar registro em AsaasConfig com environment='production'

✓ Resultado Esperado:

Sistema funcionando em produção com pagamentos reais

Testes Concluídos!

Após completar todos os passos, seu sistema estará totalmente integrado com ASAAS para cobranças recorrentes e emissão automática de notas fiscais.

💡 Dúvidas? Entre em contato: integracoes@asaas.com.br

📚 Documentação completa: https://docs.asaas.com/