Loading repository data…
Loading repository data…
DouglasVolcato / repository
Este repositório contém três implementações do mesmo serviço de integração com a API do Asaas (Go, TypeScript e PHP), com cadastro de clientes, cobranças, assinaturas, emissão de notas fiscais e tratamento de webhooks.
Este repositório contém três implementações do mesmo serviço de integração com a API do Asaas (Go, TypeScript e PHP), com cadastro de clientes, cobranças, assinaturas, emissão de notas fiscais e tratamento de webhooks.
golang/: serviço HTTP em Go.typescript/: serviço HTTP em Node.js/Express (TypeScript).php/: serviço HTTP em PHP.docker-compose.yml: PostgreSQL para desenvolvimento local.DATABASE_URL (ou docker-compose).golang/).typescript/).curl e pdo_pgsql (para php/).Variáveis de ambiente usadas nas três implementações:
DATABASE_URL: string de conexão PostgreSQL.PORT: porta HTTP do serviço (padrão 8080).ASAAS_API_TOKEN: token de API do Asaas.ASAAS_WEBHOOK_TOKEN: token esperado no header asaas-access-token dos webhooks.Variável específica:
ASAAS_API_URL: obrigatória em golang/ e php/; opcional em typescript/ (padrão https://sandbox.asaas.com/api/v3).Arquivos .env:
golang/, o arquivo .env precisa existir (a inicialização falha se o arquivo não for encontrado).typescript/, o .env é carregado se existir.php/, o .env é carregado se existir em php/.env ou na raiz do repositório.Se precisar de banco local:
docker-compose up -d
golang/)cd golang
go run .
typescript/)cd typescript
npm install
npm run dev
Para produção em TypeScript:
npm run build
npm start
php/)cd php
composer install
php -S 0.0.0.0:${PORT:-8080} -t public
As três implementações usam IDs locais (UUID) como externalReference no Asaas e persistem os dados no PostgreSQL.
Os parâmetros id e customer referenciam o ID local (externalReference), não o ID interno do Asaas.
golang/)POST /customersGET /customers?id=<id_local>POST /paymentsGET /payments?id=<id_local>POST /subscriptionsPOST /subscriptions/cancel?id=<id_local>POST /invoicesGET /invoices?id=<id_local>POST /webhooks/asaastypescript/)POST /customersGET /customers?id=<id_local>POST /paymentsGET /payments?id=<id_local> ou GET /payments?customer=<id_local>POST /subscriptionsGET /subscriptions?id=<id_local> ou GET /subscriptions?customer=<id_local>POST /invoicesGET /invoices?id=<id_local> ou GET /invoices?customer=<id_local>POST /subscriptions/cancel retorna 501 (não implementado).POST /webhooks/asaasphp/)POST /customersGET /customers?id=<id_local>POST /paymentsGET /payments?id=<id_local>POST /subscriptionsPOST /subscriptions/cancel?id=<id_local>POST /invoicesGET /invoices?id=<id_local>POST /webhooks/asaas/webhooks/asaas aceita apenas POST e exige o header asaas-access-token igual a ASAAS_WEBHOOK_TOKEN.PAYMENT_CREATED originados de assinaturas criam pagamentos locais quando necessário.A documentação OpenAPI está disponível em /swagger/ quando o servidor está rodando (arquivos em golang/swagger, typescript/swagger ou php/swagger, dependendo da implementação).