// middleware.ts
import { paymentProxy, x402ResourceServer } from "@armory-sh/middleware-next";
const verificationClient = {
async verify(headers: Headers) {
const response = await fetch("https://verifier.example.com/verify", {
method: "POST",
headers: {
"Content-Type": "application/json",
...Object.fromEntries(headers.entries()),
},
body: JSON.stringify({
headers: Object.fromEntries(headers.entries()),
}),
});
return response.json();
},
};
const resourceServer = new x402ResourceServer(verificationClient);
export const proxy = paymentProxy(
{
"/api/data/basic": {
accepts: {
scheme: "exact",
price: "1000000",
network: "eip155:8453",
payTo: "0xYourAddress...",
},
description: "Basic data access",
},
"/api/data/premium": {
accepts: {
scheme: "exact",
price: "5000000",
network: "eip155:8453",
payTo: "0xYourAddress...",
},
description: "Premium data access",
},
"/api/analytics/*": {
accepts: {
scheme: "exact",
price: "10000000",
network: "eip155:8453",
payTo: "0xYourAddress...",
},
description: "Analytics access (all endpoints)",
},
},
resourceServer
);
export const config = {
matcher: ["/api/data/:path*", "/api/analytics/:path*"],
};