@seedhape/x402-merchant-sdk 0.3.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -6
- package/dist/browser-paywall.d.ts +50 -0
- package/dist/browser-paywall.d.ts.map +1 -0
- package/dist/browser-paywall.js +35 -0
- package/dist/browser-paywall.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +23 -16
- package/dist/mcp.js.map +1 -1
- package/dist/middleware.d.ts +31 -4
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +157 -36
- package/dist/middleware.js.map +1 -1
- package/package.json +17 -1
package/README.md
CHANGED
|
@@ -43,7 +43,7 @@ app.get("/weather", (req, res) => {
|
|
|
43
43
|
|
|
44
44
|
## Network presets and payment methods
|
|
45
45
|
|
|
46
|
-
Use `base` or `
|
|
46
|
+
Use `base`, `baseSepolia`, `solana`, or `solanaDevnet` to preconfigure the CAIP-2 network, USDC mint/contract, decimals, and default facilitator:
|
|
47
47
|
|
|
48
48
|
```ts
|
|
49
49
|
import { baseSepolia, expressPaywall, merchantConfig } from "@seedhape/x402-merchant-sdk";
|
|
@@ -59,6 +59,76 @@ app.use(expressPaywall(merchantConfig(baseSepolia, {
|
|
|
59
59
|
|
|
60
60
|
`paymentMethods` defaults to `['eip3009']`, the broadly supported payment method. Set `['eip3009', 'erc7710']` to let the buyer/client choose both methods. Only advertise ERC-7710 when the configured facilitator supports it. If the methods use different facilitators, configure `facilitators: { eip3009: {...}, erc7710: {...} }`; the SDK selects the facilitator matching the buyer's selected method.
|
|
61
61
|
|
|
62
|
+
### Base and Solana on one route
|
|
63
|
+
|
|
64
|
+
Use `accepts` to expose both chains from the same resource. Bazaar and downstream catalogs such as Agentic Market treat these as payment choices on one service listing:
|
|
65
|
+
|
|
66
|
+
```ts
|
|
67
|
+
import { base, solana, expressPaywall, merchantConfig } from "@seedhape/x402-merchant-sdk";
|
|
68
|
+
|
|
69
|
+
// Create cdpFacilitator with createCdpFacilitatorClient as shown below.
|
|
70
|
+
|
|
71
|
+
app.use(expressPaywall(merchantConfig(base, {
|
|
72
|
+
accepts: [{
|
|
73
|
+
...base,
|
|
74
|
+
payTo: process.env.BASE_MERCHANT_WALLET!,
|
|
75
|
+
paymentMethods: ["eip3009"],
|
|
76
|
+
}, {
|
|
77
|
+
...solana,
|
|
78
|
+
payTo: process.env.SOLANA_MERCHANT_WALLET!,
|
|
79
|
+
feePayer: process.env.SOLANA_FEE_PAYER!,
|
|
80
|
+
}],
|
|
81
|
+
price: { amount: 10_000n, ...base },
|
|
82
|
+
facilitator: {
|
|
83
|
+
url: "https://api.cdp.coinbase.com/platform/v2/x402",
|
|
84
|
+
client: cdpFacilitator,
|
|
85
|
+
},
|
|
86
|
+
route: {
|
|
87
|
+
name: "Market Data",
|
|
88
|
+
description: "Paid market data on Base or Solana",
|
|
89
|
+
inputSchema: { type: "object", properties: { symbol: { type: "string" } } },
|
|
90
|
+
outputSchema: { type: "object" },
|
|
91
|
+
},
|
|
92
|
+
})));
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
`feePayer` is the Solana facilitator signer advertised by its `/supported` response; it is not the merchant wallet. Use a facilitator that supports every advertised network, or set a per-option `facilitator`. Solana payments use the official x402 `exact` SVM scheme and a base64-encoded, partially signed versioned transaction in `PAYMENT-SIGNATURE`.
|
|
96
|
+
|
|
97
|
+
The built-in Solana mainnet preset uses `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` and native USDC mint `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`. Solana addresses are case-sensitive.
|
|
98
|
+
Its default facilitator is `https://facilitator.payai.network`; the devnet preset uses the test-only `https://x402.org/facilitator`.
|
|
99
|
+
|
|
100
|
+
### Browser wallet paywall
|
|
101
|
+
|
|
102
|
+
Install the optional official UI when people should be able to open the paid route directly and pay with an EVM or Solana browser wallet:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
npm install @seedhape/x402-merchant-sdk @x402/paywall react react-dom
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Then enable it on the same configuration:
|
|
109
|
+
|
|
110
|
+
```ts
|
|
111
|
+
const config = merchantConfig(base, {
|
|
112
|
+
accepts: [
|
|
113
|
+
{ ...base, payTo: process.env.BASE_MERCHANT_WALLET! },
|
|
114
|
+
{
|
|
115
|
+
...solana,
|
|
116
|
+
payTo: process.env.SOLANA_MERCHANT_WALLET!,
|
|
117
|
+
feePayer: process.env.SOLANA_FEE_PAYER!,
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
price: { amount: 10_000n, ...base },
|
|
121
|
+
browserPaywall: {
|
|
122
|
+
appName: "Market Data",
|
|
123
|
+
appLogo: "https://api.example.com/icon-512.png",
|
|
124
|
+
testnet: false,
|
|
125
|
+
},
|
|
126
|
+
facilitator: { url: "https://facilitator.payai.network" },
|
|
127
|
+
});
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Express, Hono, and `node:http` adapters now return the official `@x402/paywall` HTML when the request accepts `text/html`. Programmatic callers continue receiving the normal JSON challenge and `PAYMENT-REQUIRED` header. The UI registers both official `evmPaywall` and `svmPaywall` handlers. Because `@x402/paywall` is an optional peer dependency, API-only installations do not pull its browser-wallet and React dependency tree.
|
|
131
|
+
|
|
62
132
|
### Coinbase CDP Facilitator and Bazaar
|
|
63
133
|
|
|
64
134
|
For Coinbase Bazaar indexing, use Coinbase's authenticated facilitator client rather than passing the CDP API secret as a bearer token:
|
|
@@ -169,7 +239,7 @@ The HTTP route and MCP tool produce separate x402 resources, so each can have it
|
|
|
169
239
|
|
|
170
240
|
Enable AP2 on an HTTP paywall to issue a signed merchant Checkout JWT with every unpaid or rejected `402` response. The SDK returns it in the `AP2-CHECKOUT-JWT` header; this does not change x402 verification or settlement.
|
|
171
241
|
|
|
172
|
-
AP2 is optional. A route without the `ap2` option behaves exactly like a normal x402 route. AP2 adds signed checkout context for AP2-aware buyers and agents; the facilitator still verifies and settles the EIP-3009 or ERC-7710 payment.
|
|
242
|
+
AP2 is optional. A route without the `ap2` option behaves exactly like a normal x402 route. AP2 adds signed checkout context for AP2-aware buyers and agents; the facilitator still verifies and settles the EIP-3009 or ERC-7710 payment. The current Checkout JWT binds one network, so SDK routes using `ap2` must configure a single payment option; multi-network Solana AP2 mandates are a separate follow-up.
|
|
173
243
|
|
|
174
244
|
```ts
|
|
175
245
|
app.use(expressPaywall(merchantConfig(base, {
|
|
@@ -217,8 +287,8 @@ PAYMENT-REQUIRED: eyJ...
|
|
|
217
287
|
|
|
218
288
|
## Payment flow
|
|
219
289
|
|
|
220
|
-
1. An unpaid request receives a v2 `402` challenge with a `PAYMENT-REQUIRED` header containing
|
|
221
|
-
2. The buyer
|
|
290
|
+
1. An unpaid request receives a v2 `402` challenge with a `PAYMENT-REQUIRED` header containing one or more accepted networks, recipient wallets, USDC assets, the amount, and resource URL.
|
|
291
|
+
2. The buyer selects an accepted option, creates an EVM authorization or Solana transaction, and sends it in `PAYMENT-SIGNATURE`.
|
|
222
292
|
3. The facilitator verifies and settles the payment.
|
|
223
293
|
4. USDC settles directly to `payTo`; Seedhape never holds merchant funds.
|
|
224
294
|
5. The request continues and the settlement is returned in `PAYMENT-RESPONSE`.
|
|
@@ -227,7 +297,7 @@ The SDK emits the current x402 v2 challenge shape. For migration, it also accept
|
|
|
227
297
|
|
|
228
298
|
## Official x402 integrations
|
|
229
299
|
|
|
230
|
-
The SDK is built on the official `@x402/core
|
|
300
|
+
The SDK is built on the official `@x402/core`, `@x402/evm`, and `@x402/svm` packages. EIP-3009 and exact-SVM verification and settlement use `x402ResourceServer`, `HTTPFacilitatorClient`, and the official chain scheme. Bazaar declarations use `@x402/extensions/bazaar` and are registered with the resource server.
|
|
231
301
|
|
|
232
302
|
ERC-7710 remains an opt-in Seedhape facilitator method because the official EVM exact server currently covers EIP-3009 and Permit2, not ERC-7710. When `erc7710` is selected, the SDK routes it to the configured facilitator override; it never silently sends an ERC-7710 payload through the EIP-3009 verifier.
|
|
233
303
|
|
|
@@ -250,7 +320,7 @@ Sonar listing does not replace Bazaar metadata. A merchant can publish Bazaar di
|
|
|
250
320
|
## Production checklist
|
|
251
321
|
|
|
252
322
|
- Use a self-custodial merchant receiving address.
|
|
253
|
-
- Use
|
|
323
|
+
- Use Base mainnet or Solana mainnet presets in production and their testnet/devnet presets only for testing.
|
|
254
324
|
- Configure a production facilitator URL and keep it server-side.
|
|
255
325
|
- Keep health, documentation, and discovery metadata routes free.
|
|
256
326
|
- Record the receipt ID, resource, payer, amount, network, and transaction hash.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** Structural subset of the official renderer, kept local so server-only users do not need its types. */
|
|
2
|
+
export interface BrowserPaywallProvider {
|
|
3
|
+
generateHtml(paymentRequired: BrowserPaymentRequired, config?: BrowserPaywallRuntimeConfig): string;
|
|
4
|
+
}
|
|
5
|
+
export interface BrowserPaywallRuntimeConfig {
|
|
6
|
+
appName?: string;
|
|
7
|
+
appLogo?: string;
|
|
8
|
+
currentUrl?: string;
|
|
9
|
+
testnet?: boolean;
|
|
10
|
+
faucetUrls?: Record<string, string>;
|
|
11
|
+
}
|
|
12
|
+
export interface BrowserPaymentRequired {
|
|
13
|
+
x402Version: number;
|
|
14
|
+
error?: string;
|
|
15
|
+
resource?: {
|
|
16
|
+
url: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
mimeType?: string;
|
|
19
|
+
};
|
|
20
|
+
accepts: Array<{
|
|
21
|
+
scheme: string;
|
|
22
|
+
network: string;
|
|
23
|
+
asset: string;
|
|
24
|
+
payTo: string;
|
|
25
|
+
maxTimeoutSeconds: number;
|
|
26
|
+
extra?: Record<string, unknown>;
|
|
27
|
+
amount?: string;
|
|
28
|
+
maxAmountRequired?: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
resource?: string;
|
|
31
|
+
mimeType?: string;
|
|
32
|
+
}>;
|
|
33
|
+
extensions?: Record<string, unknown>;
|
|
34
|
+
}
|
|
35
|
+
/** Runtime options passed to the official browser paywall renderer. */
|
|
36
|
+
export interface BrowserPaywallConfig extends BrowserPaywallRuntimeConfig {
|
|
37
|
+
/** Inject a custom provider, primarily for custom themes or tests. */
|
|
38
|
+
provider?: BrowserPaywallProvider;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Build the official x402 browser paywall with handlers for both EVM and Solana.
|
|
42
|
+
* `@x402/paywall` is an optional peer so server-only SDK installs stay lean.
|
|
43
|
+
*/
|
|
44
|
+
export declare function createBrowserPaywallProvider(config?: BrowserPaywallRuntimeConfig): Promise<BrowserPaywallProvider>;
|
|
45
|
+
export declare function renderBrowserPaywall(args: {
|
|
46
|
+
paymentRequired: unknown;
|
|
47
|
+
accept?: string | string[];
|
|
48
|
+
config: true | BrowserPaywallConfig;
|
|
49
|
+
}): Promise<string | undefined>;
|
|
50
|
+
//# sourceMappingURL=browser-paywall.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-paywall.d.ts","sourceRoot":"","sources":["../src/browser-paywall.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,eAAe,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAAC;CACrG;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,iBAAiB,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,uEAAuE;AACvE,MAAM,WAAW,oBAAqB,SAAQ,2BAA2B;IACvE,sEAAsE;IACtE,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,GAAE,2BAAgC,GACvC,OAAO,CAAC,sBAAsB,CAAC,CAkBjC;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,IAAI,GAAG,oBAAoB,CAAC;CACrC,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAY9B"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the official x402 browser paywall with handlers for both EVM and Solana.
|
|
3
|
+
* `@x402/paywall` is an optional peer so server-only SDK installs stay lean.
|
|
4
|
+
*/
|
|
5
|
+
export async function createBrowserPaywallProvider(config = {}) {
|
|
6
|
+
try {
|
|
7
|
+
const [{ createPaywall }, { evmPaywall }, { svmPaywall }] = await Promise.all([
|
|
8
|
+
import("@x402/paywall"),
|
|
9
|
+
import("@x402/paywall/evm"),
|
|
10
|
+
import("@x402/paywall/svm"),
|
|
11
|
+
]);
|
|
12
|
+
return createPaywall()
|
|
13
|
+
.withNetwork(evmPaywall)
|
|
14
|
+
.withNetwork(svmPaywall)
|
|
15
|
+
.withConfig(config)
|
|
16
|
+
.build();
|
|
17
|
+
}
|
|
18
|
+
catch (cause) {
|
|
19
|
+
throw new Error("Browser paywall support requires the optional @x402/paywall peer dependency (version 2.23.0 or newer).", { cause });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export async function renderBrowserPaywall(args) {
|
|
23
|
+
const accept = Array.isArray(args.accept) ? args.accept.join(",") : args.accept ?? "";
|
|
24
|
+
if (!accept.toLowerCase().includes("text/html"))
|
|
25
|
+
return undefined;
|
|
26
|
+
const configured = args.config === true ? {} : args.config;
|
|
27
|
+
const { provider, ...runtimeConfig } = configured;
|
|
28
|
+
const resolvedProvider = provider ?? await createBrowserPaywallProvider(runtimeConfig);
|
|
29
|
+
const paymentRequired = args.paymentRequired;
|
|
30
|
+
return resolvedProvider.generateHtml(paymentRequired, {
|
|
31
|
+
...runtimeConfig,
|
|
32
|
+
currentUrl: runtimeConfig.currentUrl ?? paymentRequired.resource?.url,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=browser-paywall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-paywall.js","sourceRoot":"","sources":["../src/browser-paywall.ts"],"names":[],"mappings":"AAuCA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,SAAsC,EAAE;IAExC,IAAI,CAAC;QACH,MAAM,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC5E,MAAM,CAAC,eAAe,CAAC;YACvB,MAAM,CAAC,mBAAmB,CAAC;YAC3B,MAAM,CAAC,mBAAmB,CAAC;SAC5B,CAAC,CAAC;QACH,OAAO,aAAa,EAAE;aACnB,WAAW,CAAC,UAAU,CAAC;aACvB,WAAW,CAAC,UAAU,CAAC;aACvB,UAAU,CAAC,MAAM,CAAC;aAClB,KAAK,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wGAAwG,EACxG,EAAE,KAAK,EAAE,CACV,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAI1C;IACC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACtF,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAElE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3D,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,GAAG,UAAU,CAAC;IAClD,MAAM,gBAAgB,GAAG,QAAQ,IAAI,MAAM,4BAA4B,CAAC,aAAa,CAAC,CAAC;IACvF,MAAM,eAAe,GAAG,IAAI,CAAC,eAAyC,CAAC;IACvE,OAAO,gBAAgB,CAAC,YAAY,CAAC,eAAe,EAAE;QACpD,GAAG,aAAa;QAChB,UAAU,EAAE,aAAa,CAAC,UAAU,IAAI,eAAe,CAAC,QAAQ,EAAE,GAAG;KACtE,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC"}
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EAEnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,4CAA4C;IAC5C,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACxF,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAE9C;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrG,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CA4Ef"}
|
package/dist/mcp.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { createPaymentWrapper } from "@x402/mcp";
|
|
3
3
|
import { declareDiscoveryExtension } from "@x402/extensions/bazaar";
|
|
4
|
-
import { createOfficialResourceServer, } from "./middleware.js";
|
|
4
|
+
import { createOfficialResourceServer, resolvePaymentOptions, } from "./middleware.js";
|
|
5
5
|
/**
|
|
6
6
|
* Register a paid MCP tool using the same merchant configuration as HTTP routes.
|
|
7
7
|
* The official @x402/mcp wrapper handles the MCP payment challenge, verification,
|
|
@@ -13,22 +13,29 @@ export async function createPaidMcpTool(server, paywall, tool, handler) {
|
|
|
13
13
|
const price = typeof paywall.price === "function"
|
|
14
14
|
? (() => { throw new Error("MCP tools require a fixed price; configure per-call pricing in the MCP handler layer."); })()
|
|
15
15
|
: paywall.price;
|
|
16
|
-
const
|
|
16
|
+
const paymentOptions = resolvePaymentOptions(paywall);
|
|
17
|
+
if (paymentOptions.some((option) => option.facilitator)) {
|
|
18
|
+
throw new Error("MCP multi-network tools currently require one shared facilitator.");
|
|
19
|
+
}
|
|
20
|
+
const accepts = (await Promise.all(paymentOptions.map((option) => resourceServer.buildPaymentRequirements({
|
|
17
21
|
scheme: "exact",
|
|
18
|
-
network:
|
|
19
|
-
payTo:
|
|
22
|
+
network: option.network,
|
|
23
|
+
payTo: option.payTo,
|
|
20
24
|
price: {
|
|
21
|
-
asset:
|
|
25
|
+
asset: option.asset,
|
|
22
26
|
amount: price.amount.toString(),
|
|
23
|
-
extra:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
extra: option.network.startsWith("solana:")
|
|
28
|
+
? { ...(option.extra ?? {}), feePayer: option.feePayer ?? option.extra?.feePayer }
|
|
29
|
+
: {
|
|
30
|
+
name: "USD Coin",
|
|
31
|
+
version: "2",
|
|
32
|
+
decimals: option.decimals ?? 6,
|
|
33
|
+
assetTransferMethod: option.paymentMethods?.[0] ?? paywall.paymentMethods?.[0] ?? "eip3009",
|
|
34
|
+
...(option.extra ?? {}),
|
|
35
|
+
},
|
|
29
36
|
},
|
|
30
37
|
maxTimeoutSeconds: paywall.maxTimeoutSeconds,
|
|
31
|
-
});
|
|
38
|
+
})))).flat();
|
|
32
39
|
const wrapped = createPaymentWrapper(resourceServer, {
|
|
33
40
|
accepts,
|
|
34
41
|
resource: {
|
|
@@ -51,18 +58,18 @@ export async function createPaidMcpTool(server, paywall, tool, handler) {
|
|
|
51
58
|
onAfterSettlement: async ({ settlement, paymentPayload }) => {
|
|
52
59
|
if (!settlement.success)
|
|
53
60
|
return;
|
|
61
|
+
const accepted = paymentPayload.accepted;
|
|
54
62
|
await paywall.receipts?.record({
|
|
55
63
|
id: randomUUID(),
|
|
56
64
|
resource: tool.resourceUrl ?? `mcp://tool/${tool.name}`,
|
|
57
65
|
payer: settlement.payer,
|
|
58
|
-
payTo:
|
|
66
|
+
payTo: accepted.payTo,
|
|
59
67
|
amount: price.amount,
|
|
60
|
-
asset:
|
|
61
|
-
network:
|
|
68
|
+
asset: accepted.asset,
|
|
69
|
+
network: accepted.network,
|
|
62
70
|
txHash: settlement.transaction,
|
|
63
71
|
settledAt: Math.floor(Date.now() / 1000),
|
|
64
72
|
});
|
|
65
|
-
void paymentPayload;
|
|
66
73
|
},
|
|
67
74
|
} : undefined,
|
|
68
75
|
})(async (args) => ({
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EACL,4BAA4B,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/middleware.d.ts
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
13
13
|
import { x402ResourceServer, type FacilitatorClient } from "@x402/core/server";
|
|
14
14
|
import type { Ap2MerchantConfig } from "./ap2.js";
|
|
15
|
+
import { type BrowserPaywallConfig } from "./browser-paywall.js";
|
|
15
16
|
export interface Money {
|
|
16
17
|
/** Base units of the asset. USDC has 6 decimals. */
|
|
17
18
|
amount: bigint;
|
|
@@ -53,6 +54,21 @@ export interface FacilitatorConfig {
|
|
|
53
54
|
client?: FacilitatorClient;
|
|
54
55
|
}
|
|
55
56
|
export type PaymentMethod = "eip3009" | "erc7710";
|
|
57
|
+
/** One chain-specific way a buyer may pay for the same resource. */
|
|
58
|
+
export interface MerchantPaymentOption {
|
|
59
|
+
network: string;
|
|
60
|
+
asset: string;
|
|
61
|
+
payTo: string;
|
|
62
|
+
decimals?: number;
|
|
63
|
+
/** EVM transfer methods. Solana always uses the x402 `exact` SVM scheme. */
|
|
64
|
+
paymentMethods?: PaymentMethod[];
|
|
65
|
+
/** Override the route-level facilitator for this network. */
|
|
66
|
+
facilitator?: FacilitatorConfig;
|
|
67
|
+
/** Required for Solana HTTP challenges unless supplied in `extra.feePayer`. */
|
|
68
|
+
feePayer?: string;
|
|
69
|
+
/** Additional scheme-specific payment requirement fields. */
|
|
70
|
+
extra?: Record<string, unknown>;
|
|
71
|
+
}
|
|
56
72
|
export interface JsonSchema {
|
|
57
73
|
[key: string]: unknown;
|
|
58
74
|
}
|
|
@@ -83,6 +99,8 @@ export interface MerchantNetworkConfig {
|
|
|
83
99
|
decimals: number;
|
|
84
100
|
facilitator: FacilitatorConfig;
|
|
85
101
|
}
|
|
102
|
+
export declare const SOLANA_MAINNET: MerchantNetworkConfig;
|
|
103
|
+
export declare const SOLANA_DEVNET: MerchantNetworkConfig;
|
|
86
104
|
/** Base mainnet + USDC defaults. Override any field for a custom facilitator. */
|
|
87
105
|
export declare const BASE_MAINNET: MerchantNetworkConfig;
|
|
88
106
|
/** Base Sepolia + USDC defaults for development and staging. */
|
|
@@ -90,16 +108,21 @@ export declare const BASE_SEPOLIA: MerchantNetworkConfig;
|
|
|
90
108
|
/** Lowercase aliases make preset usage read naturally in route definitions. */
|
|
91
109
|
export declare const base: MerchantNetworkConfig;
|
|
92
110
|
export declare const baseSepolia: MerchantNetworkConfig;
|
|
111
|
+
export declare const solana: MerchantNetworkConfig;
|
|
112
|
+
export declare const solanaDevnet: MerchantNetworkConfig;
|
|
93
113
|
export interface MerchantPresetConfig extends MerchantNetworkConfig {
|
|
94
114
|
paymentMethods?: PaymentMethod[];
|
|
95
115
|
}
|
|
96
116
|
/** Compose a route configuration from a network preset without mutation. */
|
|
97
117
|
export declare function merchantConfig(preset: MerchantPresetConfig, config: Omit<PaywallConfig, "network" | "asset" | "decimals" | "facilitator"> & Partial<Pick<PaywallConfig, "network" | "asset" | "decimals" | "facilitator">>): PaywallConfig;
|
|
98
118
|
export interface PaywallConfig {
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
119
|
+
/** Legacy single-network fields. Omit these when `accepts` is provided. */
|
|
120
|
+
payTo?: string;
|
|
121
|
+
network?: string;
|
|
122
|
+
asset?: string;
|
|
102
123
|
decimals?: number;
|
|
124
|
+
/** Multiple chain-specific payment choices shown in one Bazaar/Agentic Market listing. */
|
|
125
|
+
accepts?: MerchantPaymentOption[];
|
|
103
126
|
/** Payment authorization methods advertised in the 402 response. */
|
|
104
127
|
paymentMethods?: PaymentMethod[];
|
|
105
128
|
/** Optional facilitator overrides for individual transfer methods. */
|
|
@@ -122,6 +145,8 @@ export interface PaywallConfig {
|
|
|
122
145
|
bazaar?: boolean;
|
|
123
146
|
/** Optional merchant AP2 issuer. Adds AP2-CHECKOUT-JWT to 402 responses. */
|
|
124
147
|
ap2?: Ap2MerchantConfig;
|
|
148
|
+
/** Render the official EVM + Solana browser UI for requests accepting text/html. */
|
|
149
|
+
browserPaywall?: true | BrowserPaywallConfig;
|
|
125
150
|
maxTimeoutSeconds?: number;
|
|
126
151
|
/** Routes that never require payment, e.g. ["/health", "/.well-known/*"]. */
|
|
127
152
|
free?: string[];
|
|
@@ -168,9 +193,10 @@ export interface PaywallOutcome {
|
|
|
168
193
|
export declare class Paywall {
|
|
169
194
|
private readonly cfg;
|
|
170
195
|
private readonly facilitator;
|
|
171
|
-
private readonly
|
|
196
|
+
private readonly paymentOptions;
|
|
172
197
|
constructor(cfg: PaywallConfig);
|
|
173
198
|
priceFor(path: string, method: string, query: URLSearchParams): Money | null;
|
|
199
|
+
renderBrowserChallenge(challenge: unknown, accept?: string | string[]): Promise<string | undefined>;
|
|
174
200
|
buildChallenge(price: Money, resource: string, method?: string): {
|
|
175
201
|
x402Version: number;
|
|
176
202
|
error: string;
|
|
@@ -195,6 +221,7 @@ export declare class Paywall {
|
|
|
195
221
|
private facilitatorFor;
|
|
196
222
|
private writeReceipt;
|
|
197
223
|
}
|
|
224
|
+
export declare function resolvePaymentOptions(cfg: PaywallConfig): MerchantPaymentOption[];
|
|
198
225
|
export declare function expressPaywall(cfg: PaywallConfig): (req: any, res: any, next: any) => Promise<any>;
|
|
199
226
|
export declare function honoPaywall(cfg: PaywallConfig): (c: any, next: any) => Promise<any>;
|
|
200
227
|
export declare function nodePaywall(cfg: PaywallConfig): (req: IncomingMessage, res: ServerResponse) => Promise<Receipt | "free" | null>;
|
package/dist/middleware.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAyB,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
|
package/dist/middleware.js
CHANGED
|
@@ -12,7 +12,22 @@
|
|
|
12
12
|
import { randomUUID } from "node:crypto";
|
|
13
13
|
import { HTTPFacilitatorClient, x402ResourceServer } from "@x402/core/server";
|
|
14
14
|
import { registerExactEvmScheme } from "@x402/evm/exact/server";
|
|
15
|
+
import { SOLANA_DEVNET_CAIP2, SOLANA_MAINNET_CAIP2, USDC_DEVNET_ADDRESS, USDC_MAINNET_ADDRESS, } from "@x402/svm";
|
|
16
|
+
import { registerExactSvmScheme } from "@x402/svm/exact/server";
|
|
15
17
|
import { bazaarResourceServerExtension, declareDiscoveryExtension } from "@x402/extensions/bazaar";
|
|
18
|
+
import { renderBrowserPaywall } from "./browser-paywall.js";
|
|
19
|
+
export const SOLANA_MAINNET = {
|
|
20
|
+
network: SOLANA_MAINNET_CAIP2,
|
|
21
|
+
asset: USDC_MAINNET_ADDRESS,
|
|
22
|
+
decimals: 6,
|
|
23
|
+
facilitator: { url: "https://facilitator.payai.network" },
|
|
24
|
+
};
|
|
25
|
+
export const SOLANA_DEVNET = {
|
|
26
|
+
network: SOLANA_DEVNET_CAIP2,
|
|
27
|
+
asset: USDC_DEVNET_ADDRESS,
|
|
28
|
+
decimals: 6,
|
|
29
|
+
facilitator: { url: "https://x402.org/facilitator" },
|
|
30
|
+
};
|
|
16
31
|
/** Base mainnet + USDC defaults. Override any field for a custom facilitator. */
|
|
17
32
|
export const BASE_MAINNET = {
|
|
18
33
|
network: "eip155:8453",
|
|
@@ -30,6 +45,8 @@ export const BASE_SEPOLIA = {
|
|
|
30
45
|
/** Lowercase aliases make preset usage read naturally in route definitions. */
|
|
31
46
|
export const base = BASE_MAINNET;
|
|
32
47
|
export const baseSepolia = BASE_SEPOLIA;
|
|
48
|
+
export const solana = SOLANA_MAINNET;
|
|
49
|
+
export const solanaDevnet = SOLANA_DEVNET;
|
|
33
50
|
/** Compose a route configuration from a network preset without mutation. */
|
|
34
51
|
export function merchantConfig(preset, config) {
|
|
35
52
|
return {
|
|
@@ -66,7 +83,7 @@ export class Facilitator {
|
|
|
66
83
|
this.official = createOfficialResourceServerFromClient(cfg.client ?? client);
|
|
67
84
|
}
|
|
68
85
|
async verify(payload, requirements) {
|
|
69
|
-
if (
|
|
86
|
+
if (usesOfficialScheme(payload)) {
|
|
70
87
|
const result = await this.official.verifyPayment(payload, requirements);
|
|
71
88
|
return {
|
|
72
89
|
isValid: result.isValid,
|
|
@@ -77,7 +94,7 @@ export class Facilitator {
|
|
|
77
94
|
return this.call("/verify", { paymentPayload: payload, paymentRequirements: requirements });
|
|
78
95
|
}
|
|
79
96
|
async settle(payload, requirements) {
|
|
80
|
-
if (
|
|
97
|
+
if (usesOfficialScheme(payload)) {
|
|
81
98
|
const result = await this.official.settlePayment(payload, requirements);
|
|
82
99
|
return {
|
|
83
100
|
success: result.success,
|
|
@@ -122,9 +139,12 @@ export function createOfficialResourceServer(facilitator) {
|
|
|
122
139
|
return createOfficialResourceServerFromClient(client);
|
|
123
140
|
}
|
|
124
141
|
function createOfficialResourceServerFromClient(client) {
|
|
125
|
-
return registerExactEvmScheme(new x402ResourceServer(client).registerExtension(bazaarResourceServerExtension));
|
|
142
|
+
return registerExactSvmScheme(registerExactEvmScheme(new x402ResourceServer(client).registerExtension(bazaarResourceServerExtension)));
|
|
126
143
|
}
|
|
127
|
-
function
|
|
144
|
+
function usesOfficialScheme(payload) {
|
|
145
|
+
if (isRecord(payload) && isRecord(payload.accepted) &&
|
|
146
|
+
typeof payload.accepted.network === "string" && payload.accepted.network.startsWith("solana:"))
|
|
147
|
+
return true;
|
|
128
148
|
if (!isRecord(payload) || !isRecord(payload.accepted) || !isRecord(payload.accepted.extra))
|
|
129
149
|
return true;
|
|
130
150
|
return payload.accepted.extra.assetTransferMethod !== "erc7710";
|
|
@@ -132,11 +152,14 @@ function usesOfficialEvmScheme(payload) {
|
|
|
132
152
|
export class Paywall {
|
|
133
153
|
cfg;
|
|
134
154
|
facilitator;
|
|
135
|
-
|
|
155
|
+
paymentOptions;
|
|
136
156
|
constructor(cfg) {
|
|
137
157
|
this.cfg = cfg;
|
|
138
158
|
this.facilitator = new Facilitator(cfg.facilitator);
|
|
139
|
-
this.
|
|
159
|
+
this.paymentOptions = resolvePaymentOptions(cfg);
|
|
160
|
+
if (cfg.ap2 && this.paymentOptions.length > 1) {
|
|
161
|
+
throw new Error("AP2 checkout JWTs currently bind one payment network; configure a single accept option when AP2 is enabled.");
|
|
162
|
+
}
|
|
140
163
|
}
|
|
141
164
|
priceFor(path, method, query) {
|
|
142
165
|
if (this.cfg.free?.some((p) => matchRoute(path, p)))
|
|
@@ -144,10 +167,16 @@ export class Paywall {
|
|
|
144
167
|
const p = this.cfg.price;
|
|
145
168
|
return typeof p === "function" ? p({ path, method, query }) : p;
|
|
146
169
|
}
|
|
170
|
+
async renderBrowserChallenge(challenge, accept) {
|
|
171
|
+
if (!this.cfg.browserPaywall)
|
|
172
|
+
return undefined;
|
|
173
|
+
return renderBrowserPaywall({
|
|
174
|
+
paymentRequired: challenge,
|
|
175
|
+
accept,
|
|
176
|
+
config: this.cfg.browserPaywall,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
147
179
|
buildChallenge(price, resource, method = "GET") {
|
|
148
|
-
const paymentMethods = this.cfg.paymentMethods?.length
|
|
149
|
-
? this.cfg.paymentMethods
|
|
150
|
-
: ["eip3009"];
|
|
151
180
|
const route = this.cfg.route;
|
|
152
181
|
const description = route?.description ?? this.cfg.description ?? "";
|
|
153
182
|
const challenge = {
|
|
@@ -163,15 +192,7 @@ export class Paywall {
|
|
|
163
192
|
...(route?.tags?.length ? { tags: route.tags } : {}),
|
|
164
193
|
...(route?.iconUrl ? { iconUrl: route.iconUrl } : {}),
|
|
165
194
|
},
|
|
166
|
-
accepts:
|
|
167
|
-
scheme: "exact",
|
|
168
|
-
network: this.cfg.network,
|
|
169
|
-
amount: price.amount.toString(),
|
|
170
|
-
payTo: this.cfg.payTo,
|
|
171
|
-
maxTimeoutSeconds: this.cfg.maxTimeoutSeconds ?? 300,
|
|
172
|
-
asset: this.cfg.asset,
|
|
173
|
-
extra: { name: "USD Coin", version: "2", decimals: this.decimals, assetTransferMethod: paymentMethod },
|
|
174
|
-
})),
|
|
195
|
+
accepts: this.paymentOptions.flatMap((option) => paymentRequirementsForOption(option, price.amount, this.cfg.maxTimeoutSeconds ?? 300, this.cfg.paymentMethods)),
|
|
175
196
|
};
|
|
176
197
|
if (this.cfg.bazaar !== false && route && Object.keys(route).length > 0) {
|
|
177
198
|
const normalizedMethod = method.toUpperCase();
|
|
@@ -246,7 +267,7 @@ export class Paywall {
|
|
|
246
267
|
}
|
|
247
268
|
const challenge = this.buildChallenge(price, args.resource, args.method);
|
|
248
269
|
const requirements = selectAcceptedRequirements(payload, challenge.accepts);
|
|
249
|
-
const facilitator = this.facilitatorFor(
|
|
270
|
+
const facilitator = this.facilitatorFor(requirements);
|
|
250
271
|
const verified = await facilitator.verify(payload, requirements);
|
|
251
272
|
if (!verified.isValid) {
|
|
252
273
|
const challenge = this.buildChallenge(price, args.resource, args.method);
|
|
@@ -276,6 +297,7 @@ export class Paywall {
|
|
|
276
297
|
const receipt = await this.writeReceipt({
|
|
277
298
|
resource: args.resource,
|
|
278
299
|
price,
|
|
300
|
+
requirements,
|
|
279
301
|
settled,
|
|
280
302
|
payer: verified.payer ?? settled.payer,
|
|
281
303
|
merchantRef: args.merchantRef,
|
|
@@ -290,13 +312,25 @@ export class Paywall {
|
|
|
290
312
|
if (!this.cfg.ap2)
|
|
291
313
|
return undefined;
|
|
292
314
|
const { createAp2CheckoutJwt } = await import("./ap2.js");
|
|
293
|
-
|
|
315
|
+
const option = this.paymentOptions[0];
|
|
316
|
+
return createAp2CheckoutJwt({
|
|
317
|
+
ap2: this.cfg.ap2,
|
|
318
|
+
resource,
|
|
319
|
+
payTo: option.payTo,
|
|
320
|
+
price: { amount: price.amount, asset: option.asset, network: option.network, decimals: option.decimals ?? 6 },
|
|
321
|
+
route: this.cfg.route,
|
|
322
|
+
});
|
|
294
323
|
}
|
|
295
|
-
facilitatorFor(
|
|
296
|
-
const methodValue = isRecord(
|
|
297
|
-
?
|
|
324
|
+
facilitatorFor(requirements) {
|
|
325
|
+
const methodValue = isRecord(requirements.extra)
|
|
326
|
+
? requirements.extra.assetTransferMethod
|
|
298
327
|
: undefined;
|
|
299
328
|
const method = methodValue === "eip3009" || methodValue === "erc7710" ? methodValue : undefined;
|
|
329
|
+
const option = this.paymentOptions.find((candidate) => candidate.network === requirements.network &&
|
|
330
|
+
candidate.asset === requirements.asset &&
|
|
331
|
+
candidate.payTo === requirements.payTo);
|
|
332
|
+
if (option?.facilitator)
|
|
333
|
+
return new Facilitator(option.facilitator);
|
|
300
334
|
const override = method ? this.cfg.facilitators?.[method] : undefined;
|
|
301
335
|
return override ? new Facilitator(override) : this.facilitator;
|
|
302
336
|
}
|
|
@@ -306,9 +340,14 @@ export class Paywall {
|
|
|
306
340
|
if (this.cfg.fxRateScaled) {
|
|
307
341
|
try {
|
|
308
342
|
fxRateScaled = await this.cfg.fxRateScaled();
|
|
343
|
+
const decimals = typeof args.requirements.decimals === "number"
|
|
344
|
+
? args.requirements.decimals
|
|
345
|
+
: isRecord(args.requirements.extra) && typeof args.requirements.extra.decimals === "number"
|
|
346
|
+
? args.requirements.extra.decimals
|
|
347
|
+
: 6;
|
|
309
348
|
inrPaise =
|
|
310
349
|
(args.price.amount * fxRateScaled * 100n) /
|
|
311
|
-
(10n ** BigInt(
|
|
350
|
+
(10n ** BigInt(decimals) * 100000000n);
|
|
312
351
|
}
|
|
313
352
|
catch {
|
|
314
353
|
// A missing FX rate must not fail a settled payment. Backfill later.
|
|
@@ -318,10 +357,10 @@ export class Paywall {
|
|
|
318
357
|
id: randomUUID(),
|
|
319
358
|
resource: args.resource,
|
|
320
359
|
payer: args.payer,
|
|
321
|
-
payTo:
|
|
360
|
+
payTo: String(args.requirements.payTo),
|
|
322
361
|
amount: args.price.amount,
|
|
323
|
-
asset:
|
|
324
|
-
network:
|
|
362
|
+
asset: String(args.requirements.asset),
|
|
363
|
+
network: String(args.requirements.network),
|
|
325
364
|
txHash: args.settled.transaction,
|
|
326
365
|
inrPaise,
|
|
327
366
|
fxRateScaled,
|
|
@@ -332,6 +371,65 @@ export class Paywall {
|
|
|
332
371
|
return receipt;
|
|
333
372
|
}
|
|
334
373
|
}
|
|
374
|
+
export function resolvePaymentOptions(cfg) {
|
|
375
|
+
const options = cfg.accepts?.length
|
|
376
|
+
? cfg.accepts
|
|
377
|
+
: cfg.network && cfg.asset && cfg.payTo
|
|
378
|
+
? [{
|
|
379
|
+
network: cfg.network,
|
|
380
|
+
asset: cfg.asset,
|
|
381
|
+
payTo: cfg.payTo,
|
|
382
|
+
decimals: cfg.decimals ?? 6,
|
|
383
|
+
paymentMethods: cfg.paymentMethods,
|
|
384
|
+
}]
|
|
385
|
+
: [];
|
|
386
|
+
if (options.length === 0) {
|
|
387
|
+
throw new Error("Configure either `accepts` or the legacy `network`, `asset`, and `payTo` fields.");
|
|
388
|
+
}
|
|
389
|
+
for (const option of options) {
|
|
390
|
+
if (!option.network || !option.asset || !option.payTo) {
|
|
391
|
+
throw new Error("Every payment option requires network, asset, and payTo.");
|
|
392
|
+
}
|
|
393
|
+
if (option.network.startsWith("solana:") && !(option.feePayer || option.extra?.feePayer)) {
|
|
394
|
+
throw new Error(`Solana payment option ${option.network} requires a facilitator feePayer.`);
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
return options.map((option) => ({ ...option }));
|
|
398
|
+
}
|
|
399
|
+
function paymentRequirementsForOption(option, amount, maxTimeoutSeconds, legacyMethods) {
|
|
400
|
+
const baseRequirement = {
|
|
401
|
+
scheme: "exact",
|
|
402
|
+
network: option.network,
|
|
403
|
+
amount: amount.toString(),
|
|
404
|
+
payTo: option.payTo,
|
|
405
|
+
maxTimeoutSeconds,
|
|
406
|
+
asset: option.asset,
|
|
407
|
+
};
|
|
408
|
+
if (option.network.startsWith("solana:")) {
|
|
409
|
+
return [{
|
|
410
|
+
...baseRequirement,
|
|
411
|
+
extra: {
|
|
412
|
+
...(option.extra ?? {}),
|
|
413
|
+
feePayer: option.feePayer ?? option.extra?.feePayer,
|
|
414
|
+
},
|
|
415
|
+
}];
|
|
416
|
+
}
|
|
417
|
+
const methods = option.paymentMethods?.length
|
|
418
|
+
? option.paymentMethods
|
|
419
|
+
: legacyMethods?.length
|
|
420
|
+
? legacyMethods
|
|
421
|
+
: ["eip3009"];
|
|
422
|
+
return methods.map((paymentMethod) => ({
|
|
423
|
+
...baseRequirement,
|
|
424
|
+
extra: {
|
|
425
|
+
name: "USD Coin",
|
|
426
|
+
version: "2",
|
|
427
|
+
decimals: option.decimals ?? 6,
|
|
428
|
+
...(option.extra ?? {}),
|
|
429
|
+
assetTransferMethod: paymentMethod,
|
|
430
|
+
},
|
|
431
|
+
}));
|
|
432
|
+
}
|
|
335
433
|
function discoverySchema(schema) {
|
|
336
434
|
if (schema.type === "object" && isRecord(schema.properties)) {
|
|
337
435
|
const { type: _type, ...rest } = schema;
|
|
@@ -395,7 +493,13 @@ export function expressPaywall(cfg) {
|
|
|
395
493
|
if (outcome.ap2CheckoutJwt)
|
|
396
494
|
res.setHeader("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
|
|
397
495
|
exposeHeaders(res, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
|
|
398
|
-
|
|
496
|
+
{
|
|
497
|
+
const html = await paywall.renderBrowserChallenge(outcome.challenge, req.headers.accept);
|
|
498
|
+
if (html)
|
|
499
|
+
res.status(402).type("html").send(html);
|
|
500
|
+
else
|
|
501
|
+
res.status(402).json(outcome.challenge);
|
|
502
|
+
}
|
|
399
503
|
return;
|
|
400
504
|
case "rejected":
|
|
401
505
|
if (outcome.paymentRequiredHeader)
|
|
@@ -403,10 +507,18 @@ export function expressPaywall(cfg) {
|
|
|
403
507
|
if (outcome.ap2CheckoutJwt)
|
|
404
508
|
res.setHeader("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
|
|
405
509
|
exposeHeaders(res, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
510
|
+
{
|
|
511
|
+
const html = outcome.challenge
|
|
512
|
+
? await paywall.renderBrowserChallenge(outcome.challenge, req.headers.accept)
|
|
513
|
+
: undefined;
|
|
514
|
+
if (html)
|
|
515
|
+
res.status(outcome.status ?? 402).type("html").send(html);
|
|
516
|
+
else
|
|
517
|
+
res.status(outcome.status ?? 402).json({
|
|
518
|
+
error: outcome.reason,
|
|
519
|
+
...(outcome.challenge ?? {}),
|
|
520
|
+
});
|
|
521
|
+
}
|
|
410
522
|
return;
|
|
411
523
|
case "paid":
|
|
412
524
|
if (outcome.settlementHeader) {
|
|
@@ -446,7 +558,8 @@ export function honoPaywall(cfg) {
|
|
|
446
558
|
if (outcome.ap2CheckoutJwt)
|
|
447
559
|
c.header("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
|
|
448
560
|
exposeHonoHeaders(c, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
|
|
449
|
-
|
|
561
|
+
const html = await paywall.renderBrowserChallenge(outcome.challenge, c.req.header("accept"));
|
|
562
|
+
return html ? c.html(html, 402) : c.json(outcome.challenge, 402);
|
|
450
563
|
}
|
|
451
564
|
if (outcome.kind === "rejected") {
|
|
452
565
|
if (outcome.paymentRequiredHeader)
|
|
@@ -454,7 +567,12 @@ export function honoPaywall(cfg) {
|
|
|
454
567
|
if (outcome.ap2CheckoutJwt)
|
|
455
568
|
c.header("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
|
|
456
569
|
exposeHonoHeaders(c, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
|
|
457
|
-
|
|
570
|
+
const html = outcome.challenge
|
|
571
|
+
? await paywall.renderBrowserChallenge(outcome.challenge, c.req.header("accept"))
|
|
572
|
+
: undefined;
|
|
573
|
+
return html
|
|
574
|
+
? c.html(html, (outcome.status ?? 402))
|
|
575
|
+
: c.json({ error: outcome.reason, ...(outcome.challenge ?? {}) }, (outcome.status ?? 402));
|
|
458
576
|
}
|
|
459
577
|
c.set("x402Receipt", outcome.receipt);
|
|
460
578
|
await next();
|
|
@@ -495,8 +613,11 @@ export function nodePaywall(cfg) {
|
|
|
495
613
|
if (outcome.ap2CheckoutJwt)
|
|
496
614
|
res.setHeader("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
|
|
497
615
|
exposeHeaders(res, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
|
|
498
|
-
|
|
499
|
-
|
|
616
|
+
const html = outcome.challenge
|
|
617
|
+
? await paywall.renderBrowserChallenge(outcome.challenge, req.headers.accept)
|
|
618
|
+
: undefined;
|
|
619
|
+
res.setHeader("content-type", html ? "text/html; charset=utf-8" : "application/json");
|
|
620
|
+
res.end(html ?? JSON.stringify(outcome.challenge ?? { error: outcome.reason }));
|
|
500
621
|
return null;
|
|
501
622
|
};
|
|
502
623
|
}
|
package/dist/middleware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seedhape/x402-merchant-sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Add x402 payment-gated routes, settlement receipts, and merchant accounting to Node.js services.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"payments",
|
|
21
21
|
"usdc",
|
|
22
22
|
"base",
|
|
23
|
+
"solana",
|
|
23
24
|
"merchant",
|
|
24
25
|
"paywall",
|
|
25
26
|
"api",
|
|
@@ -39,13 +40,28 @@
|
|
|
39
40
|
},
|
|
40
41
|
"dependencies": {
|
|
41
42
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
43
|
+
"@solana/kit": "^5.5.1",
|
|
42
44
|
"@x402/core": "2.23.0",
|
|
43
45
|
"@x402/evm": "2.23.0",
|
|
44
46
|
"@x402/extensions": "2.23.0",
|
|
45
47
|
"@x402/mcp": "2.23.0",
|
|
48
|
+
"@x402/svm": "2.23.0",
|
|
46
49
|
"jose": "^6.1.0",
|
|
47
50
|
"zod": "^3.25.76"
|
|
48
51
|
},
|
|
52
|
+
"peerDependencies": {
|
|
53
|
+
"@x402/paywall": "^2.23.0"
|
|
54
|
+
},
|
|
55
|
+
"peerDependenciesMeta": {
|
|
56
|
+
"@x402/paywall": {
|
|
57
|
+
"optional": true
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"devDependencies": {
|
|
61
|
+
"@x402/paywall": "2.24.0",
|
|
62
|
+
"react": "^19.0.0",
|
|
63
|
+
"react-dom": "^19.0.0"
|
|
64
|
+
},
|
|
49
65
|
"scripts": {
|
|
50
66
|
"test": "node --test test/*.test.mjs"
|
|
51
67
|
}
|