Basic Setup
server.ts
import express from 'express'
import { VantaMiddleware } from '@vanta/middleware'
const app = express()
const paywall = VantaMiddleware({
price: '0.001',
recipient: process.env.WALLET_ADDRESS!,
network: 'base',
})
app.get('/api/premium/data', paywall, (req, res) => {
res.json({ data: 'Premium content' })
})
app.listen(3000)With Token Issuance
server-tokens.ts
import { VantaMiddleware, VantaTokenIssuer } from '@vanta/middleware'
const issuer = new VantaTokenIssuer({
secret: process.env.TOKEN_SECRET!,
expiresIn: '1h',
})
const paywall = VantaMiddleware({
price: '0.01',
recipient: process.env.WALLET_ADDRESS!,
network: 'base',
onPaymentVerified: async (payment, req, res) => {
const token = await issuer.issue(req)
res.setHeader('X-Vanta-Token', token)
},
})
const auth = issuer.middleware({ fallback: paywall })
app.use('/api/premium', auth)
app.get('/api/premium/data', (req, res) => {
res.json({ data: 'Premium', user: req.vanta?.claims })
})