diff --git a/templates/node/x402-server/.env.example b/templates/node/x402-server/.env.example index 98bbbeb..68a2f6a 100644 --- a/templates/node/x402-server/.env.example +++ b/templates/node/x402-server/.env.example @@ -2,4 +2,4 @@ PAY_TO_ADDRESS=0x... # Override the default MetaMask Sentinel facilitator URL -FACILITATOR_URL=https://tx-sentinel-base-mainnet.dev-api.cx.metamask.io/platform/v2/x402 +FACILITATOR_URL=https://tx-sentinel-base-sepolia.api.cx.metamask.io/platform/v2/x402 diff --git a/templates/node/x402-server/package.json b/templates/node/x402-server/package.json index 5c5a976..d85b968 100644 --- a/templates/node/x402-server/package.json +++ b/templates/node/x402-server/package.json @@ -9,17 +9,18 @@ "start": "node dist/index.js" }, "dependencies": { + "@metamask/x402": "^0.1.0", "@x402/core": "^2.12.0", "@x402/evm": "^2.12.0", - "@x402/express": "^2.12.0", "cors": "^2.8.5", "dotenv": "^16.4.7", - "express": "^4.21.2" + "express": "^4.21.2", + "viem": "^2.31.4" }, "devDependencies": { "@types/cors": "^2.8.17", "@types/express": "^5.0.2", - "@types/node": "^22.15.3", + "@types/node": "^18.18", "tsx": "^4.19.4", "typescript": "^5.8.3" } diff --git a/templates/node/x402-server/src/index.ts b/templates/node/x402-server/src/index.ts index ca118d4..d503004 100644 --- a/templates/node/x402-server/src/index.ts +++ b/templates/node/x402-server/src/index.ts @@ -3,11 +3,11 @@ import express, { type Request, type Response } from "express"; import cors from "cors"; import { paymentMiddleware } from "@x402/express"; import { x402ResourceServer, HTTPFacilitatorClient } from "@x402/core/server"; -import { Erc7710ExactEvmScheme } from "./scheme.js"; +import { x402ExactEvmErc7710ServerScheme } from "@metamask/x402"; config(); -const NETWORK_ID = "eip155:8453"; +const NETWORK_ID = "eip155:84532"; const PORT = 4402; const payToAddress = process.env.PAY_TO_ADDRESS as string; @@ -45,7 +45,7 @@ app.use( }, new x402ResourceServer(facilitatorClient).register( NETWORK_ID, - new Erc7710ExactEvmScheme(facilitatorClient), + new x402ExactEvmErc7710ServerScheme(), ), ), ); diff --git a/templates/node/x402-server/src/scheme.ts b/templates/node/x402-server/src/scheme.ts deleted file mode 100644 index 900b3eb..0000000 --- a/templates/node/x402-server/src/scheme.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { ExactEvmScheme } from "@x402/evm/exact/server"; -import type { - PaymentRequirements, - SupportedKind, -} from "@x402/core/types"; -import type { FacilitatorClient } from "@x402/core/server"; - -export class Erc7710ExactEvmScheme extends ExactEvmScheme { - constructor(private readonly facilitatorClient: FacilitatorClient) { - super(); - } - - async enhancePaymentRequirements( - paymentRequirements: PaymentRequirements, - supportedKind: SupportedKind, - facilitatorExtensions: string[], - ): Promise { - const enhanced = await super.enhancePaymentRequirements( - paymentRequirements, - supportedKind, - facilitatorExtensions, - ); - - const supported = await this.facilitatorClient.getSupported(); - const facilitators = [ - ...(supported.signers[paymentRequirements.network] ?? []), - ...(supported.signers["eip155:*"] ?? []) - ]; - - return { - ...enhanced, - extra: { - ...enhanced.extra, - assetTransferMethod: "erc7710", - facilitators, - }, - }; - } -} diff --git a/tsconfig.json b/tsconfig.json index 27a1f34..9405d69 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,5 +14,5 @@ "skipLibCheck": true, "target": "ES2020" }, - "exclude": ["./dist", "**/node_modules"] + "exclude": ["./dist", "./templates", "**/node_modules"] }