@cheapay/x402-next
v0.1.5
Published
HTTP-native Solana payment protocol for Next.js APIs. Accept USDC/SOL micropayments with one-line middleware integration.
Downloads
14
Readme
@cheapay/x402-next
HTTP-native Solana payment protocol for Next.js APIs. Accept USDC/SOL micropayments with one-line middleware integration.
Features
- Solana-first: Designed for Solana payments (USDC/SOL) out of the box
- Next.js middleware for easy integration
- Simple, secure, and scalable micropayment support
- TypeScript support
Installation
npm install @cheapay/x402-next
# or
yarn add @cheapay/x402-next
# or
pnpm add @cheapay/x402-nextQuick Start (Solana)
Set up your environment variables in a .env file:
RESOURCE_WALLET_ADDRESS=YourSolanaAddressHere
NEXT_PUBLIC_FACILITATOR_URL=https://your-facilitator-url
NETWORK=solana-devnet # or solana-mainnet, solana-testnetCreate a middleware.ts in your Next.js project:
import { solanaPaymentMiddleware } from '@cheapay/x402-next';
import { Resource } from '@cheapay/x402/types';
import { TokenMint } from '@cheapay/x402';
const payTo = process.env.RESOURCE_WALLET_ADDRESS as string;
const facilitatorUrl = process.env.NEXT_PUBLIC_FACILITATOR_URL as Resource;
const network = process.env.NETWORK as 'solana-devnet' | 'solana-mainnet' | 'solana-testnet';
export const middleware = solanaPaymentMiddleware(
payTo,
{
'/api/paid': {
price: '$0.01', // USD amount - defaults to USDC
network,
// No mint specified = USDC default (like Coinbase EVM)
config: { description: 'Access to protected content (USDC)' },
},
'/api/sol-paid': {
price: '0.001', // SOL amount
network,
mint: TokenMint.SOL.devnet, // Explicit SOL override
config: { description: 'Access to protected content (SOL)' },
},
},
{
url: facilitatorUrl,
},
);
export const config = {
matcher: ['/api/paid', '/api/sol-paid'],
};
**Smart Defaults:** The `mint` parameter is optional and defaults to USDC (like Coinbase EVM). This provides the best developer experience while maintaining predictability.
**Default behavior:**
- No `mint` specified → **USDC** (stable, predictable pricing)
- `mint: TokenMint.SOL.devnet` → **SOL** (explicit override)
- `mint: TokenMint.BONK.mainnet` → **BONK** (explicit override)
**Available TokenMint constants:**
- `TokenMint.USDC.devnet` / `TokenMint.USDC.mainnet` - USDC stablecoin (DEFAULT)
- `TokenMint.SOL.devnet` / `TokenMint.SOL.mainnet` - Native SOL
- `TokenMint.BONK.mainnet` - BONK meme token
See `TokenMint` in `@cheapay/x402` for all supported tokens.
## API
### `solanaPaymentMiddleware(payTo, routes, facilitator?, paywall?)`
- `payTo`: Your Solana address
- `routes`: Route configs (see example above)
- `facilitator`: (optional) x402 facilitator config
- `paywall`: (optional) Paywall UI config
See TypeScript types for advanced options and customizations.
## License
Apache-2.0