# Payment Integration Implementation Summary ## Overview Complete payment integration for software upgrades using existing ecommerce infrastructure (transaction API, invoice API, PHPMailer, DomPDF). ## New Files to Create ### 1. `/webhook_mollie.php` (Root directory) **Purpose**: Mollie webhook handler specifically for software upgrades **Based on**: Existing webhook.php from commerce product **Key features**: - ✅ Uses `/v2/transactions/` API for status updates (consistent with commerce) - ✅ Uses `/v2/invoice/` API for invoice generation - ✅ Creates PDF invoice with DomPDF - ✅ Sends email via PHPMailer - ✅ Creates software license - ✅ Multi-language support - ✅ Sends to bookkeeping if configured **Webhook URL**: `https://yourdomain.com/webhook_mollie.php` ### 2. `/api/v2/post/payment.php` **Purpose**: Create Mollie payment for software upgrade **Input**: serial_number, version_id, user_data **Output**: {checkout_url, payment_id} **Security**: Server-side price calculation ### 3. `/api/v2/get/payment.php` **Purpose**: Retrieve payment status **Input**: ?payment_id=xxx **Output**: {payment_id, payment_status, serial_number, equipment_id, ...} ## Modified Files ### 1. `/assets/functions.php` **Add new functions**: - `generateUniqueLicenseKey()` - Generate unique license keys - `generateSoftwareInvoice($invoice_data, $order_id, $language)` - Generate HTML invoice for software upgrades - Based on existing `generateInvoice()` function - Custom template for software licenses - Shows: Device serial number, software version, license key, expiry date - Returns: [$html_content, $customer_email, $order_id] ### 2. `/assets/softwaretool.js` **Modify**: - `processPayment()` - Call `/v2/post/payment` API - `downloadAndInstallSoftware()` - Add serial number verification ### 3. `/softwaretool.php` **Add**: Payment return detection (`?payment_id=xxx`) ## Database **No changes needed** - Uses existing: - `transactions` table (txn_id, payment_status, payment_amount, etc.) - `transactions_items` table (item_id, item_options with JSON) ## Payment Status Codes (Matching Commerce System) - `0` = Pending - `1` = Paid - `101` = Open/Pending (Mollie) - `102` = Failed - `103` = Expired - `999` = Canceled ## Implementation Order 1. ✅ Add Mollie constants to config.php 2. Create helper functions in functions.php: - `generateUniqueLicenseKey()` - `generateSoftwareInvoice()` 3. Create `/api/v2/post/payment.php` 4. Create `/api/v2/get/payment.php` 5. Create `/webhook_mollie.php` 6. Modify frontend JavaScript 7. Modify softwaretool.php 8. Test in DEBUG mode 9. Test with Mollie sandbox 10. Deploy to production ## Key Benefits 1. **Consistent with ecommerce** - Uses same API structure 2. **Professional invoices** - PDF generation + email delivery 3. **Complete audit trail** - Transactions + invoices + licenses 4. **Multi-language** - Invoice language based on customer country 5. **Bookkeeping integration** - Auto-send to bookkeeping email 6. **Refund handling** - Webhook detects refunds (TODO: disable license) ## Invoice Email Template The email will include: - Subject: "Software Upgrade - Invoice: [ORDER_ID]" - HTML body with invoice details - PDF attachment (Invoice_[ORDER_ID].pdf) - Sent to customer email + bookkeeping (if configured) **Invoice contains:** - Customer details (name, address, email) - Order ID / Transaction ID - Software upgrade details (version, device serial number) - License key + expiry date (2099-12-31) - Price breakdown - Company information