paygate 5.1.0 → 5.3.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 +20 -0
- package/dist/core.d.ts +30 -2
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +223 -73
- package/dist/core.js.map +1 -1
- package/dist/core.test.js +287 -30
- package/dist/core.test.js.map +1 -1
- package/dist/express.d.ts +2 -2
- package/dist/express.d.ts.map +1 -1
- package/dist/express.js +10 -10
- package/dist/fastify.d.ts +3 -3
- package/dist/fastify.d.ts.map +1 -1
- package/dist/fastify.js +13 -11
- package/dist/fastify.js.map +1 -1
- package/dist/ghost-partner.d.ts +58 -0
- package/dist/ghost-partner.d.ts.map +1 -0
- package/dist/ghost-partner.js +95 -0
- package/dist/ghost-partner.js.map +1 -0
- package/dist/ghost-partner.test.d.ts +2 -0
- package/dist/ghost-partner.test.d.ts.map +1 -0
- package/dist/ghost-partner.test.js +101 -0
- package/dist/ghost-partner.test.js.map +1 -0
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/package.json +18 -5
package/README.md
CHANGED
|
@@ -129,6 +129,26 @@ The agent-side [`payagent`](https://www.npmjs.com/package/payagent) CLI and SDK
|
|
|
129
129
|
| `facilitatorUrl` | No | Manifest value | Compatibility override. In v3, merchant capabilities are authoritative. |
|
|
130
130
|
| `timeout` | No | `30000` | ArisPay/facilitator call timeout in ms. |
|
|
131
131
|
| `cacheTtlMs` | No | `300000` | Merchant capability cache TTL. |
|
|
132
|
+
| `selfSettle` | No | — | `{ privateKey, rpcUrl? }`. Submit settlements from your own funded key: verification runs against the facilitator (free), then the SDK submits the EIP-3009 `transferWithAuthorization` itself. You pay chain gas (~$0.001/settle on Base) and nobody else — no facilitator fee, no subsidy that ends. The key is any funded EOA; it pays gas only and never receives or holds customer funds. Replay protection is on-chain (the EIP-3009 nonce). Defaults to public Base RPCs; set `rpcUrl` for other networks or your own provider. |
|
|
133
|
+
|
|
134
|
+
### Self-settle
|
|
135
|
+
|
|
136
|
+
```ts
|
|
137
|
+
const pw = paygate({
|
|
138
|
+
merchantId: "m_123",
|
|
139
|
+
selfSettle: { privateKey: process.env.SETTLE_KEY! }, // funded with a few $ of Base ETH
|
|
140
|
+
});
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Requires the optional peer dependency `ethers` (v6): `npm install ethers`. The
|
|
144
|
+
facilitator path never loads it.
|
|
145
|
+
|
|
146
|
+
Verified end-to-end against Circle's real USDC on Base Sepolia (2026-07-19): a
|
|
147
|
+
signed EIP-3009 authorization settled on-chain via `submitSelfSettle` — 0.01
|
|
148
|
+
USDC transferred, gas paid by the self-settle key — tx
|
|
149
|
+
[`0xe151fe05…dda4cb0`](https://sepolia.basescan.org/tx/0xe151fe058f2e03f74f7a6ec4bea95224515592bf3bee8f689b37caf04dda4cb0)
|
|
150
|
+
(`AuthorizationUsed` + `Transfer` events). This confirms Circle USDC accepts the
|
|
151
|
+
9-arg split-signature `transferWithAuthorization` form the SDK submits.
|
|
132
152
|
|
|
133
153
|
### Compatibility mode
|
|
134
154
|
|
package/dist/core.d.ts
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
export declare const DEFAULT_FACILITATOR = "https://facilitator.arispay.app";
|
|
14
14
|
export declare const DEFAULT_API_URL = "https://api.arispay.app";
|
|
15
15
|
export declare const CAPABILITY_CACHE_TTL_MS: number;
|
|
16
|
+
export type PaygateCurrency = "USD" | "EUR";
|
|
16
17
|
/**
|
|
17
18
|
* Build the response headers for an x402 402 challenge in the canonical
|
|
18
19
|
* wire format observed across Bazaar-listed endpoints.
|
|
@@ -64,12 +65,39 @@ export interface PaygateConfig {
|
|
|
64
65
|
*/
|
|
65
66
|
network?: string;
|
|
66
67
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
68
|
+
* Settlement currency. Default `"USD"` (USDC). `"EUR"` settles in Circle
|
|
69
|
+
* EURC; `priceCents` then means integer EUR cents (the cents → 6-decimals
|
|
70
|
+
* conversion factor is the same 10^4 for both assets).
|
|
71
|
+
*
|
|
72
|
+
* v2-shim path: resolves the EURC address for the network (Base mainnet +
|
|
73
|
+
* Base Sepolia known; other networks need an explicit `asset`).
|
|
74
|
+
* v3 path: selects the merchant-manifest rail whose `assetName` matches
|
|
75
|
+
* (`EURC` for EUR); errors clearly if the merchant has no EUR rail.
|
|
76
|
+
*/
|
|
77
|
+
currency?: PaygateCurrency;
|
|
78
|
+
/**
|
|
79
|
+
* Settlement token contract address. Auto-derived from `network` +
|
|
80
|
+
* `currency` if omitted. Ignored in the v3 path (merchant manifest is
|
|
81
|
+
* authoritative).
|
|
69
82
|
*/
|
|
70
83
|
asset?: string;
|
|
71
84
|
/** Override the default facilitator URL. */
|
|
72
85
|
facilitatorUrl?: string;
|
|
86
|
+
/**
|
|
87
|
+
* Self-settle: submit the settlement transaction from your own funded key
|
|
88
|
+
* instead of the facilitator's relayer. You pay chain gas (~$0.001 per
|
|
89
|
+
* settle on Base) and nobody else — the never-sponsor / never-charge
|
|
90
|
+
* policy's direct-payout path. Verification still runs against the
|
|
91
|
+
* facilitator (free — no chain writes). Replay protection is on-chain:
|
|
92
|
+
* EIP-3009 consumes the authorization nonce, so a duplicate submit
|
|
93
|
+
* reverts.
|
|
94
|
+
*/
|
|
95
|
+
selfSettle?: {
|
|
96
|
+
/** 0x-hex private key of any funded EOA. Pays gas only; never receives or holds customer funds. */
|
|
97
|
+
privateKey: string;
|
|
98
|
+
/** JSON-RPC URL for the settlement network. Defaults to the public Base RPCs for `eip155:8453` / `eip155:84532`. */
|
|
99
|
+
rpcUrl?: string;
|
|
100
|
+
};
|
|
73
101
|
/** Override the default apps/api URL (for staging / self-hosted). */
|
|
74
102
|
apiUrl?: string;
|
|
75
103
|
/** Facilitator call timeout in ms. Default 30s. */
|
package/dist/core.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,eAAO,MAAM,mBAAmB,oCAAoC,CAAC;AACrE,eAAO,MAAM,eAAe,4BAA4B,CAAC;AACzD,eAAO,MAAM,uBAAuB,QAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
package/dist/core.js
CHANGED
|
@@ -11,21 +11,37 @@
|
|
|
11
11
|
* See docs/paygate-v2.md §7.
|
|
12
12
|
*/
|
|
13
13
|
// ── Default facilitator ─────────────────────────────
|
|
14
|
-
export const DEFAULT_FACILITATOR =
|
|
15
|
-
export const DEFAULT_API_URL =
|
|
14
|
+
export const DEFAULT_FACILITATOR = "https://facilitator.arispay.app";
|
|
15
|
+
export const DEFAULT_API_URL = "https://api.arispay.app";
|
|
16
16
|
export const CAPABILITY_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
17
17
|
// ── Known USDC addresses per network ───────────────
|
|
18
|
+
// Canonical source is `@arispay/x402-core` (USDC_BASE_MAINNET, etc.).
|
|
19
|
+
// This duplicate is intentional: `paygate` is a published, standalone npm
|
|
20
|
+
// package with `ethers` as its only runtime dep (see paygate CLAUDE.md). It
|
|
21
|
+
// must NOT take a workspace dep on the private `@arispay/x402-core` package
|
|
22
|
+
// — npm consumers wouldn't resolve it. Keep these four values in sync with
|
|
23
|
+
// packages/x402-core/src/constants.ts by hand. Do not "DRY" by importing —
|
|
24
|
+
// see P2-4 blocker discussion.
|
|
18
25
|
const USDC_ADDRESSES = {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
"eip155:84532": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", // Base Sepolia
|
|
27
|
+
"eip155:8453": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // Base Mainnet
|
|
28
|
+
"eip155:1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // Ethereum
|
|
29
|
+
"eip155:137": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", // Polygon
|
|
30
|
+
};
|
|
31
|
+
// Circle EURC — the EUR settlement asset (`currency: "EUR"`). Entries exist
|
|
32
|
+
// only for networks where the address + EIP-712 domain were verified
|
|
33
|
+
// on-chain (eth_call name()/version(), 2026-06-11). Same FiatToken family
|
|
34
|
+
// as USDC → EIP-3009 supported, 6 decimals, domain name "EURC" version "2"
|
|
35
|
+
// on both networks. EUR on other networks requires an explicit `asset`.
|
|
36
|
+
const EURC_ADDRESSES = {
|
|
37
|
+
"eip155:84532": "0x808456652fdb597867f38412077A9182bf77359F", // Base Sepolia
|
|
38
|
+
"eip155:8453": "0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42", // Base Mainnet
|
|
23
39
|
};
|
|
24
40
|
const NETWORK_ALIASES = {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
41
|
+
"base-sepolia": "eip155:84532",
|
|
42
|
+
base: "eip155:8453",
|
|
43
|
+
ethereum: "eip155:1",
|
|
44
|
+
polygon: "eip155:137",
|
|
29
45
|
};
|
|
30
46
|
function normalizeNetwork(network) {
|
|
31
47
|
return NETWORK_ALIASES[network] ?? network;
|
|
@@ -57,23 +73,31 @@ function normalizeNetwork(network) {
|
|
|
57
73
|
* Exported for tests; consumers should not rely on this signature.
|
|
58
74
|
*/
|
|
59
75
|
export function buildChallengeHeaders(challengeBody, accepts) {
|
|
60
|
-
const canonical = Buffer.from(JSON.stringify(challengeBody),
|
|
76
|
+
const canonical = Buffer.from(JSON.stringify(challengeBody), "utf8").toString("base64");
|
|
61
77
|
const legacy = JSON.stringify({ x402Version: 2, accepts })
|
|
62
|
-
.replace(/[\r\n\0]/g,
|
|
63
|
-
.replace(/[^\x20-\x7E]/g,
|
|
78
|
+
.replace(/[\r\n\0]/g, " ")
|
|
79
|
+
.replace(/[^\x20-\x7E]/g, "?");
|
|
64
80
|
return {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
81
|
+
"payment-required": canonical,
|
|
82
|
+
"X-Payment-Requirements": legacy,
|
|
83
|
+
"WWW-Authenticate": "x402",
|
|
84
|
+
"Access-Control-Expose-Headers": "payment-required, x-payment-response, www-authenticate",
|
|
69
85
|
};
|
|
70
86
|
}
|
|
71
87
|
const USDC_DOMAIN_NAMES = {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
88
|
+
"eip155:84532": "USDC",
|
|
89
|
+
"eip155:8453": "USD Coin",
|
|
90
|
+
"eip155:1": "USD Coin",
|
|
91
|
+
"eip155:137": "USD Coin",
|
|
76
92
|
};
|
|
93
|
+
// EURC's EIP-712 domain name is "EURC" on every verified network.
|
|
94
|
+
const EURC_DOMAIN_NAME = "EURC";
|
|
95
|
+
/** EIP-712 domain name for the selected currency's asset on a network. */
|
|
96
|
+
function domainNameFor(currency, network) {
|
|
97
|
+
if (currency === "EUR")
|
|
98
|
+
return EURC_DOMAIN_NAME;
|
|
99
|
+
return USDC_DOMAIN_NAMES[network] ?? "USD Coin";
|
|
100
|
+
}
|
|
77
101
|
const DEFAULT_DISCOVERY_LIMIT = {
|
|
78
102
|
maxProbes: 10,
|
|
79
103
|
windowMs: 60_000,
|
|
@@ -101,13 +125,15 @@ function warnV2Shim() {
|
|
|
101
125
|
return;
|
|
102
126
|
v2ShimWarned = true;
|
|
103
127
|
// eslint-disable-next-line no-console
|
|
104
|
-
console.warn(
|
|
128
|
+
console.warn("[paygate] v2 config detected (`wallet` + `network`). Pass `merchantId` instead; v2 will be removed in v4. See https://paygate.arispay.app/docs#v3-migration");
|
|
105
129
|
}
|
|
106
130
|
async function fetchMerchantConfig(config) {
|
|
107
131
|
if (!config.merchantId) {
|
|
108
|
-
throw new Error(
|
|
132
|
+
throw new Error("paygate: merchantId is required for v3 flow");
|
|
109
133
|
}
|
|
110
|
-
const
|
|
134
|
+
const currency = config.currency ?? "USD";
|
|
135
|
+
const cacheKey = `${config.merchantId}:${currency}`;
|
|
136
|
+
const cached = capabilityCache.get(cacheKey);
|
|
111
137
|
const cacheTtl = config.cacheTtlMs ?? CAPABILITY_CACHE_TTL_MS;
|
|
112
138
|
if (cached && Date.now() - cached.fetchedAt < cacheTtl) {
|
|
113
139
|
return cached;
|
|
@@ -128,7 +154,7 @@ async function fetchMerchantConfig(config) {
|
|
|
128
154
|
throw new Error(`paygate: failed to fetch merchant capabilities: ${err instanceof Error ? err.message : String(err)}`);
|
|
129
155
|
}
|
|
130
156
|
if (res.status === 404) {
|
|
131
|
-
capabilityCache.delete(
|
|
157
|
+
capabilityCache.delete(cacheKey);
|
|
132
158
|
throw new Error(`paygate: merchantId "${config.merchantId}" not found at ${apiUrl}`);
|
|
133
159
|
}
|
|
134
160
|
if (res.status >= 500 && cached) {
|
|
@@ -138,20 +164,34 @@ async function fetchMerchantConfig(config) {
|
|
|
138
164
|
throw new Error(`paygate: capability fetch failed HTTP ${res.status}`);
|
|
139
165
|
}
|
|
140
166
|
const manifest = (await res.json());
|
|
141
|
-
const
|
|
167
|
+
const wantedAssetName = currency === "EUR" ? "EURC" : "USDC";
|
|
168
|
+
// Prefer the rail matching the requested currency; USD callers keep the
|
|
169
|
+
// historical rails[0] fallback so pre-EUR manifests behave identically.
|
|
170
|
+
const rail = manifest.rails?.find((r) => r.assetName === wantedAssetName) ??
|
|
171
|
+
(currency === "USD" ? manifest.rails?.[0] : undefined);
|
|
142
172
|
if (!rail) {
|
|
143
|
-
throw new Error(
|
|
173
|
+
throw new Error(currency === "EUR"
|
|
174
|
+
? `paygate: merchant "${config.merchantId}" has no EUR (EURC) payout rail — add one in the dashboard or use currency: "USD"`
|
|
175
|
+
: `paygate: merchant "${config.merchantId}" has no active payout rail — add a PayoutMethod in the dashboard`);
|
|
176
|
+
}
|
|
177
|
+
// v3 manifests must specify an HTTPS facilitator per rail. The SDK no longer
|
|
178
|
+
// silently falls back to the production default, which would hide
|
|
179
|
+
// misconfiguration and let a rogue facilitator claim successful settlement (L7).
|
|
180
|
+
const facilitator = rail.facilitator;
|
|
181
|
+
if (!facilitator || !facilitator.startsWith("https://")) {
|
|
182
|
+
throw new Error(`paygate: merchant "${config.merchantId}" rail has invalid facilitator URL`);
|
|
144
183
|
}
|
|
145
184
|
const resolved = {
|
|
146
185
|
network: rail.network,
|
|
147
186
|
asset: rail.asset,
|
|
187
|
+
domainName: domainNameFor(currency, rail.network),
|
|
148
188
|
payTo: rail.payTo,
|
|
149
|
-
facilitator
|
|
150
|
-
trustMinTier: manifest.trust?.minTier ??
|
|
189
|
+
facilitator,
|
|
190
|
+
trustMinTier: manifest.trust?.minTier ?? "any",
|
|
151
191
|
slug: manifest.merchant.slug,
|
|
152
192
|
fetchedAt: Date.now(),
|
|
153
193
|
};
|
|
154
|
-
capabilityCache.set(
|
|
194
|
+
capabilityCache.set(cacheKey, resolved);
|
|
155
195
|
return resolved;
|
|
156
196
|
}
|
|
157
197
|
/**
|
|
@@ -162,23 +202,26 @@ async function fetchMerchantConfig(config) {
|
|
|
162
202
|
function resolveV2Shim(config) {
|
|
163
203
|
warnV2Shim();
|
|
164
204
|
if (!config.wallet) {
|
|
165
|
-
throw new Error(
|
|
205
|
+
throw new Error("paygate: wallet is required in v2-shim mode");
|
|
166
206
|
}
|
|
167
207
|
if (!config.network) {
|
|
168
|
-
throw new Error(
|
|
208
|
+
throw new Error("paygate: network is required in v2-shim mode");
|
|
169
209
|
}
|
|
210
|
+
const currency = config.currency ?? "USD";
|
|
170
211
|
const network = normalizeNetwork(config.network);
|
|
171
|
-
const
|
|
212
|
+
const knownAddresses = currency === "EUR" ? EURC_ADDRESSES : USDC_ADDRESSES;
|
|
213
|
+
const asset = config.asset ?? knownAddresses[network];
|
|
172
214
|
if (!asset) {
|
|
173
|
-
throw new Error(`paygate: unsupported network ${network} — no known USDC address`);
|
|
215
|
+
throw new Error(`paygate: unsupported network ${network} — no known ${currency === "EUR" ? "EURC" : "USDC"} address (pass \`asset\` explicitly)`);
|
|
174
216
|
}
|
|
175
217
|
return {
|
|
176
218
|
network,
|
|
177
219
|
asset,
|
|
220
|
+
domainName: domainNameFor(currency, network),
|
|
178
221
|
payTo: config.wallet,
|
|
179
222
|
facilitator: config.facilitatorUrl ?? DEFAULT_FACILITATOR,
|
|
180
|
-
trustMinTier:
|
|
181
|
-
slug:
|
|
223
|
+
trustMinTier: "any",
|
|
224
|
+
slug: "v2-shim",
|
|
182
225
|
fetchedAt: Date.now(),
|
|
183
226
|
};
|
|
184
227
|
}
|
|
@@ -186,7 +229,7 @@ function resolveV2Shim(config) {
|
|
|
186
229
|
async function resolvePriceCents(routePrice, request) {
|
|
187
230
|
const v3 = routePrice.priceCents;
|
|
188
231
|
if (v3 !== undefined) {
|
|
189
|
-
const cents = typeof v3 ===
|
|
232
|
+
const cents = typeof v3 === "function" ? await v3(request) : v3;
|
|
190
233
|
if (!Number.isInteger(cents) || cents < 1) {
|
|
191
234
|
throw new Error(`paygate: priceCents must be a positive integer. Got ${JSON.stringify(cents)}. If you meant $0.10, use priceCents: 10.`);
|
|
192
235
|
}
|
|
@@ -195,17 +238,78 @@ async function resolvePriceCents(routePrice, request) {
|
|
|
195
238
|
const v2 = routePrice.price;
|
|
196
239
|
if (v2 !== undefined) {
|
|
197
240
|
warnV2Shim();
|
|
198
|
-
const dollars = typeof v2 ===
|
|
199
|
-
if (typeof dollars !==
|
|
200
|
-
throw new Error(
|
|
241
|
+
const dollars = typeof v2 === "function" ? await v2(request) : v2;
|
|
242
|
+
if (typeof dollars !== "number" || dollars <= 0) {
|
|
243
|
+
throw new Error("paygate: price must be a positive number");
|
|
201
244
|
}
|
|
202
245
|
return Math.round(dollars * 100);
|
|
203
246
|
}
|
|
204
|
-
throw new Error(
|
|
247
|
+
throw new Error("paygate: RoutePrice requires `priceCents` (preferred) or `price` (v2 compat)");
|
|
248
|
+
}
|
|
249
|
+
// ── Self-settle (seller-submitted settlement) ──────────────────────────
|
|
250
|
+
// EIP-3009 transferWithAuthorization, split-signature form — present on
|
|
251
|
+
// USDC and EURC, the assets the default facilitator stands behind.
|
|
252
|
+
const EIP3009_ABI = [
|
|
253
|
+
"function transferWithAuthorization(address from, address to, uint256 value, uint256 validAfter, uint256 validBefore, bytes32 nonce, uint8 v, bytes32 r, bytes32 s)",
|
|
254
|
+
];
|
|
255
|
+
const DEFAULT_RPC_BY_NETWORK = {
|
|
256
|
+
"eip155:8453": "https://mainnet.base.org",
|
|
257
|
+
"eip155:84532": "https://sepolia.base.org",
|
|
258
|
+
base: "https://mainnet.base.org",
|
|
259
|
+
"base-sepolia": "https://sepolia.base.org",
|
|
260
|
+
};
|
|
261
|
+
async function submitSelfSettle(selfSettle, paymentPayload, accept, timeoutMs) {
|
|
262
|
+
const rpcUrl = selfSettle.rpcUrl ?? DEFAULT_RPC_BY_NETWORK[accept.network];
|
|
263
|
+
if (!rpcUrl) {
|
|
264
|
+
return {
|
|
265
|
+
success: false,
|
|
266
|
+
errorReason: "SELF_SETTLE_CONFIG",
|
|
267
|
+
errorMessage: `paygate: no default RPC for network "${accept.network}" — set selfSettle.rpcUrl`,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
// `ethers` is an optional peer dependency — only self-settle needs it, so
|
|
271
|
+
// the facilitator path never pulls it. Surface a clear install hint rather
|
|
272
|
+
// than a raw MODULE_NOT_FOUND if a self-settle merchant hasn't installed it.
|
|
273
|
+
let ethers;
|
|
274
|
+
try {
|
|
275
|
+
ethers = await import("ethers");
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
return {
|
|
279
|
+
success: false,
|
|
280
|
+
errorReason: "SELF_SETTLE_CONFIG",
|
|
281
|
+
errorMessage: "paygate: self-settle requires the optional peer dependency `ethers` — run `npm install ethers`",
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
try {
|
|
285
|
+
const { JsonRpcProvider, Wallet, Contract, Signature } = ethers;
|
|
286
|
+
const provider = new JsonRpcProvider(rpcUrl);
|
|
287
|
+
const wallet = new Wallet(selfSettle.privateKey, provider);
|
|
288
|
+
const token = new Contract(accept.asset, EIP3009_ABI, wallet);
|
|
289
|
+
const auth = paymentPayload.payload.authorization;
|
|
290
|
+
const sig = Signature.from(paymentPayload.payload.signature);
|
|
291
|
+
const tx = await token.transferWithAuthorization(auth.from, auth.to, auth.value, auth.validAfter, auth.validBefore, auth.nonce, sig.v, sig.r, sig.s);
|
|
292
|
+
const receipt = await tx.wait(1, timeoutMs);
|
|
293
|
+
if (!receipt || receipt.status !== 1) {
|
|
294
|
+
return {
|
|
295
|
+
success: false,
|
|
296
|
+
errorReason: "SETTLEMENT_REVERTED",
|
|
297
|
+
errorMessage: "paygate: self-settle transaction reverted",
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
return { success: true, transaction: receipt.hash, payer: auth.from };
|
|
301
|
+
}
|
|
302
|
+
catch (err) {
|
|
303
|
+
return {
|
|
304
|
+
success: false,
|
|
305
|
+
errorReason: "SELF_SETTLE_ERROR",
|
|
306
|
+
errorMessage: err instanceof Error ? err.message : "paygate: self-settle failed",
|
|
307
|
+
};
|
|
308
|
+
}
|
|
205
309
|
}
|
|
206
310
|
function decodePaymentHeader(header) {
|
|
207
311
|
try {
|
|
208
|
-
const decoded = Buffer.from(header,
|
|
312
|
+
const decoded = Buffer.from(header, "base64").toString("utf8");
|
|
209
313
|
return JSON.parse(decoded);
|
|
210
314
|
}
|
|
211
315
|
catch {
|
|
@@ -217,9 +321,7 @@ export async function handlePaywall(config, routePrice, resourceUrl, paymentHead
|
|
|
217
321
|
// Resolve the merchant: v3 fetch vs v2 shim
|
|
218
322
|
let resolved;
|
|
219
323
|
try {
|
|
220
|
-
resolved = config.merchantId
|
|
221
|
-
? await fetchMerchantConfig(config)
|
|
222
|
-
: resolveV2Shim(config);
|
|
324
|
+
resolved = config.merchantId ? await fetchMerchantConfig(config) : resolveV2Shim(config);
|
|
223
325
|
}
|
|
224
326
|
catch (err) {
|
|
225
327
|
return {
|
|
@@ -227,8 +329,8 @@ export async function handlePaywall(config, routePrice, resourceUrl, paymentHead
|
|
|
227
329
|
error: {
|
|
228
330
|
statusCode: 500,
|
|
229
331
|
body: {
|
|
230
|
-
error: err instanceof Error ? err.message :
|
|
231
|
-
code:
|
|
332
|
+
error: err instanceof Error ? err.message : "paygate: configuration error",
|
|
333
|
+
code: "PAYGATE_CONFIG",
|
|
232
334
|
},
|
|
233
335
|
},
|
|
234
336
|
};
|
|
@@ -244,27 +346,26 @@ export async function handlePaywall(config, routePrice, resourceUrl, paymentHead
|
|
|
244
346
|
error: {
|
|
245
347
|
statusCode: 429,
|
|
246
348
|
body: {
|
|
247
|
-
error:
|
|
248
|
-
code:
|
|
349
|
+
error: "Too many discovery requests. Try again later.",
|
|
350
|
+
code: "DISCOVERY_RATE_LIMITED",
|
|
249
351
|
},
|
|
250
352
|
},
|
|
251
353
|
};
|
|
252
354
|
}
|
|
253
355
|
}
|
|
254
|
-
const domainName = USDC_DOMAIN_NAMES[resolved.network] ?? 'USD Coin';
|
|
255
356
|
const accepts = [
|
|
256
357
|
{
|
|
257
|
-
scheme:
|
|
358
|
+
scheme: "exact",
|
|
258
359
|
network: resolved.network,
|
|
259
360
|
amount: priceBaseUnits,
|
|
260
361
|
resource: resourceUrl,
|
|
261
362
|
asset: resolved.asset,
|
|
262
363
|
payTo: resolved.payTo,
|
|
263
|
-
extra: { name: domainName, version:
|
|
364
|
+
extra: { name: resolved.domainName, version: "2" },
|
|
264
365
|
},
|
|
265
366
|
];
|
|
266
367
|
const challengeBody = {
|
|
267
|
-
error:
|
|
368
|
+
error: "Payment Required",
|
|
268
369
|
x402Version: 2,
|
|
269
370
|
accepts,
|
|
270
371
|
facilitator: resolved.facilitator,
|
|
@@ -290,41 +391,90 @@ export async function handlePaywall(config, routePrice, resourceUrl, paymentHead
|
|
|
290
391
|
paid: false,
|
|
291
392
|
error: {
|
|
292
393
|
statusCode: 400,
|
|
293
|
-
body: { error:
|
|
394
|
+
body: { error: "Invalid X-Payment header", code: "INVALID_PAYMENT" },
|
|
294
395
|
},
|
|
295
396
|
};
|
|
296
397
|
}
|
|
297
398
|
// Settle via facilitator
|
|
298
|
-
const domainName = USDC_DOMAIN_NAMES[resolved.network] ?? 'USD Coin';
|
|
299
399
|
const accept = {
|
|
300
|
-
scheme:
|
|
400
|
+
scheme: "exact",
|
|
301
401
|
network: resolved.network,
|
|
302
402
|
amount: priceBaseUnits,
|
|
303
403
|
resource: resourceUrl,
|
|
304
404
|
asset: resolved.asset,
|
|
305
405
|
payTo: resolved.payTo,
|
|
306
|
-
extra: { name: domainName, version:
|
|
406
|
+
extra: { name: resolved.domainName, version: "2" },
|
|
307
407
|
};
|
|
308
408
|
try {
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
409
|
+
let settlement;
|
|
410
|
+
if (config.selfSettle) {
|
|
411
|
+
// Verify via the facilitator (free — no chain writes), then submit
|
|
412
|
+
// the settlement from the seller's own key: gas is the seller's,
|
|
413
|
+
// per the never-sponsor / never-charge policy.
|
|
414
|
+
const verifyRes = await fetch(`${resolved.facilitator}/verify`, {
|
|
415
|
+
method: "POST",
|
|
416
|
+
headers: { "Content-Type": "application/json" },
|
|
417
|
+
body: JSON.stringify({
|
|
418
|
+
x402Version: 2,
|
|
419
|
+
paymentPayload,
|
|
420
|
+
paymentRequirements: accept,
|
|
421
|
+
}),
|
|
422
|
+
signal: AbortSignal.timeout(config.timeout ?? 30_000),
|
|
423
|
+
});
|
|
424
|
+
const verdict = (await verifyRes.json());
|
|
425
|
+
if (!verdict.isValid) {
|
|
426
|
+
return {
|
|
427
|
+
paid: false,
|
|
428
|
+
error: {
|
|
429
|
+
statusCode: 402,
|
|
430
|
+
body: {
|
|
431
|
+
error: verdict.invalidReason || "Payment verification failed",
|
|
432
|
+
code: verdict.invalidReason || "VERIFICATION_FAILED",
|
|
433
|
+
},
|
|
434
|
+
},
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
settlement = await submitSelfSettle(config.selfSettle, paymentPayload, accept, config.timeout ?? 30_000);
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
const res = await fetch(`${resolved.facilitator}/settle`, {
|
|
441
|
+
method: "POST",
|
|
442
|
+
headers: { "Content-Type": "application/json" },
|
|
443
|
+
body: JSON.stringify({
|
|
444
|
+
x402Version: 2,
|
|
445
|
+
paymentPayload,
|
|
446
|
+
paymentRequirements: accept,
|
|
447
|
+
}),
|
|
448
|
+
signal: AbortSignal.timeout(config.timeout ?? 30_000),
|
|
449
|
+
});
|
|
450
|
+
settlement = (await res.json());
|
|
451
|
+
}
|
|
320
452
|
if (!settlement.success) {
|
|
321
453
|
return {
|
|
322
454
|
paid: false,
|
|
323
455
|
error: {
|
|
324
456
|
statusCode: 402,
|
|
325
457
|
body: {
|
|
326
|
-
error: settlement.errorMessage || settlement.errorReason ||
|
|
327
|
-
code: settlement.errorReason ||
|
|
458
|
+
error: settlement.errorMessage || settlement.errorReason || "Payment settlement failed",
|
|
459
|
+
code: settlement.errorReason || "SETTLEMENT_FAILED",
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
// Validate the successful settlement before trusting it (L7). Require a
|
|
465
|
+
// non-empty transaction hash and, when the facilitator reports a payer,
|
|
466
|
+
// ensure it matches the address that signed the authorization.
|
|
467
|
+
const expectedPayer = paymentPayload.payload.authorization.from;
|
|
468
|
+
if (typeof settlement.transaction !== "string" ||
|
|
469
|
+
settlement.transaction.length === 0 ||
|
|
470
|
+
(settlement.payer && settlement.payer.toLowerCase() !== expectedPayer.toLowerCase())) {
|
|
471
|
+
return {
|
|
472
|
+
paid: false,
|
|
473
|
+
error: {
|
|
474
|
+
statusCode: 502,
|
|
475
|
+
body: {
|
|
476
|
+
error: "Facilitator returned an invalid settlement",
|
|
477
|
+
code: "INVALID_SETTLEMENT",
|
|
328
478
|
},
|
|
329
479
|
},
|
|
330
480
|
};
|
|
@@ -335,18 +485,18 @@ export async function handlePaywall(config, routePrice, resourceUrl, paymentHead
|
|
|
335
485
|
receipt: {
|
|
336
486
|
paid: true,
|
|
337
487
|
txHash: settlement.transaction,
|
|
338
|
-
trustTier:
|
|
488
|
+
trustTier: "any", // SDK path has no tier check in v1
|
|
339
489
|
merchant: resolved.slug,
|
|
340
490
|
},
|
|
341
491
|
};
|
|
342
492
|
}
|
|
343
493
|
catch (err) {
|
|
344
|
-
const message = err instanceof Error ? err.message :
|
|
494
|
+
const message = err instanceof Error ? err.message : "Facilitator unreachable";
|
|
345
495
|
return {
|
|
346
496
|
paid: false,
|
|
347
497
|
error: {
|
|
348
498
|
statusCode: 502,
|
|
349
|
-
body: { error: `Facilitator error: ${message}`, code:
|
|
499
|
+
body: { error: `Facilitator error: ${message}`, code: "FACILITATOR_ERROR" },
|
|
350
500
|
},
|
|
351
501
|
};
|
|
352
502
|
}
|
package/dist/core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
|