thirdweb 5.112.4 → 5.114.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/dist/cjs/exports/react.js +4 -1
- package/dist/cjs/exports/react.js.map +1 -1
- package/dist/cjs/exports/react.native.js +4 -1
- package/dist/cjs/exports/react.native.js.map +1 -1
- package/dist/cjs/react/core/hooks/x402/useFetchWithPaymentCore.js +110 -0
- package/dist/cjs/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -0
- package/dist/cjs/react/native/hooks/x402/useFetchWithPayment.js +89 -0
- package/dist/cjs/react/native/hooks/x402/useFetchWithPayment.js.map +1 -0
- package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js +168 -0
- package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js.map +1 -0
- package/dist/cjs/react/web/ui/components/basic.js +1 -1
- package/dist/cjs/react/web/ui/x402/PaymentErrorModal.js +107 -0
- package/dist/cjs/react/web/ui/x402/PaymentErrorModal.js.map +1 -0
- package/dist/cjs/react/web/ui/x402/SignInRequiredModal.js +28 -0
- package/dist/cjs/react/web/ui/x402/SignInRequiredModal.js.map +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/wallets/coinbase/coinbase-web.js +9 -0
- package/dist/cjs/wallets/coinbase/coinbase-web.js.map +1 -1
- package/dist/cjs/x402/common.js +2 -10
- package/dist/cjs/x402/common.js.map +1 -1
- package/dist/cjs/x402/facilitator.js +2 -1
- package/dist/cjs/x402/facilitator.js.map +1 -1
- package/dist/cjs/x402/fetchWithPayment.js +13 -14
- package/dist/cjs/x402/fetchWithPayment.js.map +1 -1
- package/dist/cjs/x402/schemas.js +4 -1
- package/dist/cjs/x402/schemas.js.map +1 -1
- package/dist/cjs/x402/settle-payment.js +13 -2
- package/dist/cjs/x402/settle-payment.js.map +1 -1
- package/dist/cjs/x402/types.js +6 -1
- package/dist/cjs/x402/types.js.map +1 -1
- package/dist/cjs/x402/verify-payment.js +12 -2
- package/dist/cjs/x402/verify-payment.js.map +1 -1
- package/dist/esm/exports/react.js +2 -0
- package/dist/esm/exports/react.js.map +1 -1
- package/dist/esm/exports/react.native.js +2 -0
- package/dist/esm/exports/react.native.js.map +1 -1
- package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js +107 -0
- package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -0
- package/dist/esm/react/native/hooks/x402/useFetchWithPayment.js +86 -0
- package/dist/esm/react/native/hooks/x402/useFetchWithPayment.js.map +1 -0
- package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js +165 -0
- package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js.map +1 -0
- package/dist/esm/react/web/ui/components/basic.js +1 -1
- package/dist/esm/react/web/ui/x402/PaymentErrorModal.js +104 -0
- package/dist/esm/react/web/ui/x402/PaymentErrorModal.js.map +1 -0
- package/dist/esm/react/web/ui/x402/SignInRequiredModal.js +25 -0
- package/dist/esm/react/web/ui/x402/SignInRequiredModal.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/esm/wallets/coinbase/coinbase-web.js +9 -0
- package/dist/esm/wallets/coinbase/coinbase-web.js.map +1 -1
- package/dist/esm/x402/common.js +2 -10
- package/dist/esm/x402/common.js.map +1 -1
- package/dist/esm/x402/facilitator.js +2 -1
- package/dist/esm/x402/facilitator.js.map +1 -1
- package/dist/esm/x402/fetchWithPayment.js +13 -14
- package/dist/esm/x402/fetchWithPayment.js.map +1 -1
- package/dist/esm/x402/schemas.js +4 -1
- package/dist/esm/x402/schemas.js.map +1 -1
- package/dist/esm/x402/settle-payment.js +13 -2
- package/dist/esm/x402/settle-payment.js.map +1 -1
- package/dist/esm/x402/types.js +5 -0
- package/dist/esm/x402/types.js.map +1 -1
- package/dist/esm/x402/verify-payment.js +12 -2
- package/dist/esm/x402/verify-payment.js.map +1 -1
- package/dist/scripts/bridge-widget.js +50 -50
- package/dist/types/exports/react.d.ts +1 -0
- package/dist/types/exports/react.d.ts.map +1 -1
- package/dist/types/exports/react.native.d.ts +1 -0
- package/dist/types/exports/react.native.d.ts.map +1 -1
- package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts +131 -0
- package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts.map +1 -0
- package/dist/types/react/native/hooks/x402/useFetchWithPayment.d.ts +189 -0
- package/dist/types/react/native/hooks/x402/useFetchWithPayment.d.ts.map +1 -0
- package/dist/types/react/web/hooks/x402/useFetchWithPayment.d.ts +248 -0
- package/dist/types/react/web/hooks/x402/useFetchWithPayment.d.ts.map +1 -0
- package/dist/types/react/web/ui/x402/PaymentErrorModal.d.ts +20 -0
- package/dist/types/react/web/ui/x402/PaymentErrorModal.d.ts.map +1 -0
- package/dist/types/react/web/ui/x402/SignInRequiredModal.d.ts +12 -0
- package/dist/types/react/web/ui/x402/SignInRequiredModal.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/types/x402/common.d.ts.map +1 -1
- package/dist/types/x402/facilitator.d.ts +1 -1
- package/dist/types/x402/facilitator.d.ts.map +1 -1
- package/dist/types/x402/fetchWithPayment.d.ts +7 -3
- package/dist/types/x402/fetchWithPayment.d.ts.map +1 -1
- package/dist/types/x402/schemas.d.ts +17 -17
- package/dist/types/x402/schemas.d.ts.map +1 -1
- package/dist/types/x402/settle-payment.d.ts +13 -2
- package/dist/types/x402/settle-payment.d.ts.map +1 -1
- package/dist/types/x402/types.d.ts +13 -1
- package/dist/types/x402/types.d.ts.map +1 -1
- package/dist/types/x402/verify-payment.d.ts +12 -2
- package/dist/types/x402/verify-payment.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/exports/react.native.ts +5 -0
- package/src/exports/react.ts +5 -0
- package/src/react/core/hooks/x402/useFetchWithPaymentCore.ts +160 -0
- package/src/react/native/hooks/x402/useFetchWithPayment.ts +96 -0
- package/src/react/web/hooks/x402/useFetchWithPayment.tsx +238 -0
- package/src/react/web/ui/components/basic.tsx +1 -1
- package/src/react/web/ui/x402/PaymentErrorModal.tsx +261 -0
- package/src/react/web/ui/x402/SignInRequiredModal.tsx +75 -0
- package/src/version.ts +1 -1
- package/src/wallets/coinbase/coinbase-web.ts +10 -0
- package/src/x402/common.ts +2 -20
- package/src/x402/facilitator.ts +2 -1
- package/src/x402/fetchWithPayment.ts +23 -22
- package/src/x402/schemas.ts +4 -1
- package/src/x402/settle-payment.ts +13 -2
- package/src/x402/types.ts +16 -1
- package/src/x402/verify-payment.ts +12 -2
|
@@ -15,7 +15,7 @@ import { createPaymentHeader } from "./sign.js";
|
|
|
15
15
|
* @param fetch - The fetch function to wrap (typically globalThis.fetch)
|
|
16
16
|
* @param client - The thirdweb client used to access RPC infrastructure
|
|
17
17
|
* @param wallet - The wallet used to sign payment messages
|
|
18
|
-
* @param maxValue - The maximum allowed payment amount in base units
|
|
18
|
+
* @param maxValue - The maximum allowed payment amount in base units
|
|
19
19
|
* @returns A wrapped fetch function that handles 402 responses automatically
|
|
20
20
|
*
|
|
21
21
|
* @example
|
|
@@ -38,30 +38,30 @@ import { createPaymentHeader } from "./sign.js";
|
|
|
38
38
|
* @throws {Error} If a payment has already been attempted for this request
|
|
39
39
|
* @throws {Error} If there's an error creating the payment header
|
|
40
40
|
*
|
|
41
|
-
* @
|
|
41
|
+
* @x402
|
|
42
42
|
*/
|
|
43
|
-
export function wrapFetchWithPayment(fetch, client, wallet,
|
|
43
|
+
export function wrapFetchWithPayment(fetch, client, wallet, options) {
|
|
44
44
|
return async (input, init) => {
|
|
45
45
|
const response = await fetch(input, init);
|
|
46
46
|
if (response.status !== 402) {
|
|
47
47
|
return response;
|
|
48
48
|
}
|
|
49
49
|
const { x402Version, accepts, error } = (await response.json());
|
|
50
|
-
const parsedPaymentRequirements = accepts
|
|
51
|
-
.map((x) => RequestedPaymentRequirementsSchema.parse(x))
|
|
52
|
-
.filter((x) => x.scheme === "exact"); // TODO (402): accept other schemes
|
|
50
|
+
const parsedPaymentRequirements = accepts.map((x) => RequestedPaymentRequirementsSchema.parse(x));
|
|
53
51
|
const account = wallet.getAccount();
|
|
54
52
|
let chain = wallet.getChain();
|
|
55
53
|
if (!account || !chain) {
|
|
56
54
|
throw new Error("Wallet not connected. Please connect your wallet to continue.");
|
|
57
55
|
}
|
|
58
|
-
const selectedPaymentRequirements =
|
|
56
|
+
const selectedPaymentRequirements = options?.paymentRequirementsSelector
|
|
57
|
+
? options.paymentRequirementsSelector(parsedPaymentRequirements)
|
|
58
|
+
: defaultPaymentRequirementsSelector(parsedPaymentRequirements, chain.id, error);
|
|
59
59
|
if (!selectedPaymentRequirements) {
|
|
60
60
|
throw new Error(`No suitable payment requirements found for chain ${chain.id}. ${error}`);
|
|
61
61
|
}
|
|
62
|
-
if (maxValue &&
|
|
63
|
-
BigInt(selectedPaymentRequirements.maxAmountRequired) > maxValue) {
|
|
64
|
-
throw new Error(`Payment amount exceeds maximum allowed (currently set to ${maxValue} in base units)`);
|
|
62
|
+
if (options?.maxValue &&
|
|
63
|
+
BigInt(selectedPaymentRequirements.maxAmountRequired) > options.maxValue) {
|
|
64
|
+
throw new Error(`Payment amount exceeds maximum allowed (currently set to ${options.maxValue} in base units)`);
|
|
65
65
|
}
|
|
66
66
|
const caip2ChainId = networkToCaip2ChainId(selectedPaymentRequirements.network);
|
|
67
67
|
const paymentChainId = extractEvmChainId(caip2ChainId);
|
|
@@ -95,20 +95,19 @@ export function wrapFetchWithPayment(fetch, client, wallet, maxValue) {
|
|
|
95
95
|
return secondResponse;
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
|
-
function defaultPaymentRequirementsSelector(paymentRequirements, chainId,
|
|
98
|
+
function defaultPaymentRequirementsSelector(paymentRequirements, chainId, error) {
|
|
99
99
|
if (!paymentRequirements.length) {
|
|
100
100
|
throw new Error(`No valid payment requirements found in server 402 response. ${error}`);
|
|
101
101
|
}
|
|
102
102
|
// find the payment requirements matching the connected wallet chain
|
|
103
|
-
const matchingPaymentRequirements = paymentRequirements.find((x) => extractEvmChainId(networkToCaip2ChainId(x.network)) === chainId
|
|
104
|
-
x.scheme === scheme);
|
|
103
|
+
const matchingPaymentRequirements = paymentRequirements.find((x) => extractEvmChainId(networkToCaip2ChainId(x.network)) === chainId);
|
|
105
104
|
if (matchingPaymentRequirements) {
|
|
106
105
|
return matchingPaymentRequirements;
|
|
107
106
|
}
|
|
108
107
|
else {
|
|
109
108
|
// if no matching payment requirements, use the first payment requirement
|
|
110
109
|
// and switch the wallet to that chain
|
|
111
|
-
const firstPaymentRequirement = paymentRequirements
|
|
110
|
+
const firstPaymentRequirement = paymentRequirements[0];
|
|
112
111
|
return firstPaymentRequirement;
|
|
113
112
|
}
|
|
114
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchWithPayment.js","sourceRoot":"","sources":["../../../src/x402/fetchWithPayment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EAErB,kCAAkC,GACnC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAA8B,EAC9B,MAAsB,EACtB,MAAc,EACd,
|
|
1
|
+
{"version":3,"file":"fetchWithPayment.js","sourceRoot":"","sources":["../../../src/x402/fetchWithPayment.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/x402/schemas.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { EvmNetworkToChainId, PaymentPayloadSchema, PaymentRequirementsSchema, SettleResponseSchema, SupportedPaymentKindsResponseSchema, VerifyResponseSchema, } from "x402/types";
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
import { PaymentSchemeSchema } from "./types.js";
|
|
3
4
|
const FacilitatorNetworkSchema = z.string();
|
|
4
5
|
const RequestedPaymentPayloadSchema = PaymentPayloadSchema.extend({
|
|
5
6
|
network: FacilitatorNetworkSchema,
|
|
7
|
+
scheme: PaymentSchemeSchema,
|
|
6
8
|
});
|
|
7
9
|
export const RequestedPaymentRequirementsSchema = PaymentRequirementsSchema.extend({
|
|
8
10
|
network: FacilitatorNetworkSchema,
|
|
11
|
+
scheme: PaymentSchemeSchema,
|
|
9
12
|
});
|
|
10
13
|
const FacilitatorSettleResponseSchema = SettleResponseSchema.extend({
|
|
11
14
|
network: FacilitatorNetworkSchema,
|
|
@@ -32,7 +35,7 @@ const FacilitatorSupportedAssetSchema = z.object({
|
|
|
32
35
|
const FacilitatorSupportedResponseSchema = SupportedPaymentKindsResponseSchema.extend({
|
|
33
36
|
kinds: z.array(z.object({
|
|
34
37
|
x402Version: z.literal(1),
|
|
35
|
-
scheme:
|
|
38
|
+
scheme: PaymentSchemeSchema,
|
|
36
39
|
network: FacilitatorNetworkSchema,
|
|
37
40
|
extra: z
|
|
38
41
|
.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/x402/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAGnB,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,EACpB,mCAAmC,EACnC,oBAAoB,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/x402/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,6 @@ import { x402Version, } from "./types.js";
|
|
|
46
46
|
* routeConfig: {
|
|
47
47
|
* description: "Access to premium API content",
|
|
48
48
|
* mimeType: "application/json",
|
|
49
|
-
* maxTimeoutSeconds: 300,
|
|
50
49
|
* },
|
|
51
50
|
* });
|
|
52
51
|
*
|
|
@@ -63,6 +62,18 @@ import { x402Version, } from "./types.js";
|
|
|
63
62
|
* }
|
|
64
63
|
* ```
|
|
65
64
|
*
|
|
65
|
+
* ### Upto Payment Scheme
|
|
66
|
+
*
|
|
67
|
+
* You can also use the `upto` payment scheme to settle the payment dynamically based on the usage.
|
|
68
|
+
*
|
|
69
|
+
* ```ts
|
|
70
|
+
* const result = await settlePayment({
|
|
71
|
+
* ...paymentArgs,
|
|
72
|
+
* scheme: "upto",
|
|
73
|
+
* price: "$0.10", // max payable amount
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
66
77
|
* ### Express middleware example
|
|
67
78
|
*
|
|
68
79
|
* ```ts
|
|
@@ -117,7 +128,7 @@ import { x402Version, } from "./types.js";
|
|
|
117
128
|
*
|
|
118
129
|
* @public
|
|
119
130
|
* @beta
|
|
120
|
-
* @
|
|
131
|
+
* @x402
|
|
121
132
|
*/
|
|
122
133
|
export async function settlePayment(args) {
|
|
123
134
|
const { routeConfig = {}, facilitator } = args;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settle-payment.js","sourceRoot":"","sources":["../../../src/x402/settle-payment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAGL,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB
|
|
1
|
+
{"version":3,"file":"settle-payment.js","sourceRoot":"","sources":["../../../src/x402/settle-payment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAGL,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+HG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAuB;IAEvB,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;IAEtC,MAAM,mBAAmB,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE7D,IAAI,mBAAmB,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvC,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,EAAE,2BAA2B,EAAE,cAAc,EAAE,mBAAmB,EAAE,GACxE,mBAAmB,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,MAAM,CACzC,cAAc,EACd,2BAA2B,EAC3B,IAAI,CAAC,SAAS,CACf,CAAC;QAEF,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,cAAc,EAAE,UAAU;gBAC1B,eAAe,EAAE;oBACf,+BAA+B,EAAE,oBAAoB;oBACrD,oBAAoB,EAAE,gBAAgB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;iBAC9D;aACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,IAAI,kBAAkB,CAAC;YAC3D,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,eAAe,EAAE;oBACf,cAAc,EAAE,kBAAkB;iBACnC;gBACD,YAAY,EAAE;oBACZ,WAAW;oBACX,KAAK;oBACL,YAAY,EACV,aAAa,EAAE,gBAAgB,IAAI,UAAU,CAAC,YAAY;oBAC5D,cAAc,EAAE,UAAU,CAAC,cAAc;oBACzC,OAAO,EAAE,mBAAmB;iBAC7B;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,GAAG;YACX,eAAe,EAAE;gBACf,cAAc,EAAE,kBAAkB;aACnC;YACD,YAAY,EAAE;gBACZ,WAAW;gBACX,KAAK,EAAE,kBAAkB;gBACzB,YAAY,EACV,aAAa,EAAE,gBAAgB;oBAC/B,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtD,OAAO,EAAE,mBAAmB;aAC7B;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/esm/x402/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/x402/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/x402/types.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;AAYpB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AA8F7B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC;IACzC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAClB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;CAClB,CAAC,CAAC"}
|
|
@@ -37,7 +37,6 @@ import { x402Version, } from "./types.js";
|
|
|
37
37
|
* routeConfig: {
|
|
38
38
|
* description: "Access to premium API content",
|
|
39
39
|
* mimeType: "application/json",
|
|
40
|
-
* maxTimeoutSeconds: 300,
|
|
41
40
|
* },
|
|
42
41
|
* };
|
|
43
42
|
*
|
|
@@ -63,9 +62,20 @@ import { x402Version, } from "./types.js";
|
|
|
63
62
|
* }
|
|
64
63
|
* ```
|
|
65
64
|
*
|
|
65
|
+
* ### Upto Payment Scheme
|
|
66
|
+
*
|
|
67
|
+
* You can also use the `upto` payment scheme to verify a payment where the final price is dynamically calculated based on the usage.
|
|
68
|
+
*
|
|
69
|
+
* ```ts
|
|
70
|
+
* const result = await verifyPayment({
|
|
71
|
+
* ...paymentArgs,
|
|
72
|
+
* scheme: "upto",
|
|
73
|
+
* price: "$0.10", // max payable amount
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
66
76
|
* @public
|
|
67
77
|
* @beta
|
|
68
|
-
* @
|
|
78
|
+
* @x402
|
|
69
79
|
*/
|
|
70
80
|
export async function verifyPayment(args) {
|
|
71
81
|
const { routeConfig = {}, facilitator } = args;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-payment.js","sourceRoot":"","sources":["../../../src/x402/verify-payment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAGL,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB
|
|
1
|
+
{"version":3,"file":"verify-payment.js","sourceRoot":"","sources":["../../../src/x402/verify-payment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAGL,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAiB;IAEjB,MAAM,EAAE,WAAW,GAAG,EAAE,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAC/C,MAAM,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC;IAEtC,MAAM,mBAAmB,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAE7D,IAAI,mBAAmB,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvC,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,EAAE,2BAA2B,EAAE,cAAc,EAAE,mBAAmB,EAAE,GACxE,mBAAmB,CAAC;IAEtB,iBAAiB;IACjB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,MAAM,CAC3C,cAAc,EACd,2BAA2B,CAC5B,CAAC;QAEF,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,cAAc;gBACd,2BAA2B;aAC5B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,YAAY,CAAC,aAAa,IAAI,qBAAqB,CAAC;YAClE,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,eAAe,EAAE;oBACf,cAAc,EAAE,kBAAkB;iBACnC;gBACD,YAAY,EAAE;oBACZ,WAAW;oBACX,KAAK,EAAE,KAAK;oBACZ,YAAY,EACV,aAAa,EAAE,kBAAkB,IAAI,YAAY,CAAC,YAAY;oBAChE,cAAc,EAAE,YAAY,CAAC,cAAc;oBAC3C,OAAO,EAAE,mBAAmB;iBAC7B;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,GAAG;YACX,eAAe,EAAE;gBACf,cAAc,EAAE,kBAAkB;aACnC;YACD,YAAY,EAAE;gBACZ,WAAW;gBACX,KAAK,EAAE,oBAAoB;gBAC3B,YAAY,EACV,aAAa,EAAE,kBAAkB;oBACjC,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtD,OAAO,EAAE,mBAAmB;aAC7B;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|