@genesis-tech/genesispay-seller 0.10.0 → 0.12.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/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.12.0 — permanent product checkout permalinks
4
+
5
+ ### Added
6
+
7
+ - **`genesispay.products.permalink(publicId)`**. The product's PERMANENT
8
+ checkout URL — `{baseUrl}/pay/p/{publicId}` — stable across every link
9
+ remint because the server resolves the product's current canonical link on
10
+ every request. Pure string builder: no network call, no mint. This is the
11
+ URL to embed in a shop's buy button.
12
+ - **`genesispay.products.checkoutUrl(publicId)`**. Convenience for
13
+ `createPaymentLink(publicId)` → `link.payUrl`. The mint is idempotent, but
14
+ it is still a write — resolve at render time, never persist the result.
15
+
16
+ ### Why
17
+
18
+ `link.payUrl` embeds the link's `inv_…` id, which is **per link, not per
19
+ product**: archiving and reminting (e.g. a wallet migration) gives the new
20
+ link a new id and silently breaks every hardcoded copy. A product's `prod_…`
21
+ id never changes. On the server, `GET /pay/p/:productPublicId` resolves the
22
+ product's current canonical live link read-only (a public GET never mints)
23
+ and redirects to the existing dual-readable `/pay/:linkId` URL, so humans get
24
+ checkout and agents get x402 from one stable product URL.
25
+
26
+ ## 0.11.0 — product-backed x402 resource gates
27
+
28
+ ### Added
29
+
30
+ - **`delivery` on `genesispay.products.create()` and `.update()`**. A product
31
+ can now be a redirect entitlement, a registered HTTP resource gate, or have
32
+ no delivery. The flat `fulfilmentUrl` fields remain compatible with existing
33
+ redirect integrations.
34
+ - **`genesispay.products.gate(productId)`**. `prime()` resolves the registered
35
+ gate product and canonical reusable payment link; `protect(request, handler)`
36
+ performs the x402 challenge/settlement exchange and runs the handler only
37
+ after GenesisPay confirms payment. Use `purchase.payment.attemptId` as the
38
+ idempotency key because confirmed payment retries may run a handler again.
39
+ - **`genesispay.entitlements.verify(entitlementId)`**. This seller-authorized
40
+ hard check is for a redirect product's redemption handler; require a valid,
41
+ non-simulated entitlement for the expected product before granting access.
42
+
43
+ ### Safety
44
+
45
+ - Product gates bind the pending attempt to the registered URL, upper-case HTTP
46
+ method, and a SHA-256 fingerprint of the raw request body. GenesisPay receives
47
+ the fingerprint, not the request data.
48
+ - Gate purchases never mint redirect entitlements. Redirect products retain
49
+ their signed 30-day redemption URLs unchanged.
50
+ - A product gate always derives amount, asset, destination and fees from the
51
+ canonical product link; callers cannot supply those money fields.
52
+
3
53
  ## 0.9.0 — BREAKING: every identifier is now `genesispay`
4
54
 
5
55
  The legacy/visible name split is retired. This release renames the
package/README.md CHANGED
@@ -270,11 +270,12 @@ const product = await genesispay.products.create({
270
270
  name: "Market data report",
271
271
  price: "2.00",
272
272
  sku: "MDR-1",
273
- });
274
-
275
- // Where a paying buyer's entitlement redirects (https only):
276
- await genesispay.products.update(product.publicId, {
277
- fulfilmentUrl: "https://your-site.example/download",
273
+ // A redirect product creates a signed, expiring entitlement on every sale.
274
+ delivery: {
275
+ type: "redirect",
276
+ url: "https://your-site.example/download",
277
+ verifiedAt: null,
278
+ },
278
279
  });
279
280
 
