@seedhape/x402-merchant-sdk 0.3.4 → 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 +79 -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 +2 -0
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +24 -16
- package/dist/mcp.js.map +1 -1
- package/dist/middleware.d.ts +33 -4
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +160 -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:
|
|
@@ -93,6 +163,7 @@ const config = merchantConfig(base, {
|
|
|
93
163
|
},
|
|
94
164
|
outputExample: { title: "Example page", text: "Readable page text" },
|
|
95
165
|
tags: ["web", "metadata", "extraction"],
|
|
166
|
+
iconUrl: "https://api.example.com/icon-512.png",
|
|
96
167
|
},
|
|
97
168
|
});
|
|
98
169
|
```
|
|
@@ -121,6 +192,8 @@ Do not treat `FACILITATOR_URL=https://api.cdp.coinbase.com/platform/v2/x402` by
|
|
|
121
192
|
|
|
122
193
|
The `route` metadata automatically becomes the Bazaar `extensions.bazaar.info` object and populates the resource `serviceName` and `tags` fields in the x402 v2 challenge. Use `outputExample` because agents use a realistic result example when deciding whether to call a service. Sonar can read the same resource URL, description, schemas, payment requirements, network, asset, and payment methods from that challenge.
|
|
123
194
|
|
|
195
|
+
`iconUrl` is copied into the resource and Bazaar metadata for downstream marketplaces such as Agentic Market. Use a publicly accessible HTTPS image URL, preferably a square PNG or WebP without authentication.
|
|
196
|
+
|
|
124
197
|
When deploying behind a TLS reverse proxy, set `publicOrigin` so the resource URL advertises the public HTTPS origin while preserving request paths and query parameters:
|
|
125
198
|
|
|
126
199
|
```ts
|
|
@@ -166,7 +239,7 @@ The HTTP route and MCP tool produce separate x402 resources, so each can have it
|
|
|
166
239
|
|
|
167
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.
|
|
168
241
|
|
|
169
|
-
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.
|
|
170
243
|
|
|
171
244
|
```ts
|
|
172
245
|
app.use(expressPaywall(merchantConfig(base, {
|
|
@@ -214,8 +287,8 @@ PAYMENT-REQUIRED: eyJ...
|
|
|
214
287
|
|
|
215
288
|
## Payment flow
|
|
216
289
|
|
|
217
|
-
1. An unpaid request receives a v2 `402` challenge with a `PAYMENT-REQUIRED` header containing
|
|
218
|
-
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`.
|
|
219
292
|
3. The facilitator verifies and settles the payment.
|
|
220
293
|
4. USDC settles directly to `payTo`; Seedhape never holds merchant funds.
|
|
221
294
|
5. The request continues and the settlement is returned in `PAYMENT-RESPONSE`.
|
|
@@ -224,7 +297,7 @@ The SDK emits the current x402 v2 challenge shape. For migration, it also accept
|
|
|
224
297
|
|
|
225
298
|
## Official x402 integrations
|
|
226
299
|
|
|
227
|
-
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.
|
|
228
301
|
|
|
229
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.
|
|
230
303
|
|
|
@@ -247,7 +320,7 @@ Sonar listing does not replace Bazaar metadata. A merchant can publish Bazaar di
|
|
|
247
320
|
## Production checklist
|
|
248
321
|
|
|
249
322
|
- Use a self-custodial merchant receiving address.
|
|
250
|
-
- Use
|
|
323
|
+
- Use Base mainnet or Solana mainnet presets in production and their testnet/devnet presets only for testing.
|
|
251
324
|
- Configure a production facilitator URL and keep it server-side.
|
|
252
325
|
- Keep health, documentation, and discovery metadata routes free.
|
|
253
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
CHANGED
|
@@ -14,6 +14,8 @@ export interface McpToolConfig {
|
|
|
14
14
|
/** Optional MCP resource URL; defaults to mcp://tool/{name}. */
|
|
15
15
|
resourceUrl?: string;
|
|
16
16
|
tags?: string[];
|
|
17
|
+
/** Public HTTPS image URL used by Bazaar and downstream marketplaces. */
|
|
18
|
+
iconUrl?: string;
|
|
17
19
|
/** Override the shared facilitator for this MCP tool. */
|
|
18
20
|
facilitator?: FacilitatorConfig;
|
|
19
21
|
}
|
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: {
|
|
@@ -36,6 +43,7 @@ export async function createPaidMcpTool(server, paywall, tool, handler) {
|
|
|
36
43
|
description: tool.description ?? paywall.route?.description ?? paywall.description,
|
|
37
44
|
serviceName: paywall.route?.name,
|
|
38
45
|
tags: tool.tags ?? paywall.route?.tags ?? (paywall.route?.category ? [paywall.route.category] : undefined),
|
|
46
|
+
iconUrl: tool.iconUrl ?? paywall.route?.iconUrl,
|
|
39
47
|
},
|
|
40
48
|
extensions: declareDiscoveryExtension({
|
|
41
49
|
toolName: tool.name,
|
|
@@ -50,18 +58,18 @@ export async function createPaidMcpTool(server, paywall, tool, handler) {
|
|
|
50
58
|
onAfterSettlement: async ({ settlement, paymentPayload }) => {
|
|
51
59
|
if (!settlement.success)
|
|
52
60
|
return;
|
|
61
|
+
const accepted = paymentPayload.accepted;
|
|
53
62
|
await paywall.receipts?.record({
|
|
54
63
|
id: randomUUID(),
|
|
55
64
|
resource: tool.resourceUrl ?? `mcp://tool/${tool.name}`,
|
|
56
65
|
payer: settlement.payer,
|
|
57
|
-
payTo:
|
|
66
|
+
payTo: accepted.payTo,
|
|
58
67
|
amount: price.amount,
|
|
59
|
-
asset:
|
|
60
|
-
network:
|
|
68
|
+
asset: accepted.asset,
|
|
69
|
+
network: accepted.network,
|
|
61
70
|
txHash: settlement.transaction,
|
|
62
71
|
settledAt: Math.floor(Date.now() / 1000),
|
|
63
72
|
});
|
|
64
|
-
void paymentPayload;
|
|
65
73
|
},
|
|
66
74
|
} : undefined,
|
|
67
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":"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,EAI5B,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAwBzB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAiB,EACjB,OAAsB,EACtB,IAAmB,EACnB,OAA8B;IAE9B,MAAM,cAAc,GAAG,4BAA4B,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7F,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,OAAO,CAAC,KAAK,KAAK,UAAU;QAC/C,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,uFAAuF,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QACzH,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAClB,MAAM,cAAc,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC/D,cAAc,CAAC,wBAAwB,CAAC;QACtC,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,MAAM,CAAC,OAAgC;QAChD,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE;YAC/B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;gBACzC,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;gBAClF,CAAC,CAAC;oBACE,IAAI,EAAE,UAAU;oBAChB,OAAO,EAAE,GAAG;oBACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;oBAC9B,mBAAmB,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS;oBAC3F,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;iBACxB;SACN;QACD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;KAC7C,CAAC,CACH,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACX,MAAM,OAAO,GAAG,oBAAoB,CAAC,cAAc,EAAE;QACnD,OAAO;QACP,QAAQ,EAAE;YACR,GAAG,EAAE,IAAI,CAAC,WAAW,IAAI,cAAc,IAAI,CAAC,IAAI,EAAE;YAClD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,WAAW,IAAI,OAAO,CAAC,WAAW;YAClF,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1G,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO;SAChD;QACD,UAAU,EAAE,yBAAyB,CAAC;YACpC,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,WAAW;YAC3D,WAAW,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;YACvE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC9B,OAAO,EAAE,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,KAAK,EAAE,aAAa,IAAI,EAAE;gBACjE,MAAM,EAAE,IAAI,CAAC,gBAAgB;aAC9B,CAAC,CAAC,CAAC,SAAS;SACd,CAAC;QACF,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxB,iBAAiB,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAAE,EAAE;gBAC1D,IAAI,CAAC,UAAU,CAAC,OAAO;oBAAE,OAAO;gBAChC,MAAM,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;gBACzC,MAAM,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC;oBAC7B,EAAE,EAAE,UAAU,EAAE;oBAChB,QAAQ,EAAE,IAAI,CAAC,WAAW,IAAI,cAAc,IAAI,CAAC,IAAI,EAAE;oBACvD,KAAK,EAAE,UAAU,CAAC,KAAK;oBACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,MAAM,EAAE,UAAU,CAAC,WAAW;oBAC9B,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;iBACzC,CAAC,CAAC;YACL,CAAC;SACF,CAAC,CAAC,CAAC,SAAS;KACd,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAClB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,IAAa,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,WAAW,IAAI,eAAe,EACjE,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAgB,EACvC,OAAgB,CACjB,CAAC;AACJ,CAAC"}
|
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
|
}
|
|
@@ -72,6 +88,8 @@ export interface RouteMetadata {
|
|
|
72
88
|
tags?: string[];
|
|
73
89
|
/** Optional public documentation URL. */
|
|
74
90
|
docsUrl?: string;
|
|
91
|
+
/** Public HTTPS image URL used by Bazaar and downstream marketplaces. */
|
|
92
|
+
iconUrl?: string;
|
|
75
93
|
/** Representative successful response returned to discovery clients. */
|
|
76
94
|
outputExample?: unknown;
|
|
77
95
|
}
|
|
@@ -81,6 +99,8 @@ export interface MerchantNetworkConfig {
|
|
|
81
99
|
decimals: number;
|
|
82
100
|
facilitator: FacilitatorConfig;
|
|
83
101
|
}
|
|
102
|
+
export declare const SOLANA_MAINNET: MerchantNetworkConfig;
|
|
103
|
+
export declare const SOLANA_DEVNET: MerchantNetworkConfig;
|
|
84
104
|
/** Base mainnet + USDC defaults. Override any field for a custom facilitator. */
|
|
85
105
|
export declare const BASE_MAINNET: MerchantNetworkConfig;
|
|
86
106
|
/** Base Sepolia + USDC defaults for development and staging. */
|
|
@@ -88,16 +108,21 @@ export declare const BASE_SEPOLIA: MerchantNetworkConfig;
|
|
|
88
108
|
/** Lowercase aliases make preset usage read naturally in route definitions. */
|
|
89
109
|
export declare const base: MerchantNetworkConfig;
|
|
90
110
|
export declare const baseSepolia: MerchantNetworkConfig;
|
|
111
|
+
export declare const solana: MerchantNetworkConfig;
|
|
112
|
+
export declare const solanaDevnet: MerchantNetworkConfig;
|
|
91
113
|
export interface MerchantPresetConfig extends MerchantNetworkConfig {
|
|
92
114
|
paymentMethods?: PaymentMethod[];
|
|
93
115
|
}
|
|
94
116
|
/** Compose a route configuration from a network preset without mutation. */
|
|
95
117
|
export declare function merchantConfig(preset: MerchantPresetConfig, config: Omit<PaywallConfig, "network" | "asset" | "decimals" | "facilitator"> & Partial<Pick<PaywallConfig, "network" | "asset" | "decimals" | "facilitator">>): PaywallConfig;
|
|
96
118
|
export interface PaywallConfig {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
119
|
+
/** Legacy single-network fields. Omit these when `accepts` is provided. */
|
|
120
|
+
payTo?: string;
|
|
121
|
+
network?: string;
|
|
122
|
+
asset?: string;
|
|
100
123
|
decimals?: number;
|
|
124
|
+
/** Multiple chain-specific payment choices shown in one Bazaar/Agentic Market listing. */
|
|
125
|
+
accepts?: MerchantPaymentOption[];
|
|
101
126
|
/** Payment authorization methods advertised in the 402 response. */
|
|
102
127
|
paymentMethods?: PaymentMethod[];
|
|
103
128
|
/** Optional facilitator overrides for individual transfer methods. */
|
|
@@ -120,6 +145,8 @@ export interface PaywallConfig {
|
|
|
120
145
|
bazaar?: boolean;
|
|
121
146
|
/** Optional merchant AP2 issuer. Adds AP2-CHECKOUT-JWT to 402 responses. */
|
|
122
147
|
ap2?: Ap2MerchantConfig;
|
|
148
|
+
/** Render the official EVM + Solana browser UI for requests accepting text/html. */
|
|
149
|
+
browserPaywall?: true | BrowserPaywallConfig;
|
|
123
150
|
maxTimeoutSeconds?: number;
|
|
124
151
|
/** Routes that never require payment, e.g. ["/health", "/.well-known/*"]. */
|
|
125
152
|
free?: string[];
|
|
@@ -166,9 +193,10 @@ export interface PaywallOutcome {
|
|
|
166
193
|
export declare class Paywall {
|
|
167
194
|
private readonly cfg;
|
|
168
195
|
private readonly facilitator;
|
|
169
|
-
private readonly
|
|
196
|
+
private readonly paymentOptions;
|
|
170
197
|
constructor(cfg: PaywallConfig);
|
|
171
198
|
priceFor(path: string, method: string, query: URLSearchParams): Money | null;
|
|
199
|
+
renderBrowserChallenge(challenge: unknown, accept?: string | string[]): Promise<string | undefined>;
|
|
172
200
|
buildChallenge(price: Money, resource: string, method?: string): {
|
|
173
201
|
x402Version: number;
|
|
174
202
|
error: string;
|
|
@@ -193,6 +221,7 @@ export declare class Paywall {
|
|
|
193
221
|
private facilitatorFor;
|
|
194
222
|
private writeReceipt;
|
|
195
223
|
}
|
|
224
|
+
export declare function resolvePaymentOptions(cfg: PaywallConfig): MerchantPaymentOption[];
|
|
196
225
|
export declare function expressPaywall(cfg: PaywallConfig): (req: any, res: any, next: any) => Promise<any>;
|
|
197
226
|
export declare function honoPaywall(cfg: PaywallConfig): (c: any, next: any) => Promise<any>;
|
|
198
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":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEjE,OAAO,EAAyB,kBAAkB,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AActG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEvF,MAAM,WAAW,KAAK;IACpB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,eAAe,CAAA;KAAE,GAAG,KAAK,GAAG,IAAI,CAAC;CAC/E;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,SAAS,CAAC;AAElD,oEAAoE;AACpE,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,6DAA6D;IAC7D,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,oDAAoD;IACpD,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,iBAAiB,CAAC;CAChC;AAED,eAAO,MAAM,cAAc,EAAE,qBAK5B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,qBAK3B,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,YAAY,EAAE,qBAK1B,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,YAAY,EAAE,qBAK1B,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,IAAI,uBAAe,CAAC;AACjC,eAAO,MAAM,WAAW,uBAAe,CAAC;AACxC,eAAO,MAAM,MAAM,uBAAiB,CAAC;AACrC,eAAO,MAAM,YAAY,uBAAgB,CAAC;AAE1C,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC,GAC3E,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC,CAAC,GAC/E,aAAa,CAUf;AAED,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAClC,oEAAoE;IACpE,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACjE,oFAAoF;IACpF,KAAK,EAAE,KAAK,GAAG,aAAa,CAAC;IAC7B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,oFAAoF;IACpF,cAAc,CAAC,EAAE,IAAI,GAAG,oBAAoB,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,qBAAa,WAAW;IAIpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqB;gBAG3B,GAAG,EAAE,iBAAiB,EACtB,SAAS,GAAE,OAAO,KAAa;IAgB5C,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAetE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;YAiB9D,IAAI;CAenB;AAED,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,iBAAiB,GAAG,kBAAkB,CAc/F;AAmBD,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,OAAO;IAIN,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHhC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;gBAE5B,GAAG,EAAE,aAAa;IAQ/C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,KAAK,GAAG,IAAI;IAMtE,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IASzG,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAQ,GA2DvC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QACxC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC;IAGH,4EAA4E;IAC5E,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IASlC,OAAO,CAAC,qBAAqB;IAIvB,MAAM,CAAC,IAAI,EAAE;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,eAAe,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,cAAc,CAAC;YAwEb,cAAc;IAa5B,OAAO,CAAC,cAAc;YAeR,YAAY;CA2C3B;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,aAAa,GAAG,qBAAqB,EAAE,CAwBjF;AAwFD,wBAAgB,cAAc,CAAC,GAAG,EAAE,aAAa,IAGd,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,kBAqD/D;AAMD,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,IAGX,GAAG,GAAG,EAAE,MAAM,GAAG,kBAsCnD;AAMD,wBAAgB,WAAW,CAAC,GAAG,EAAE,aAAa,IAG1C,KAAK,eAAe,EACpB,KAAK,cAAc,KAClB,OAAO,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,CA8BpC"}
|
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 = {
|
|
@@ -161,16 +190,9 @@ export class Paywall {
|
|
|
161
190
|
mimeType: "application/json",
|
|
162
191
|
...(route?.name ? { serviceName: route.name } : {}),
|
|
163
192
|
...(route?.tags?.length ? { tags: route.tags } : {}),
|
|
193
|
+
...(route?.iconUrl ? { iconUrl: route.iconUrl } : {}),
|
|
164
194
|
},
|
|
165
|
-
accepts:
|
|
166
|
-
scheme: "exact",
|
|
167
|
-
network: this.cfg.network,
|
|
168
|
-
amount: price.amount.toString(),
|
|
169
|
-
payTo: this.cfg.payTo,
|
|
170
|
-
maxTimeoutSeconds: this.cfg.maxTimeoutSeconds ?? 300,
|
|
171
|
-
asset: this.cfg.asset,
|
|
172
|
-
extra: { name: "USD Coin", version: "2", decimals: this.decimals, assetTransferMethod: paymentMethod },
|
|
173
|
-
})),
|
|
195
|
+
accepts: this.paymentOptions.flatMap((option) => paymentRequirementsForOption(option, price.amount, this.cfg.maxTimeoutSeconds ?? 300, this.cfg.paymentMethods)),
|
|
174
196
|
};
|
|
175
197
|
if (this.cfg.bazaar !== false && route && Object.keys(route).length > 0) {
|
|
176
198
|
const normalizedMethod = method.toUpperCase();
|
|
@@ -192,6 +214,7 @@ export class Paywall {
|
|
|
192
214
|
...(isRecord(discovery.bazaar) ? discovery.bazaar : {}),
|
|
193
215
|
...(route?.category ? { category: route.category } : {}),
|
|
194
216
|
...(route?.tags?.length ? { tags: route.tags } : {}),
|
|
217
|
+
...(route?.iconUrl ? { iconUrl: route.iconUrl } : {}),
|
|
195
218
|
info: {
|
|
196
219
|
...(isRecord(discovery.bazaar) && isRecord(discovery.bazaar.info) ? discovery.bazaar.info : {}),
|
|
197
220
|
...(route?.name ? { name: route.name } : {}),
|
|
@@ -199,6 +222,7 @@ export class Paywall {
|
|
|
199
222
|
...(route?.description || this.cfg.description ? { description } : {}),
|
|
200
223
|
...(route?.category ? { category: route.category } : {}),
|
|
201
224
|
...(route?.tags?.length ? { tags: route.tags } : {}),
|
|
225
|
+
...(route?.iconUrl ? { iconUrl: route.iconUrl } : {}),
|
|
202
226
|
...(route?.docsUrl ? { docsUrl: route.docsUrl } : {}),
|
|
203
227
|
},
|
|
204
228
|
},
|
|
@@ -243,7 +267,7 @@ export class Paywall {
|
|
|
243
267
|
}
|
|
244
268
|
const challenge = this.buildChallenge(price, args.resource, args.method);
|
|
245
269
|
const requirements = selectAcceptedRequirements(payload, challenge.accepts);
|
|
246
|
-
const facilitator = this.facilitatorFor(
|
|
270
|
+
const facilitator = this.facilitatorFor(requirements);
|
|
247
271
|
const verified = await facilitator.verify(payload, requirements);
|
|
248
272
|
if (!verified.isValid) {
|
|
249
273
|
const challenge = this.buildChallenge(price, args.resource, args.method);
|
|
@@ -273,6 +297,7 @@ export class Paywall {
|
|
|
273
297
|
const receipt = await this.writeReceipt({
|
|
274
298
|
resource: args.resource,
|
|
275
299
|
price,
|
|
300
|
+
requirements,
|
|
276
301
|
settled,
|
|
277
302
|
payer: verified.payer ?? settled.payer,
|
|
278
303
|
merchantRef: args.merchantRef,
|
|
@@ -287,13 +312,25 @@ export class Paywall {
|
|
|
287
312
|
if (!this.cfg.ap2)
|
|
288
313
|
return undefined;
|
|
289
314
|
const { createAp2CheckoutJwt } = await import("./ap2.js");
|
|
290
|
-
|
|
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
|
+
});
|
|
291
323
|
}
|
|
292
|
-
facilitatorFor(
|
|
293
|
-
const methodValue = isRecord(
|
|
294
|
-
?
|
|
324
|
+
facilitatorFor(requirements) {
|
|
325
|
+
const methodValue = isRecord(requirements.extra)
|
|
326
|
+
? requirements.extra.assetTransferMethod
|
|
295
327
|
: undefined;
|
|
296
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);
|
|
297
334
|
const override = method ? this.cfg.facilitators?.[method] : undefined;
|
|
298
335
|
return override ? new Facilitator(override) : this.facilitator;
|
|
299
336
|
}
|
|
@@ -303,9 +340,14 @@ export class Paywall {
|
|
|
303
340
|
if (this.cfg.fxRateScaled) {
|
|
304
341
|
try {
|
|
305
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;
|
|
306
348
|
inrPaise =
|
|
307
349
|
(args.price.amount * fxRateScaled * 100n) /
|
|
308
|
-
(10n ** BigInt(
|
|
350
|
+
(10n ** BigInt(decimals) * 100000000n);
|
|
309
351
|
}
|
|
310
352
|
catch {
|
|
311
353
|
// A missing FX rate must not fail a settled payment. Backfill later.
|
|
@@ -315,10 +357,10 @@ export class Paywall {
|
|
|
315
357
|
id: randomUUID(),
|
|
316
358
|
resource: args.resource,
|
|
317
359
|
payer: args.payer,
|
|
318
|
-
payTo:
|
|
360
|
+
payTo: String(args.requirements.payTo),
|
|
319
361
|
amount: args.price.amount,
|
|
320
|
-
asset:
|
|
321
|
-
network:
|
|
362
|
+
asset: String(args.requirements.asset),
|
|
363
|
+
network: String(args.requirements.network),
|
|
322
364
|
txHash: args.settled.transaction,
|
|
323
365
|
inrPaise,
|
|
324
366
|
fxRateScaled,
|
|
@@ -329,6 +371,65 @@ export class Paywall {
|
|
|
329
371
|
return receipt;
|
|
330
372
|
}
|
|
331
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
|
+
}
|
|
332
433
|
function discoverySchema(schema) {
|
|
333
434
|
if (schema.type === "object" && isRecord(schema.properties)) {
|
|
334
435
|
const { type: _type, ...rest } = schema;
|
|
@@ -392,7 +493,13 @@ export function expressPaywall(cfg) {
|
|
|
392
493
|
if (outcome.ap2CheckoutJwt)
|
|
393
494
|
res.setHeader("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
|
|
394
495
|
exposeHeaders(res, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
|
|
395
|
-
|
|
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
|
+
}
|
|
396
503
|
return;
|
|
397
504
|
case "rejected":
|
|
398
505
|
if (outcome.paymentRequiredHeader)
|
|
@@ -400,10 +507,18 @@ export function expressPaywall(cfg) {
|
|
|
400
507
|
if (outcome.ap2CheckoutJwt)
|
|
401
508
|
res.setHeader("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
|
|
402
509
|
exposeHeaders(res, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
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
|
+
}
|
|
407
522
|
return;
|
|
408
523
|
case "paid":
|
|
409
524
|
if (outcome.settlementHeader) {
|
|
@@ -443,7 +558,8 @@ export function honoPaywall(cfg) {
|
|
|
443
558
|
if (outcome.ap2CheckoutJwt)
|
|
444
559
|
c.header("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
|
|
445
560
|
exposeHonoHeaders(c, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
|
|
446
|
-
|
|
561
|
+
const html = await paywall.renderBrowserChallenge(outcome.challenge, c.req.header("accept"));
|
|
562
|
+
return html ? c.html(html, 402) : c.json(outcome.challenge, 402);
|
|
447
563
|
}
|
|
448
564
|
if (outcome.kind === "rejected") {
|
|
449
565
|
if (outcome.paymentRequiredHeader)
|
|
@@ -451,7 +567,12 @@ export function honoPaywall(cfg) {
|
|
|
451
567
|
if (outcome.ap2CheckoutJwt)
|
|
452
568
|
c.header("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
|
|
453
569
|
exposeHonoHeaders(c, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
|
|
454
|
-
|
|
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));
|
|
455
576
|
}
|
|
456
577
|
c.set("x402Receipt", outcome.receipt);
|
|
457
578
|
await next();
|
|
@@ -492,8 +613,11 @@ export function nodePaywall(cfg) {
|
|
|
492
613
|
if (outcome.ap2CheckoutJwt)
|
|
493
614
|
res.setHeader("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
|
|
494
615
|
exposeHeaders(res, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
|
|
495
|
-
|
|
496
|
-
|
|
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 }));
|
|
497
621
|
return null;
|
|
498
622
|
};
|
|
499
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
|
}
|