casm-provider
v1.0.0
Published
Express middleware for x402 payment challenges in CASM (Cronos Agentic Service Mesh)
Maintainers
Readme
casm-provider
Express middleware for x402 payment challenges in CASM (Cronos Agentic Service Mesh).
Installation
npm install casm-providerQuick Start
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
- Request without payment → Returns
402 Payment Requiredwith a challenge - Request with valid signature → Verifies via x402 Facilitator → Returns data
402 Response Format
{
"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
createPaymentMiddleware(options)
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) |
verifyPaymentSignature(params)
Verify a payment signature via the x402 Facilitator.
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,
});License
MIT