280
281
  const { link, created } = await genesispay.products.createPaymentLink(
@@ -283,6 +284,28 @@ const { link, created } = await genesispay.products.createPaymentLink(
283
284
  // Share link.payUrl — every sale of this product settles through it.
284
285
  ```
285
286
 
287
+ #### Never hardcode `link.payUrl`
288
+
289
+ The URL embeds the link's `inv_…` id, and that id is **per link, not per
290
+ product**: when a link is archived and reminted (for example during a wallet
291
+ migration) the new link gets a new `inv_…`, and every hardcoded copy of the old
292
+ `link.payUrl` — a button in your shop, a page in your docs, an email template —
293
+ silently breaks.
294
+
295
+ Store the **product's** `publicId` (`prod_…`) instead; it never changes. Then
296
+ either:
297
+
298
+ - build the permanent URL — `genesispay.products.permalink(product.publicId)`
299
+ returns `{baseUrl}/pay/p/{publicId}`: pure string builder, no network call,
300
+ no mint, and stable across every remint because the server resolves the
301
+ product's *current* canonical link on every request. **This is the URL to
302
+ embed in a buy button.**
303
+ - or resolve the current link's `payUrl` at render time —
304
+ `await genesispay.products.checkoutUrl(product.publicId)` (a convenience for
305
+ `createPaymentLink(publicId)` → `link.payUrl`). The mint is idempotent, but
306
+ it is still a write — don't put it in a hot render path uncached, and never
307
+ persist the result.
308
+
286
309
  A confirmed purchase fires the `product.purchased` webhook. Its payload
287
310
  carries the buyer's entitlement — `entitlement.redemptionPath` is a signed,
288
311
  expiring redirect (~30 days) to your fulfilment URL, with `gp_*` parameters
@@ -291,6 +314,70 @@ via `GET /api/v1/entitlements/verify`. Always check `simulated`: test-mode
291
314
  purchases deliver end to end, marked, so your handler must not book them as
292
315
  revenue.
293
316
 
317
+ Use the SDK rather than trusting `gp_*` query parameters from the browser:
318
+
319
+ ```ts
320
+ const verified = await genesispay.entitlements.verify(entitlementId);
321
+ if (
322
+ !verified.valid ||
323
+ verified.entitlement.simulated ||
324
+ verified.entitlement.productId !== product.publicId
325
+ ) {
326
+ throw new Error("invalid entitlement");
327
+ }
328
+ // Insert verified.entitlement.publicId under a unique constraint, then fulfil.
329
+ ```
330
+
331
+ ### Product-backed API gate
332
+
333
+ For an API you operate, define the resource and its price once in the catalogue.
334
+ The product link—not browser input or route code—is the authority for the USDC
335
+ amount, Base network, destination, fee snapshot and product metadata:
336
+
337
+ ```ts
338
+ const forecast = await genesispay.products.create({
339
+ name: "Forecast API call",
340
+ price: "0.02",
341
+ sku: "prediction-forecast-v1",
342
+ delivery: {
343
+ type: "gate",
344
+ method: "POST",
345
+ resourceUrl: "https://predictionengine.xyz/api/v1/forecast",
346
+ },
347
+ });
348
+
349
+ await genesispay.products.gate(forecast.publicId).prime();
350
+ ```
351
+
352
+ Protect the route with that product. Validate request shape before calling
353
+ `protect`, and make handler effects idempotent by `purchase.payment.attemptId`:
354
+
355
+ ```ts
356
+ const forecastGate = genesispay.products.gate("prod_...");
357
+
358
+ export async function POST(request: Request) {
359
+ const rawBody = await request.clone().text();
360
+ validateForecastJson(rawBody); // invalid requests never create a payment attempt
361
+
362
+ return forecastGate.protect(request, async (_request, purchase) => {
363
+ const cached = await readForecast(purchase.payment.attemptId);
364
+ if (cached) return Response.json(cached);
365
+
366
+ const result = await runForecast(rawBody);
367
+ await saveForecastOnce(purchase.payment.attemptId, result);
368
+ return Response.json(result);
369
+ });
370
+ }
371
+ ```
372
+
373
+ On the initial request, `protect` returns the standard `402 Payment Required`.
374
+ GenesisPay creates a pending attempt before that response and advertises a
375
+ reserved `gp_attempt` value in the x402 resource URL. On the signed retry, the
376
+ SDK sends only the request fingerprint to GenesisPay; it never sends forecast
377
+ inputs. A confirmed replay returns the same payment receipt with
378
+ `idempotentReplay: true`; handlers may therefore execute more than once and
379
+ must keep their own result cache.
380
+
294
381
  `products.list({ includeArchived: true })`, `products.retrieve`,
295
382
  `products.archive` complete the namespace. Archiving stops **new** link mints;
296
383
  the existing canonical link stays payable. The price is copied onto the link
package/dist/client.d.ts CHANGED
@@ -4,6 +4,7 @@ import type { InvoicesResource } from "./invoices.js";
4
4
  import type { VerifySettlement } from "./payment-gate.js";
5
5
  import type { PlansResource } from "./plans.js";
6
6
  import type { ProductsResource } from "./products.js";
7
+ import type { EntitlementsResource } from "./entitlements.js";
7
8
  import type { PaymentGateNetwork } from "./networks.js";
8
9
  import type { ConstructEventOptions, GenesisPayEvent } from "./webhooks.js";
9
10
  /**
@@ -203,6 +204,8 @@ export declare class GenesisPay {
203
204
  readonly plans: PlansResource;
204
205
  /** The merchant's catalogue and its canonical payment links — see ./products.ts. */
205
206
  readonly products: ProductsResource;
207
+ /** Seller-scoped redirect-entitlement verification. */
208
+ readonly entitlements: EntitlementsResource;
206
209
  /** Reusable billing contacts for one-off invoices. */
207
210
  readonly customers: CustomersResource;
208
211
  /** Draft, finalize, deliver, and collect one-off invoices. */
@@ -237,6 +240,8 @@ export declare class GenesisPay {
237
240
  */
238
241
  private readonly request;
239
242
  constructor(options: GenesisPayClientOptions);
243
+ /** Raw on purpose: product-gate negotiation must preserve 402 protocol headers. */
244
+ private performProductGateRequest;
240
245
  /**
241
246
  * Resolve (and cache) the seller config from the key. Single-flight so a
242
247
  * cold-start burst shares one request; failures are never cached (the memo is
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -6,6 +6,7 @@ import { createPaymentGate } from "./payment-gate.js";
6
6
  import { DEFAULT_FACILITATOR_BASE_URL, genesisPaySettlement } from "./genesispay-settlement.js";
7
7
  import { createPlansResource } from "./plans.js";
8
8
  import { createProductsResource } from "./products.js";
9
+ import { createEntitlementsResource } from "./entitlements.js";
9
10
  import { resolvePaymentGateNetwork } from "./networks.js";
10
11
  import { parseUsdcAmountToMinorUnits } from "./usdc-amount.js";
11
12
  import { asRecord, oneOf, optionalMetadata, optionalString, requiredString, toCount, } from "./resource.js";
@@ -218,6 +219,8 @@ export class GenesisPay {
218
219
  plans;
219
220
  /** The merchant's catalogue and its canonical payment links — see ./products.ts. */
220
221
  products;
222
+ /** Seller-scoped redirect-entitlement verification. */
223
+ entitlements;
221
224
  /** Reusable billing contacts for one-off invoices. */
222
225
  customers;
223
226
  /** Draft, finalize, deliver, and collect one-off invoices. */
@@ -274,7 +277,8 @@ export class GenesisPay {
274
277
  this.plans = createPlansResource(this.request, (wallet, what) => this.assertPinnedDestination(wallet, what));
275
278
  // Shares the client's own link mapper so the minted link's shape cannot
276
279
  // drift from `checkout.create`'s.
277
- this.products = createProductsResource(this.request, (wallet, what) => this.assertPinnedDestination(wallet, what), (raw) => toCheckoutLink(raw));
280
+ this.products = createProductsResource(this.request, (wallet, what) => this.assertPinnedDestination(wallet, what), (raw) => toCheckoutLink(raw), this.baseUrl, (publicId, body) => this.performProductGateRequest(publicId, body));
281
+ this.entitlements = createEntitlementsResource(this.request);
278
282
  this.mandates = createMandatesResource(this.request);
279
283
  this.customers = createCustomersResource(this.request);
280
284
  this.invoices = createInvoicesResource(this.request);
@@ -284,6 +288,19 @@ export class GenesisPay {
284
288
  constructEvent: (rawBody, signatureHeader, secret, opts) => constructEvent(rawBody, signatureHeader, secret, opts),
285
289
  };
286
290
  }
291
+ /** Raw on purpose: product-gate negotiation must preserve 402 protocol headers. */
292
+ async performProductGateRequest(publicId, body) {
293
+ return this.fetchFn(`${this.baseUrl}/api/v1/products/${encodeURIComponent(publicId)}/x402`, {
294
+ method: "POST",
295
+ headers: {
296
+ authorization: `Bearer ${this.apiKey}`,
297
+ "content-type": "application/json",
298
+ accept: "application/json",
299
+ },
300
+ body: JSON.stringify(body),
301
+ cache: "no-store",
302
+ });
303
+ }
287
304
  /**
288
305
  * Resolve (and cache) the seller config from the key. Single-flight so a
289
306
  * cold-start burst shares one request; failures are never cached (the memo is
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type GenesisPayRequest } from "./resource.js";
2
+ export type VerifiedEntitlement = {
3
+ valid: boolean;
4
+ entitlement: {
5
+ publicId: string;
6
+ productId: string;
7
+ sku: string | null;
8
+ paymentAttemptId: string;
9
+ simulated: boolean;
10
+ expiresAt: string;
11
+ redemptionCount: number;
12
+ };
13
+ };
14
+ export interface EntitlementsResource {
15
+ /** Seller-scoped hard check for a redirect entitlement. */
16
+ verify(entitlementId: string): Promise<VerifiedEntitlement>;
17
+ }
18
+ export declare function createEntitlementsResource(request: GenesisPayRequest): EntitlementsResource;
19
+ //# sourceMappingURL=entitlements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements.d.ts","sourceRoot":"","sources":["../src/entitlements.ts"],"names":[],"mappings":"AACA,OAAO,EAA4C,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEjG,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;QACzB,SAAS,EAAE,OAAO,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,MAAM,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC7D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,GAAG,oBAAoB,CAuB3F"}
@@ -0,0 +1,30 @@
1
+ import { GenesisPayConfigError } from "./errors.js";
2
+ import { asRecord, optionalString, requiredString } from "./resource.js";
3
+ export function createEntitlementsResource(request) {
4
+ return {
5
+ async verify(entitlementId) {
6
+ const id = entitlementId?.trim();
7
+ if (!id?.startsWith("ent_"))
8
+ throw new GenesisPayConfigError("entitlements.verify requires an ent_… id.");
9
+ const body = await request({
10
+ path: `/api/v1/entitlements/verify?entitlement=${encodeURIComponent(id)}`,
11
+ operation: "GET /api/v1/entitlements/verify",
12
+ action: `verify entitlement "${id}"`,
13
+ notFoundMessage: "The entitlement does not exist or does not belong to this seller.",
14
+ });
15
+ const root = asRecord(body);
16
+ const raw = asRecord(root?.entitlement);
17
+ if (!raw)
18
+ throw new GenesisPayConfigError("GenesisPay entitlement verification returned no entitlement.");
19
+ return {
20
+ valid: root?.valid === true,
21
+ entitlement: {
22
+ publicId: requiredString(raw.publicId), productId: requiredString(raw.productId), sku: optionalString(raw.sku),
23
+ paymentAttemptId: requiredString(raw.paymentAttemptId), simulated: raw.simulated === true,
24
+ expiresAt: requiredString(raw.expiresAt), redemptionCount: typeof raw.redemptionCount === "number" ? raw.redemptionCount : 0,
25
+ },
26
+ };
27
+ },
28
+ };
29
+ }
30
+ //# sourceMappingURL=entitlements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entitlements.js","sourceRoot":"","sources":["../src/entitlements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAA0B,MAAM,eAAe,CAAC;AAoBjG,MAAM,UAAU,0BAA0B,CAAC,OAA0B;IACnE,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,aAAa;YACxB,MAAM,EAAE,GAAG,aAAa,EAAE,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,qBAAqB,CAAC,2CAA2C,CAAC,CAAC;YAC1G,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;gBACzB,IAAI,EAAE,2CAA2C,kBAAkB,CAAC,EAAE,CAAC,EAAE;gBACzE,SAAS,EAAE,iCAAiC;gBAC5C,MAAM,EAAE,uBAAuB,EAAE,GAAG;gBACpC,eAAe,EAAE,mEAAmE;aACrF,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,GAAG;gBAAE,MAAM,IAAI,qBAAqB,CAAC,8DAA8D,CAAC,CAAC;YAC1G,OAAO;gBACL,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI;gBAC3B,WAAW,EAAE;oBACX,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;oBAC9G,gBAAgB,EAAE,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,IAAI;oBACzF,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,OAAO,GAAG,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;iBAC7H;aACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export { GenesisPay, type GenesisPayKeyMode, type GenesisPayClientOptions, type SellerConfig, type CheckoutAmountInput, type CheckoutCreateInput, type CheckoutLink, type CheckoutSession, type CheckoutAttempt, type CheckoutAttemptStatus, type SimulatePaymentOptions, type GateConfig, type ResolvingGate, } from "./client.js";
2
2
  export { type SubscriptionPlan, type SubscriptionPlanStatus, type PlanCreateInput, type PlansResource, } from "./plans.js";
3
- export { type Product, type ProductCreateInput, type ProductPaymentLink, type ProductsResource, } from "./products.js";
3
+ export { type Product, type ProductCreateInput, type ProductPaymentLink, type ProductDelivery, type ProductGate, type ProductGatePurchase, type ProductsResource, } from "./products.js";
4
+ export { type EntitlementsResource, type VerifiedEntitlement } from "./entitlements.js";
4
5
  export { type Customer, type CustomerCreateInput, type CustomerUpdateInput, type CustomersResource, } from "./customers.js";
5
6
  export { type Invoice, type InvoiceStatus, type InvoiceLineInput, type InvoiceDraftInput, type InvoiceEmailDelivery, type InvoicesResource, } from "./invoices.js";
6
7
  export { type Mandate, type MandateKind, type MandateStatus, type MandateCreateInput, type MandateCreateResult, type MandateCharge, type MandateChargeInput, type MandateChargeStatus, type MandateListOptions, type MandateListPage, type PermitTypedData, type MandatesResource, } from "./mandates.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAMrB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AAKvB,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,sBAAsB,EACtB,oCAAoC,EACpC,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,KAAK,2BAA2B,GACjC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAMrB,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExF,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,GACvB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC;AAKvB,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,sBAAsB,EACtB,oCAAoC,EACpC,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,4BAA4B,EAC5B,KAAK,2BAA2B,GACjC,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,yBAAyB,EACzB,KAAK,kBAAkB,EACvB,KAAK,wBAAwB,GAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EACL,UAAU,GAaX,MAAM,aAAa,CAAC;AAqDrB,+EAA+E;AAC/E,wEAAwE;AACxE,gDAAgD;AAChD,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,GAEzB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,sBAAsB,EACtB,oCAAoC,GAWrC,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,GAOlB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAE7B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,yBAAyB,GAG1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,iBAAiB,EACjB,cAAc,GAIf,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAE1E,OAAO,EACL,UAAU,GAaX,MAAM,aAAa,CAAC;AA0DrB,+EAA+E;AAC/E,wEAAwE;AACxE,gDAAgD;AAChD,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,GAEzB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,sBAAsB,EACtB,oCAAoC,GAWrC,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,GAOlB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAE7B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,yBAAyB,GAG1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,iBAAiB,EACjB,cAAc,GAIf,MAAM,mBAAmB,CAAC"}
@@ -1,5 +1,16 @@
1
1
  import { type GenesisPayRequest } from "./resource.js";
2
2
  import type { CheckoutLink } from "./client.js";
3
+ export type ProductDelivery = {
4
+ type: "none";
5
+ } | {
6
+ type: "redirect";
7
+ url: string;
8
+ verifiedAt: string | null;
9
+ } | {
10
+ type: "gate";
11
+ resourceUrl: string;
12
+ method: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
13
+ };
3
14
  export type Product = {
4
15
  publicId: string;
5
16
  name: string;
@@ -20,6 +31,8 @@ export type Product = {
20
31
  /** Where a paying buyer's entitlement redirects; null until the seller sets it. */
21
32
  fulfilmentUrl: string | null;
22
33
  fulfilmentVerifiedAt: string | null;
34
+ /** Additive delivery contract; flat fulfilment fields remain for compatibility. */
35
+ delivery: ProductDelivery;
23
36
  createdAt: string;
24
37
  };
25
38
  export type ProductCreateInput = {
@@ -32,6 +45,7 @@ export type ProductCreateInput = {
32
45
  sku?: string;
33
46
  /** Defaults to USDC (the only settlement asset during the beta). */
34
47
  asset?: "USDC";
48
+ delivery?: ProductDelivery;
35
49
  };
36
50
  export type ProductPaymentLink = {
37
51
  /** The product's one canonical reusable link — mint again and you get the same one. */
@@ -39,6 +53,37 @@ export type ProductPaymentLink = {
39
53
  /** True only on the call that actually created the link. */
40
54
  created: boolean;
41
55
  };
56
+ export type ProductGatePurchase = {
57
+ product: {
58
+ publicId: string;
59
+ sku: string | null;
60
+ quantity: 1;
61
+ };
62
+ payment: {
63
+ attemptId: string;
64
+ txHash: string;
65
+ payer: string | null;
66
+ asset: "USDC";
67
+ amountMinor: string;
68
+ chainId: number;
69
+ simulated: false;
70
+ idempotentReplay: boolean;
71
+ };
72
+ requestFingerprint: string;
73
+ };
74
+ export type ProductGate = {
75
+ /** Fetches the product and idempotently ensures its canonical reusable link. */
76
+ prime(): Promise<{
77
+ product: Product;
78
+ paymentLink: ProductPaymentLink;
79
+ }>;
80
+ /**
81
+ * Protect a registered resource. The handler may run again after a confirmed
82
+ * replay, so persist by `purchase.payment.attemptId` when effects are not
83
+ * naturally idempotent.
84
+ */
85
+ protect(request: Request, handler: (request: Request, purchase: ProductGatePurchase) => Response | Promise<Response>): Promise<Response>;
86
+ };
42
87
  export interface ProductsResource {
43
88
  create(input: ProductCreateInput): Promise<Product>;
44
89
  /** Active products; pass `includeArchived: true` for the whole catalogue. */
@@ -52,6 +97,8 @@ export interface ProductsResource {
52
97
  */
53
98
  update(publicId: string, input: {
54
99
  fulfilmentUrl: string | null;
100
+ } | {
101
+ delivery: ProductDelivery;
55
102
  }): Promise<Product>;
56
103
  /**
57
104
  * Stops NEW payment-link mints; the existing canonical link stays payable
@@ -66,6 +113,23 @@ export interface ProductsResource {
66
113
  * same link.
67
114
  */
68
115
  createPaymentLink(publicId: string): Promise<ProductPaymentLink>;
116
+ /**
117
+ * The product's payable URL — convenience for
118
+ * `createPaymentLink(publicId)` → `link.payUrl`. The returned URL embeds the
119
+ * link's `inv_` id, which changes when the link is archived and reminted
120
+ * (e.g. a wallet migration): resolve it at render time, never hardcode it.
121
+ * The mint is idempotent, but it is still a write — don't put it in a hot
122
+ * render path uncached; prefer `permalink` where stability is what you need.
123
+ */
124
+ checkoutUrl(publicId: string): Promise<string>;
125
+ /**
126
+ * The product's PERMANENT checkout URL (`{baseUrl}/pay/p/{publicId}`) —
127
+ * stable across every link remint, resolved server-side on every request.
128
+ * Pure string builder: no network call, no mint. This is the URL to embed
129
+ * in a shop's buy button.
130
+ */
131
+ permalink(publicId: string): string;
132
+ gate(publicId: string): ProductGate;
69
133
  }
70
134
  export declare function createProductsResource(request: GenesisPayRequest,
71
135
  /**
@@ -73,8 +137,10 @@ export declare function createProductsResource(request: GenesisPayRequest,
73
137
  * onto the minted link — the destination every sale of this product settles
74
138
  * to, which is exactly the value the pin exists to guard.
75
139
  */
76
- assertPinnedDestination: ((wallet: unknown, what: string) => void) | undefined,
140
+ assertPinnedDestination: (wallet: unknown, what: string) => void,
77
141
  /** The client's raw-link mapper, so link shapes cannot drift between resources. */
78
- toLink: (raw: Record<string, unknown>) => CheckoutLink): ProductsResource;
142
+ toLink: (raw: Record<string, unknown>) => CheckoutLink,
143
+ /** The client's origin (no trailing slash) — the base of `permalink()`. */
144
+ baseUrl: string, rawGateRequest?: (publicId: string, body: Record<string, unknown>) => Promise<Response>): ProductsResource;
79
145
  export declare function toProduct(raw: Record<string, unknown>): Product;
80
146
  //# sourceMappingURL=products.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../src/products.ts"],"names":[],"mappings":"AAWA,OAAO,EAML,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,uFAAuF;IACvF,IAAI,EAAE,YAAY,CAAC;IACnB,4DAA4D;IAC5D,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,6EAA6E;IAC7E,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpF;;;;OAIG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5C;;;;;OAKG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,iBAAiB;AAC1B;;;;GAIG;AACH,uBAAuB,GAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,aAAW;AAC3E,mFAAmF;AACnF,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,YAAY,GACrD,gBAAgB,CA6GlB;AA6BD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAe/D"}
1
+ {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../src/products.ts"],"names":[],"mappings":"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"}
package/dist/products.js CHANGED
@@ -9,16 +9,19 @@
9
9
  // catalogue-enumeration oracle, and the SDK does not paper over that.
10
10
  import { GenesisPayConfigError } from "./errors.js";
11
11
  import { asRecord, optionalString, requiredString, toAmountString, oneOf, } from "./resource.js";
12
+ import { PAYMENT_RESPONSE_HEADER, PAYMENT_SIGNATURE_HEADER } from "@genesis-tech/genesispay-protocol";
12
13
  export function createProductsResource(request,
13
14
  /**
14
15
  * Applies the client's `expectedPayTo` pin to the wallet the server froze
15
16
  * onto the minted link — the destination every sale of this product settles
16
17
  * to, which is exactly the value the pin exists to guard.
17
18
  */
18
- assertPinnedDestination = () => { },
19
+ assertPinnedDestination,
19
20
  /** The client's raw-link mapper, so link shapes cannot drift between resources. */
20
- toLink) {
21
- return {
21
+ toLink,
22
+ /** The client's origin (no trailing slash) — the base of `permalink()`. */
23
+ baseUrl, rawGateRequest) {
24
+ const resources = {
22
25
  create: async (input) => {
23
26
  const body = await request({
24
27
  method: "POST",
@@ -32,6 +35,7 @@ toLink) {
32
35
  ...(input.imageUrl ? { imageUrl: input.imageUrl } : {}),
33
36
  ...(input.sku ? { sku: input.sku } : {}),
34
37
  ...(input.asset ? { asset: input.asset } : {}),
38
+ ...(input.delivery ? { delivery: input.delivery } : {}),
35
39
  },
36
40
  });
37
41
  return requireProduct(body, "POST /api/v1/products");
@@ -75,7 +79,7 @@ toLink) {
75
79
  operation: `PATCH /api/v1/products/${id}`,
76
80
  action: `update product "${id}"`,
77
81
  notFoundMessage: notFoundMessage(id),
78
- body: { fulfilmentUrl: input.fulfilmentUrl },
82
+ body: "delivery" in input ? { delivery: input.delivery } : { fulfilmentUrl: input.fulfilmentUrl },
79
83
  });
80
84
  return requireProduct(body, `PATCH /api/v1/products/${id}`);
81
85
  },
@@ -115,7 +119,40 @@ toLink) {
115
119
  created: record?.created === true,
116
120
  };
117
121
  },
122
+ checkoutUrl: async (publicId) => {
123
+ const { link } = await resources.createPaymentLink(publicId);
124
+ return link.payUrl;
125
+ },
126
+ permalink: (publicId) => `${baseUrl}/pay/p/${encodeURIComponent(requirePublicId(publicId, "products.permalink"))}`,
127
+ gate: (publicId) => createProductGate({
128
+ publicId: requirePublicId(publicId, "products.gate"),
129
+ retrieve: async () => {
130
+ const body = await request({
131
+ path: `/api/v1/products/${encodeURIComponent(publicId)}`,
132
+ operation: `GET /api/v1/products/${publicId}`,
133
+ action: `retrieve product "${publicId}"`,
134
+ notFoundMessage: notFoundMessage(publicId),
135
+ });
136
+ return requireProduct(body, `GET /api/v1/products/${publicId}`);
137
+ },
138
+ createPaymentLink: async () => {
139
+ const body = await request({
140
+ method: "POST",
141
+ path: `/api/v1/products/${encodeURIComponent(publicId)}/payment-link`,
142
+ operation: `POST /api/v1/products/${publicId}/payment-link`, action: `mint the payment link for product "${publicId}"`,
143
+ notFoundMessage: notFoundMessage(publicId),
144
+ });
145
+ const record = asRecord(body);
146
+ const rawLink = asRecord(record?.link);
147
+ if (!rawLink || typeof rawLink.publicId !== "string" || !rawLink.publicId)
148
+ throw new GenesisPayConfigError("GenesisPay product gate returned no link.");
149
+ assertPinnedDestination(rawLink.destinationWallet, "product payment link");
150
+ return { link: toLink(rawLink), created: record?.created === true };
151
+ },
152
+ request: rawGateRequest,
153
+ }),
118
154
  };
155
+ return resources;
119
156
  }
120
157
  function notFoundMessage(id) {
121
158
  return (`No GenesisPay product with publicId "${id}". Check the id and that it ` +
@@ -148,7 +185,111 @@ export function toProduct(raw) {
148
185
  archived: raw.archived === true,
149
186
  fulfilmentUrl: optionalString(raw.fulfilmentUrl),
150
187
  fulfilmentVerifiedAt: optionalString(raw.fulfilmentVerifiedAt),
188
+ delivery: toProductDelivery(raw),
151
189
  createdAt: requiredString(raw.createdAt),
152
190
  };
153
191
  }
192
+ function toProductDelivery(raw) {
193
+ const delivery = asRecord(raw.delivery);
194
+ if (delivery?.type === "redirect" && typeof delivery.url === "string") {
195
+ return { type: "redirect", url: delivery.url, verifiedAt: optionalString(delivery.verifiedAt) };
196
+ }
197
+ if (delivery?.type === "gate" && typeof delivery.resourceUrl === "string") {
198
+ return { type: "gate", resourceUrl: delivery.resourceUrl, method: oneOf(delivery.method, ["GET", "POST", "PUT", "PATCH", "DELETE"], "POST") };
199
+ }
200
+ // Compatibility with servers older than the additive delivery field.
201
+ const url = optionalString(raw.fulfilmentUrl);
202
+ return url ? { type: "redirect", url, verifiedAt: optionalString(raw.fulfilmentVerifiedAt) } : { type: "none" };
203
+ }
204
+ function createProductGate(input) {
205
+ return {
206
+ async prime() {
207
+ const product = await input.retrieve();
208
+ if (product.delivery.type !== "gate")
209
+ throw new GenesisPayConfigError(`Product "${input.publicId}" is not configured with gate delivery.`);
210
+ return { product, paymentLink: await input.createPaymentLink() };
211
+ },
212
+ async protect(request, handler) {
213
+ if (!input.request)
214
+ throw new GenesisPayConfigError("This GenesisPay client cannot call product gates.");
215
+ const signature = request.headers.get(PAYMENT_SIGNATURE_HEADER);
216
+ const url = canonicalRequestUrl(request.url);
217
+ const requestMethod = request.method.toUpperCase();
218
+ let product = null;
219
+ let gateResourceUrl;
220
+ if (signature) {
221
+ // A settled retry belongs to the immutable resource snapshot in its
222
+ // gate intent. Do not reject it because the merchant edited the live
223
+ // product URL after GenesisPay returned the original 402.
224
+ gateResourceUrl = url;
225
+ }
226
+ else {
227
+ const primed = await this.prime();
228
+ product = primed.product;
229
+ if (product.delivery.type !== "gate")
230
+ throw new GenesisPayConfigError("Product is not a gate.");
231
+ if (url !== canonicalRequestUrl(product.delivery.resourceUrl) || requestMethod !== product.delivery.method) {
232
+ throw new GenesisPayConfigError("Incoming request does not match the product's registered gate resource.");
233
+ }
234
+ gateResourceUrl = product.delivery.resourceUrl;
235
+ }
236
+ const requestFingerprint = await fingerprintRequest(request);
237
+ const response = await input.request(input.publicId, {
238
+ action: signature ? "settle" : "challenge",
239
+ resourceUrl: gateResourceUrl,
240
+ method: requestMethod,
241
+ requestFingerprint,
242
+ ...(signature ? { paymentSignature: signature } : {}),
243
+ });
244
+ if (!response.ok)
245
+ return copyResponse(response);
246
+ const payment = await response.clone().json().catch(() => null);
247
+ const attemptId = typeof payment?.paymentAttemptId === "string" ? payment.paymentAttemptId : null;
248
+ if (!attemptId)
249
+ return copyResponse(response);
250
+ // Product data is presentation/context, never payment authority. Reading
251
+ // it after a signed retry is safe even if delivery has changed; GenesisPay
252
+ // already checked the intent's seller/product/link ownership.
253
+ product ??= await input.retrieve();
254
+ const extension = asRecord(payment?.extensions);
255
+ const handlerResponse = await handler(request, {
256
+ product: { publicId: product.publicId, sku: product.sku, quantity: 1 },
257
+ payment: {
258
+ attemptId,
259
+ txHash: typeof payment?.transaction === "string" ? payment.transaction : "",
260
+ payer: optionalString(payment?.payer), asset: "USDC", amountMinor: toAmountString(payment?.amount),
261
+ chainId: payment && Number.isInteger(payment.chainId) ? payment.chainId : 8453,
262
+ simulated: false, idempotentReplay: extension?.idempotentReplay === true,
263
+ },
264
+ requestFingerprint,
265
+ });
266
+ const out = new Headers(handlerResponse.headers);
267
+ const paymentResponse = response.headers.get(PAYMENT_RESPONSE_HEADER);
268
+ if (paymentResponse)
269
+ out.set(PAYMENT_RESPONSE_HEADER, paymentResponse);
270
+ return new Response(handlerResponse.body, { status: handlerResponse.status, statusText: handlerResponse.statusText, headers: out });
271
+ },
272
+ };
273
+ }
274
+ async function fingerprintRequest(request) {
275
+ const body = new Uint8Array(await request.clone().arrayBuffer());
276
+ const bodyHash = await sha256(body);
277
+ return sha256(new TextEncoder().encode(`${request.method.toUpperCase()}\n${canonicalRequestUrl(request.url)}\n${bodyHash}`));
278
+ }
279
+ function canonicalRequestUrl(value) {
280
+ const url = new URL(value);
281
+ url.searchParams.delete("gp_attempt");
282
+ url.hash = "";
283
+ return url.toString();
284
+ }
285
+ async function sha256(value) {
286
+ // Copy into an ArrayBuffer because TypeScript's DOM declarations reject a
287
+ // potentially shared ArrayBuffer view even though Web Crypto accepts bytes.
288
+ const bytes = Uint8Array.from(value);
289
+ const digest = await crypto.subtle.digest("SHA-256", bytes.buffer);
290
+ return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, "0")).join("");
291
+ }
292
+ async function copyResponse(response) {
293
+ return new Response(await response.arrayBuffer(), { status: response.status, statusText: response.statusText, headers: response.headers });
294
+ }
154
295
  //# sourceMappingURL=products.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"products.js","sourceRoot":"","sources":["../src/products.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"products.js","sourceRoot":"","sources":["../src/products.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genesis-tech/genesispay-seller",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "Framework-agnostic x402 payment gate for sellers, powered by GenesisPay.",
5
5
  "license": "MIT",
6
6
  "author": "GenesisTech",
@@ -1,27 +0,0 @@
1
- import type { VerifySettlement } from "./payment-gate.js";
2
- /**
3
- * Default GenesisPay app base URL — the public "development" facilitator. Used
4
- * when `facilitatorBaseUrl` is omitted so integrators don't have to configure a
5
- * URL in dev. Set `facilitatorBaseUrl` explicitly for production.
6
- */
7
- export declare const DEFAULT_FACILITATOR_BASE_URL = "https://peerpay-app-development.up.railway.app";
8
- export type PeerPaySettlementOptions = {
9
- /**
10
- * Base URL of the GenesisPay app, e.g. "https://genesispay.example". Defaults to
11
- * the public development facilitator (DEFAULT_FACILITATOR_BASE_URL) when
12
- * omitted; set it explicitly in production.
13
- */
14
- facilitatorBaseUrl?: string;
15
- /** GenesisPay seller API key ("pp_sk_..."). */
16
- apiKey: string;
17
- /** Override for testing; defaults to global fetch. */
18
- fetchFn?: typeof fetch;
19
- };
20
- /**
21
- * Built-in settlement hook that forwards the PAYMENT-SIGNATURE payload to the
22
- * GenesisPay facilitator (`POST /api/v1/facilitator/settle`). GenesisPay broadcasts
23
- * the EIP-3009 authorization on-chain (or verifies a payer-provided txHash)
24
- * and verifies the USDC transfer before reporting success.
25
- */
26
- export declare function peerPaySettlement(options: PeerPaySettlementOptions): VerifySettlement;
27
- //# sourceMappingURL=peerpay-settlement.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peerpay-settlement.d.ts","sourceRoot":"","sources":["../src/peerpay-settlement.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,mDACS,CAAC;AAEnD,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,gBAAgB,CA6DlB"}
@@ -1,100 +0,0 @@
1
- import { parseSettlementResponsePayload } from "@genesis-tech/genesispay-protocol";
2
- /**
3
- * Default GenesisPay app base URL — the public "development" facilitator. Used
4
- * when `facilitatorBaseUrl` is omitted so integrators don't have to configure a
5
- * URL in dev. Set `facilitatorBaseUrl` explicitly for production.
6
- */
7
- export const DEFAULT_FACILITATOR_BASE_URL = "https://peerpay-app-development.up.railway.app";
8
- /**
9
- * Built-in settlement hook that forwards the PAYMENT-SIGNATURE payload to the
10
- * GenesisPay facilitator (`POST /api/v1/facilitator/settle`). GenesisPay broadcasts
11
- * the EIP-3009 authorization on-chain (or verifies a payer-provided txHash)
12
- * and verifies the USDC transfer before reporting success.
13
- */
14
- export function peerPaySettlement(options) {
15
- const settleUrl = buildSettleUrl(options.facilitatorBaseUrl?.trim() || DEFAULT_FACILITATOR_BASE_URL);
16
- const apiKey = options.apiKey?.trim();
17
- if (!apiKey) {
18
- throw new Error("peerPaySettlement requires a GenesisPay seller API key (pp_sk_...).");
19
- }
20
- const fetchFn = options.fetchFn ?? fetch;
21
- return async (context) => {
22
- const { requirement } = context;
23
- let response;
24
- try {
25
- response = await fetchFn(settleUrl, {
26
- method: "POST",
27
- headers: {
28
- "Content-Type": "application/json",
29
- Authorization: `Bearer ${apiKey}`,
30
- },
31
- body: JSON.stringify({
32
- paymentSignature: context.paymentSignatureHeader,
33
- requirement: {
34
- resource: requirement.resource,
35
- network: requirement.network,
36
- chainId: requirement.chainId,
37
- assetAddress: requirement.assetAddress,
38
- amountUsdcMinor: requirement.maxAmountRequired,
39
- payTo: requirement.payTo,
40
- description: requirement.description || undefined,
41
- },
42
- }),
43
- });
44
- }
45
- catch (error) {
46
- return {
47
- ok: false,
48
- errorReason: `Failed to reach the GenesisPay facilitator: ${describeError(error)}`,
49
- };
50
- }
51
- const body = await readJsonBody(response);
52
- const settlement = tryParseSettlement(body);
53
- if (response.ok && settlement?.success) {
54
- return { ok: true, settlement };
55
- }
56
- return {
57
- ok: false,
58
- errorReason: settlement?.errorReason ??
59
- readErrorMessage(body) ??
60
- `GenesisPay facilitator settlement failed with status ${response.status}.`,
61
- ...(settlement ? { settlement } : {}),
62
- };
63
- };
64
- }
65
- function buildSettleUrl(facilitatorBaseUrl) {
66
- const trimmed = facilitatorBaseUrl?.trim().replace(/\/+$/, "");
67
- if (!trimmed || !/^https?:\/\//.test(trimmed)) {
68
- throw new Error(`Invalid facilitatorBaseUrl "${String(facilitatorBaseUrl)}": expected an http(s) URL like "https://genesispay.example".`);
69
- }
70
- return `${trimmed}/api/v1/facilitator/settle`;
71
- }
72
- async function readJsonBody(response) {
73
- try {
74
- return await response.json();
75
- }
76
- catch {
77
- return undefined;
78
- }
79
- }
80
- function tryParseSettlement(body) {
81
- try {
82
- return parseSettlementResponsePayload(body);
83
- }
84
- catch {
85
- return undefined;
86
- }
87
- }
88
- function readErrorMessage(body) {
89
- if (typeof body === "object" &&
90
- body !== null &&
91
- "error" in body &&
92
- typeof body.error === "string") {
93
- return body.error;
94
- }
95
- return undefined;
96
- }
97
- function describeError(error) {
98
- return error instanceof Error ? error.message : "unknown error";
99
- }
100
- //# sourceMappingURL=peerpay-settlement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"peerpay-settlement.js","sourceRoot":"","sources":["../src/peerpay-settlement.ts"],"names":[],"mappings":"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"}