feat(billing): implement billing module with Stripe and Mercado Pago integration

- Add Stripe and Mercado Pago providers for handling subscriptions.
- Create billing repository and access services for managing billing records.
- Implement webhook handlers for processing events from Stripe and Mercado Pago.
- Add routes for checkout, canceling subscriptions, and retrieving billing status.
- Introduce billing status management with appropriate state transitions.
- Create tests for billing functionalities including webhook idempotency and provider resolution.
- Document the billing module architecture, environment variables, and API endpoints.
This commit is contained in:
Jose Selesan
2026-06-29 15:55:20 -03:00
parent f490eecd11
commit e06bc12097
45 changed files with 2553 additions and 30 deletions

View File

@@ -0,0 +1,22 @@
import { describe, expect, it } from 'bun:test';
/**
* Helper that replicates the mapWebhookTypeToStatus logic
* used in webhook business files for testability.
*/
export function mapWebhookTypeToStatus(
eventType: 'activated' | 'updated' | 'payment_failed' | 'cancelled'
): 'ACTIVE' | 'PAST_DUE' | 'CANCELED' | null {
switch (eventType) {
case 'activated':
return 'ACTIVE';
case 'updated':
return 'ACTIVE';
case 'payment_failed':
return 'PAST_DUE';
case 'cancelled':
return 'CANCELED';
default:
return null;
}
}