# ๐Ÿ’ณ @xtr-dev/payload-billing PayloadCMS plugin for billing and payment provider integrations with comprehensive tracking and local testing support. โš ๏ธ **Pre-release Warning**: This package is currently in active development (v0.0.x). Breaking changes may occur before v1.0.0. Not recommended for production use. ## ๐Ÿš€ Features ### Payment Providers - **๐Ÿ”ถ Stripe Integration** - Full Stripe payment processing support - **๐ŸŸ  Mollie Integration** - Complete Mollie payment gateway integration - **๐Ÿงช Test Provider** - Local development and testing payment provider - **๐Ÿ”ง Extensible Architecture** - Easy to add new payment providers ### Payment Tracking & Management - **๐Ÿ“Š Transaction History** - Complete payment tracking and history - **๐Ÿ”„ Payment Status Management** - Real-time payment status updates - **๐Ÿ’ฐ Amount & Currency Handling** - Multi-currency support - **๐Ÿ“‹ Invoice Generation** - Automatic invoice creation and management - **๐Ÿท๏ธ Metadata Support** - Custom metadata for payments and customers ### Developer Experience - **๐Ÿ› ๏ธ Local Development** - Test provider for local development - **๐Ÿช Webhook Handling** - Robust webhook processing for all providers - **๐Ÿ“ TypeScript Support** - Full TypeScript definitions and type safety - **๐Ÿ” Debugging Tools** - Built-in logging and debugging capabilities - **๐Ÿ“š Documentation** - Comprehensive API documentation ### PayloadCMS Integration - **โšก Admin UI Extensions** - Payment management directly in Payload admin - **๐Ÿ—ƒ๏ธ Collections** - Pre-configured payment, customer, and invoice collections - **๐Ÿ” Access Control** - Secure payment data with proper permissions - **๐ŸŽฏ Hooks & Events** - PayloadCMS lifecycle hooks for payment events ## ๐Ÿ—๏ธ Installation ```bash npm install @xtr-dev/payload-billing # or yarn add @xtr-dev/payload-billing # or pnpm add @xtr-dev/payload-billing ``` ## โš™๏ธ Quick Setup ```typescript import { billingPlugin } from '@xtr-dev/payload-billing' export default buildConfig({ plugins: [ billingPlugin({ providers: { stripe: { secretKey: process.env.STRIPE_SECRET_KEY!, publishableKey: process.env.STRIPE_PUBLISHABLE_KEY!, webhookEndpointSecret: process.env.STRIPE_WEBHOOK_SECRET!, }, mollie: { apiKey: process.env.MOLLIE_API_KEY!, webhookUrl: process.env.MOLLIE_WEBHOOK_URL!, }, // Test provider for local development test: { enabled: process.env.NODE_ENV === 'development', autoComplete: true, // Automatically complete payments } }, collections: { payments: 'payments', customers: 'customers', invoices: 'invoices', } }) ] }) ``` ## ๐Ÿ“‹ Collections Added ### Payments Collection - Payment tracking with status, amount, currency - Provider-specific payment data - Customer relationships - Transaction metadata ### Customers Collection - Customer information and billing details - Payment method storage - Transaction history - Subscription management ### Invoices Collection - Invoice generation and management - PDF generation support - Payment status tracking - Line item details ## ๐Ÿ”Œ Provider APIs ### Stripe Integration ```typescript import { getPaymentProvider } from '@xtr-dev/payload-billing' const stripe = getPaymentProvider('stripe') // Create a payment const payment = await stripe.createPayment({ amount: 2000, // $20.00 currency: 'usd', customer: 'customer_id', metadata: { orderId: '12345' } }) // Handle webhooks await stripe.handleWebhook(request, signature) ``` ### Mollie Integration ```typescript const mollie = getPaymentProvider('mollie') // Create a payment const payment = await mollie.createPayment({ amount: { value: '20.00', currency: 'EUR' }, description: 'Order #12345', redirectUrl: 'https://example.com/return', webhookUrl: 'https://example.com/webhook' }) ``` ### Test Provider ```typescript const testProvider = getPaymentProvider('test') // Simulate payment scenarios const payment = await testProvider.createPayment({ amount: 2000, currency: 'usd', // Test-specific options simulateFailure: false, delayMs: 1000 }) ``` ## ๐Ÿช Webhook Handling The plugin automatically sets up webhook endpoints for all configured providers: - `/api/billing/webhooks/stripe` - Stripe webhook endpoint - `/api/billing/webhooks/mollie` - Mollie webhook endpoint - `/api/billing/webhooks/test` - Test provider webhook endpoint ## ๐Ÿ› ๏ธ Development ```bash # Clone the repository git clone https://github.com/xtr-dev/payload-billing.git cd payload-billing # Install dependencies pnpm install # Build the plugin pnpm build # Run tests pnpm test # Start development server pnpm dev ``` ## ๐Ÿ“š Documentation - [API Reference](./docs/api.md) - [Provider Integration Guide](./docs/providers.md) - [Webhook Setup](./docs/webhooks.md) - [Testing Guide](./docs/testing.md) - [TypeScript Types](./docs/types.md) ## ๐Ÿค Contributing We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details. ## ๐Ÿ“„ License MIT License - see [LICENSE](LICENSE) file for details. ## ๐Ÿ”— Links - [PayloadCMS](https://payloadcms.com) - [Stripe Documentation](https://stripe.com/docs) - [Mollie Documentation](https://docs.mollie.com) - [GitHub Repository](https://github.com/xtr-dev/payload-billing)