Skip to content

feat: add Stripe subscription plugin#778

Merged
lane711 merged 1 commit intomainfrom
lane711/stripe-plugin
Apr 9, 2026
Merged

feat: add Stripe subscription plugin#778
lane711 merged 1 commit intomainfrom
lane711/stripe-plugin

Conversation

@lane711
Copy link
Copy Markdown
Collaborator

@lane711 lane711 commented Apr 9, 2026

Summary

  • Adds a new core plugin for Stripe subscription management with webhook handling, checkout sessions, and subscription gating
  • Handles full subscription lifecycle: creation, updates, cancellation, payment success/failure
  • Includes admin dashboard with stats cards, filterable subscription table, and Stripe Dashboard links

Changes

File Description
stripe-plugin/index.ts Plugin factory using PluginBuilder SDK
stripe-plugin/types.ts TypeScript types for subscriptions, Stripe events, settings
stripe-plugin/manifest.json Plugin metadata and settings schema
stripe-plugin/services/subscription-service.ts D1 database CRUD, stats, pagination
stripe-plugin/services/stripe-api.ts Lightweight Stripe API client (fetch-based, CF Workers compatible)
stripe-plugin/routes/api.ts Webhook endpoint + authenticated API routes
stripe-plugin/routes/admin.ts Admin dashboard route
stripe-plugin/components/subscriptions-page.ts Admin UI rendering
stripe-plugin/middleware/require-subscription.ts requireSubscription() route gating
core-plugins/index.ts Register plugin exports
app.ts Register plugin routes

API Endpoints

  • POST /api/stripe/webhook — Stripe webhook (signature verified, no auth)
  • POST /api/stripe/create-checkout-session — Create checkout session (auth required)
  • GET /api/stripe/subscription — Current user's subscription status (auth required)
  • GET /api/stripe/subscriptions — List all subscriptions (admin only)
  • GET /api/stripe/stats — Subscription stats (admin only)
  • GET /admin/plugins/stripe — Admin dashboard

Testing

  • Unit tests pass locally (1436 tests, 0 regressions)
  • TypeScript compiles cleanly (tsc --noEmit)

Checklist

  • Code follows existing plugin conventions (modeled after security-audit-plugin)
  • No new TypeScript errors introduced
  • Webhook signature uses timing-safe comparison to prevent timing attacks
  • No Stripe SDK dependency (uses fetch + Web Crypto API for CF Workers)

Closes #760

🤖 Generated with Claude Code

Add a new core plugin for managing Stripe subscriptions with webhook
handling, checkout sessions, and subscription gating middleware.

- Webhook endpoint with HMAC-SHA256 signature verification
- Handles 6 event types: subscription CRUD, checkout, payment
- Checkout session creation with automatic customer linking
- Subscription status API for authenticated users
- Admin dashboard with stats and filterable subscription list
- requireSubscription() middleware for route gating
- Uses fetch + Web Crypto API (no Stripe SDK, CF Workers compatible)

Closes #760

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@lane711 lane711 merged commit 206d4c1 into main Apr 9, 2026
2 checks passed
@lane711 lane711 deleted the lane711/stripe-plugin branch April 9, 2026 23:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Stripe Subscription Plugin (v1)

1 participant