Express middleware for x402 payment challenges in CASM (Cronos Agentic Service Mesh)
npm install casm-providerbash
npm install casm-provider
`
Quick Start
`javascript
const express = require('express');
const { createPaymentMiddleware } = require('casm-provider');
const app = express();
// Create payment middleware
const requirePayment = createPaymentMiddleware({
recipientAddress: '0xYourWalletAddress',
price: 50000, // 0.05 USDC (6 decimals)
tokenAddress: '0x...USDC_ADDRESS',
facilitatorUrl: 'https://x402.cronos.org',
chainId: 338, // Cronos testnet
});
// Protect your API endpoint
app.get('/api/premium-data', requirePayment, (req, res) => {
// Payment verified! Return data
res.json({
success: true,
paymentVerified: req.paymentVerified,
data: { / your premium data / }
});
});
app.listen(3001);
`
How It Works
1. Request without payment → Returns 402 Payment Required with a challenge
2. Request with valid signature → Verifies via x402 Facilitator → Returns data
$3
`json
{
"error": "Payment Required",
"challenge": {
"version": "1.0",
"network": "cronos-testnet",
"chainId": 338,
"recipient": "0x...",
"amount": "50000",
"token": "0x...USDC",
"nonce": "abc123...",
"deadline": 1705000000,
"facilitator": "https://x402.cronos.org",
"message": "Pay 0.05 USDC to access this API"
}
}
`
API Reference
$3
Creates Express middleware for payment enforcement.
| Option | Type | Required | Description |
|--------|------|----------|-------------|
| recipientAddress | string | ✅ | Wallet to receive payments |
| price | number | ✅ | Price in atomic units |
| tokenAddress | string | ✅ | USDC token address |
| facilitatorUrl | string | ✅ | x402 Facilitator URL |
| chainId | number | | Chain ID (default: 338) |
$3
Verify a payment signature via the x402 Facilitator.
`javascript
const { verifyPaymentSignature } = require('casm-provider');
const isValid = await verifyPaymentSignature({
signature: '0x...',
nonce: 'abc123',
recipientAddress: '0x...',
amount: 50000,
tokenAddress: '0x...USDC',
facilitatorUrl: 'https://x402.cronos.org',
chainId: 338,
});
``