@chakra-ui/better-auth
v0.3.0
Published
Better Auth plugin for LemonSqueezy payment integration
Downloads
1,067
Readme
Better Auth LemonSqueezy Plugin
A Better Auth plugin for LemonSqueezy payment integration with webhook processing and license claiming.
Features
- 🎯 Webhook Processing - Handles LemonSqueezy webhooks for orders and refunds
- 🔐 License Claiming - Users can claim purchases with order IDs
- 📦 Purchase Tracking - Tracks purchase status and user associations
- 🛡️ Secure Verification - HMAC signature verification for webhooks
- 🔧 Configurable - Support for multiple products and variants
- ⚡ Type Safe - Full TypeScript support
Installation
npm install better-auth-lemonsqueezy-pluginSetup
Server
import { betterAuth } from 'better-auth'
import { lemonSqueezy } from 'better-auth-lemonsqueezy-plugin'
export const auth = betterAuth({
plugins: [
lemonSqueezy({
webhookSecret: process.env.LEMON_SQUEEZY_WEBHOOK_SECRET!,
products: [
{
name: 'Chakra UI Pro',
variants: ['Personal', 'Team', 'Enterprise'],
},
],
}),
],
})Client
import { createAuthClient } from 'better-auth/client'
import { lemonSqueezyClient } from 'better-auth-lemonsqueezy-plugin/client'
export const authClient = createAuthClient({
plugins: [lemonSqueezyClient()],
})Usage
Webhook Configuration
Set up webhook in LemonSqueezy dashboard:
- URL:
https://yourdomain.com/api/auth/lemon-squeezy - Events:
order_created,order_refunded
Claiming Purchases
Users can claim their purchases with order IDs:
const response = await fetch('/api/auth/purchase/claim', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ orderId: 'your-order-id' }),
})Database Schema
The plugin creates a purchase table:
interface Purchase {
id: string
orderId: string // LemonSqueezy order ID
productId: string // Generated from product.variant names
status: 'active' | 'refunded'
userId?: string // User who claimed it
createdAt: Date
updatedAt: Date
}License
MIT
