The top subscription tier is Sovereign, not Founder. This has been corrected multiple times across sessions — fixing at source. FILES UPDATED: - docs/core/tasks.md - docs/core/project-scope.md - docs/tasks/rank-system-deployment/rank-structure.md - docs/tasks/paymenter-pterodactyl-integration/README.md - docs/archive/2026-02-09-consolidation/luckperms-structure.md - docs/planning/subscription-tiers.md - docs/planning/awakened-gateway.md - docs/guides/subscription-automation-guide.md - docs/guides/holly-discord-roles-setup.md - docs/guides/holly-wanderer-permissions-setup.md - docs/systems/arbiter-discord-role-mappings.md - docs/branding/trinity-leadership-artwork.md NOTE: References to 'founders' meaning Michael/Meg/Holly as company founders were intentionally preserved. Only tier name updated. Signed-off-by: claude@firefrostgaming.com
374 lines
9.9 KiB
Markdown
374 lines
9.9 KiB
Markdown
# Task #83: Paymenter → Pterodactyl Auto-Provisioning Integration
|
|
|
|
**Created:** March 26, 2026
|
|
**Status:** 🔴 BLOCKING SOFT LAUNCH
|
|
**Priority:** CRITICAL - Must complete before accepting first subscriber
|
|
**Time Estimate:** 4-6 hours
|
|
**Assigned To:** Next Chronicler + Michael
|
|
|
|
---
|
|
|
|
## 🚨 WHY THIS IS CRITICAL
|
|
|
|
**Without this integration:**
|
|
- ❌ Every new subscriber requires manual Pterodactyl account creation
|
|
- ❌ Every payment failure requires manual suspension
|
|
- ❌ Every tier change requires manual permission updates
|
|
- ❌ Every cancellation requires manual cleanup
|
|
- ❌ **This does not scale beyond 5-10 subscribers**
|
|
|
|
**With this integration:**
|
|
- ✅ Subscriber pays → server access granted automatically (30 seconds)
|
|
- ✅ Payment fails → server suspended after grace period (automated)
|
|
- ✅ Subscriber upgrades tier → permissions updated (instant)
|
|
- ✅ Subscriber cancels → access removed cleanly (automated)
|
|
- ✅ **Scales to hundreds of subscribers with zero manual work**
|
|
|
|
---
|
|
|
|
## 📊 CURRENT STATE vs DESIRED STATE
|
|
|
|
### Current State (NOT SUSTAINABLE)
|
|
```
|
|
Customer subscribes via Paymenter
|
|
↓
|
|
Michael gets email notification
|
|
↓
|
|
Michael manually logs into Pterodactyl Panel
|
|
↓
|
|
Michael manually creates user account
|
|
↓
|
|
Michael manually assigns permissions
|
|
↓
|
|
Michael manually emails customer credentials
|
|
↓
|
|
(Repeat for every subscriber, every tier change, every cancellation)
|
|
```
|
|
|
|
### Desired State (REQUIRED FOR LAUNCH)
|
|
```
|
|
Customer subscribes via Paymenter (Stripe payment)
|
|
↓
|
|
Stripe webhook → Paymenter
|
|
↓
|
|
Paymenter webhook → Integration Bridge
|
|
↓
|
|
Pterodactyl API: Create/update user automatically
|
|
↓
|
|
Email sent to customer automatically (Pterodactyl)
|
|
↓
|
|
Customer has access in 30 seconds
|
|
↓
|
|
(Zero manual intervention)
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 INTEGRATION ARCHITECTURE
|
|
|
|
### Components Required
|
|
|
|
**1. Paymenter Side:**
|
|
- Stripe webhooks (already configured ✅)
|
|
- Paymenter product configuration (10 tiers created ✅)
|
|
- Webhook URL endpoint (needs configuration ❌)
|
|
|
|
**2. Bridge/Middleware:**
|
|
- **Option A:** Paymenter extension (if available)
|
|
- **Option B:** Custom webhook receiver + API bridge
|
|
- **Option C:** n8n workflow (already have n8n on TX1)
|
|
- **Option D:** Pterodactyl Paymenter module (check Blueprint marketplace)
|
|
|
|
**3. Pterodactyl Side:**
|
|
- API access enabled
|
|
- API key created
|
|
- User role templates defined
|
|
- Server group permissions configured
|
|
|
|
---
|
|
|
|
## 📋 IMPLEMENTATION OPTIONS
|
|
|
|
### Option A: Paymenter Pterodactyl Extension (RECOMMENDED IF EXISTS)
|
|
|
|
**Check if Paymenter has native Pterodactyl integration:**
|
|
- Paymenter docs: https://paymenter.org/docs/
|
|
- Extensions marketplace
|
|
- GitHub: paymenter/paymenter
|
|
|
|
**Pros:**
|
|
- ✅ Native integration (officially supported)
|
|
- ✅ Likely handles edge cases
|
|
- ✅ Maintained by Paymenter team
|
|
|
|
**Cons:**
|
|
- ❓ May not exist yet (Paymenter is newer)
|
|
- ❓ May not support all tier features
|
|
|
|
---
|
|
|
|
### Option B: Pterodactyl Blueprint Extension
|
|
|
|
**Check Blueprint marketplace for Paymenter integration:**
|
|
- Pterodactyl Panel → Extensions (Blueprint installed ✅)
|
|
- Search for "Paymenter", "billing", "provisioning"
|
|
|
|
**Pros:**
|
|
- ✅ Installed via Blueprint (easy)
|
|
- ✅ Lives in Pterodactyl (central management)
|
|
|
|
**Cons:**
|
|
- ❓ May not exist
|
|
- ❓ Quality varies
|
|
|
|
---
|
|
|
|
### Option C: Custom n8n Workflow
|
|
|
|
**Build webhook bridge using existing n8n instance:**
|
|
- n8n already deployed on TX1 ✅
|
|
- Paymenter webhook → n8n → Pterodactyl API
|
|
|
|
**Pros:**
|
|
- ✅ Full control over logic
|
|
- ✅ Already have n8n infrastructure
|
|
- ✅ Can handle complex tier mapping
|
|
|
|
**Cons:**
|
|
- ❌ Requires custom workflow development
|
|
- ❌ Must maintain ourselves
|
|
- ❌ More moving parts
|
|
|
|
---
|
|
|
|
### Option D: Direct Webhook Script
|
|
|
|
**Simple PHP/Python script on Billing VPS:**
|
|
- Receives Paymenter webhooks
|
|
- Calls Pterodactyl API directly
|
|
|
|
**Pros:**
|
|
- ✅ Simplest architecture
|
|
- ✅ Minimal dependencies
|
|
|
|
**Cons:**
|
|
- ❌ Must write from scratch
|
|
- ❌ Harder to debug
|
|
- ❌ Security concerns (webhook validation)
|
|
|
|
---
|
|
|
|
## 🎯 RECOMMENDED APPROACH
|
|
|
|
**Priority order to investigate:**
|
|
|
|
1. **Check Paymenter documentation** for native Pterodactyl integration
|
|
2. **Check Blueprint marketplace** for Paymenter extension
|
|
3. **Fall back to n8n workflow** if no native option exists
|
|
|
|
---
|
|
|
|
## 📝 PREREQUISITE INFORMATION NEEDED
|
|
|
|
### Paymenter Configuration
|
|
- ✅ Base URL: https://billing.firefrostgaming.com
|
|
- ✅ Admin access: Available
|
|
- ❓ Webhook secret key: (generate if needed)
|
|
- ❓ Webhook URL format: (depends on integration method)
|
|
|
|
### Pterodactyl Configuration
|
|
- ✅ Panel URL: https://panel.firefrostgaming.com (Panel VPS 45.94.168.138)
|
|
- ❓ API key: (needs creation)
|
|
- ❓ API permissions: (needs definition)
|
|
- ❓ User role templates: (needs creation)
|
|
|
|
### Subscription Tier Mapping
|
|
|
|
**Tier 1: The Awakened ($1 one-time)**
|
|
- Pterodactyl role: `subscriber_awakened`
|
|
- Server access: All public Frost Path servers
|
|
- Permissions: Basic (view, connect)
|
|
|
|
**Tier 2: Fire Elemental / Frost Elemental ($5/mo)**
|
|
- Pterodactyl role: `subscriber_elemental`
|
|
- Server access: All Frost Path servers
|
|
- Permissions: Basic + home teleport
|
|
|
|
**Tier 3: Fire Knight / Frost Knight ($10/mo)**
|
|
- Pterodactyl role: `subscriber_knight`
|
|
- Server access: All Frost Path servers
|
|
- Permissions: Elemental + extra homes
|
|
|
|
**Tier 4: Fire Master / Frost Master ($15/mo)**
|
|
- Pterodactyl role: `subscriber_master`
|
|
- Server access: All Frost Path + priority slots
|
|
- Permissions: Knight + creative plot access
|
|
|
|
**Tier 5: Fire Legend / Frost Legend ($20/mo)**
|
|
- Pterodactyl role: `subscriber_legend`
|
|
- Server access: All servers + beta access
|
|
- Permissions: Master + special perks
|
|
|
|
**Tier 6: Sovereign ($50 one-time)**
|
|
- Pterodactyl role: `subscriber_sovereign`
|
|
- Server access: ALL servers including future ones
|
|
- Permissions: Everything non-staff
|
|
|
|
---
|
|
|
|
## 🔑 PTERODACTYL API SETUP
|
|
|
|
### Step 1: Create API Key
|
|
|
|
**On Panel VPS (45.94.168.138):**
|
|
1. SSH to Panel VPS
|
|
2. Login to Pterodactyl admin panel
|
|
3. Account → API Credentials
|
|
4. Create new Application API Key
|
|
5. Name: "Paymenter Auto-Provisioning"
|
|
6. Permissions needed:
|
|
- `user.read` - Read user data
|
|
- `user.create` - Create new users
|
|
- `user.update` - Update user permissions
|
|
- `user.delete` - Remove users (on cancellation)
|
|
7. Copy API key to Vaultwarden
|
|
|
|
### Step 2: Test API Access
|
|
|
|
```bash
|
|
curl -H "Authorization: Bearer YOUR_API_KEY" \
|
|
-H "Content-Type: application/json" \
|
|
https://panel.firefrostgaming.com/api/application/users
|
|
```
|
|
|
|
Should return list of users.
|
|
|
|
---
|
|
|
|
## 🔗 WEBHOOK CONFIGURATION
|
|
|
|
### Paymenter Webhooks
|
|
|
|
**Paymenter should send webhooks for:**
|
|
- `subscription.created` - New subscriber
|
|
- `subscription.updated` - Tier change
|
|
- `subscription.cancelled` - Cancellation
|
|
- `payment.failed` - Failed payment (trigger grace period)
|
|
- `payment.succeeded` - Successful payment (restore access)
|
|
|
|
**Webhook payload example:**
|
|
```json
|
|
{
|
|
"event": "subscription.created",
|
|
"subscription_id": "12345",
|
|
"customer_email": "user@example.com",
|
|
"product_id": "fire-elemental",
|
|
"tier": "elemental",
|
|
"status": "active"
|
|
}
|
|
```
|
|
|
|
### Webhook Security
|
|
|
|
**Validate webhooks with:**
|
|
- Webhook signature verification
|
|
- IP whitelist (Billing VPS only)
|
|
- HTTPS only
|
|
- Secret key validation
|
|
|
|
---
|
|
|
|
## ✅ SUCCESS CRITERIA
|
|
|
|
### Phase 1: Basic Provisioning
|
|
- [ ] Paymenter → Pterodactyl integration method chosen
|
|
- [ ] Pterodactyl API key created and tested
|
|
- [ ] Test user created via API successfully
|
|
- [ ] Test user can login to Pterodactyl Panel
|
|
|
|
### Phase 2: Webhook Automation
|
|
- [ ] Webhook endpoint configured and receiving events
|
|
- [ ] New subscription creates Pterodactyl user automatically
|
|
- [ ] Email sent to customer with login details
|
|
- [ ] Customer can access servers within 60 seconds of payment
|
|
|
|
### Phase 3: Full Lifecycle
|
|
- [ ] Tier upgrades update permissions automatically
|
|
- [ ] Payment failures trigger grace period (7 days)
|
|
- [ ] Suspension after grace period works
|
|
- [ ] Cancellations remove access cleanly
|
|
- [ ] Reactivation restores access
|
|
|
|
### Phase 4: Production Ready
|
|
- [ ] Tested with 5+ dummy subscriptions (full lifecycle)
|
|
- [ ] Error handling works (failed API calls, network issues)
|
|
- [ ] Logging configured (can debug issues)
|
|
- [ ] Rollback plan documented
|
|
- [ ] Manual override procedure documented (for edge cases)
|
|
|
|
---
|
|
|
|
## 🚨 BEFORE SOFT LAUNCH
|
|
|
|
**This integration MUST be:**
|
|
- ✅ Fully tested end-to-end
|
|
- ✅ Handling all subscription lifecycle events
|
|
- ✅ Logging errors for debugging
|
|
- ✅ Backed by manual override procedure
|
|
|
|
**DO NOT accept real subscribers until this works.**
|
|
|
|
Manual provisioning for 1-2 test subscribers is fine.
|
|
Manual provisioning for 10+ subscribers is not sustainable.
|
|
|
|
---
|
|
|
|
## 📚 RESOURCES
|
|
|
|
**Paymenter Documentation:**
|
|
- https://paymenter.org/docs/
|
|
- https://github.com/paymenter/paymenter
|
|
|
|
**Pterodactyl API Documentation:**
|
|
- https://dashflo.net/docs/api/pterodactyl/v1/
|
|
- Panel → Account → API (in-panel docs)
|
|
|
|
**Similar Integrations:**
|
|
- WHMCS → Pterodactyl modules (for reference)
|
|
- Blesta → Pterodactyl modules (for reference)
|
|
|
|
---
|
|
|
|
## 🔄 RELATED TASKS
|
|
|
|
**Depends on:**
|
|
- None (all prerequisites complete)
|
|
|
|
**Blocks:**
|
|
- Soft launch acceptance of real subscribers
|
|
- Task #2 (LuckPerms deployment - Phase 3 Discord sync)
|
|
|
|
**Related:**
|
|
- Task #33 (Paymenter Citadel theme - cosmetic only)
|
|
- Task #71 (Paymenter tier preview tool - planning only)
|
|
|
|
---
|
|
|
|
## 📝 NEXT STEPS
|
|
|
|
1. **Research integration options** (Paymenter docs, Blueprint marketplace)
|
|
2. **Choose integration method** (native extension vs custom bridge)
|
|
3. **Create Pterodactyl API key** with correct permissions
|
|
4. **Configure webhook endpoint** (depends on chosen method)
|
|
5. **Test with dummy subscription** (create → access → cancel)
|
|
6. **Document deployment** in this task directory
|
|
7. **Deploy to production** after successful testing
|
|
8. **Monitor first 10 real subscriptions** manually
|
|
|
|
---
|
|
|
|
**Standard:** This task follows FFG-STD-002 (Task Documentation Standard)
|
|
|
|
**Created by:** The Verifier (Chronicler #41)
|
|
**Date:** March 26, 2026, 2:15 AM CST
|