@moneydevkit/core 0.6.2 → 0.7.0-alpha.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/actions.d.ts +28 -11
- package/dist/actions.js +53 -32
- package/dist/actions.js.map +1 -1
- package/dist/client-actions.d.ts +4 -2
- package/dist/client-actions.js +64 -22
- package/dist/client-actions.js.map +1 -1
- package/dist/client.d.ts +3 -0
- package/dist/client.js +2 -0
- package/dist/client.js.map +1 -1
- package/dist/components/Checkout.d.ts +1 -1
- package/dist/components/Checkout.js +49 -15
- package/dist/components/Checkout.js.map +1 -1
- package/dist/components/checkout/PendingPaymentCheckout.js +27 -7
- package/dist/components/checkout/PendingPaymentCheckout.js.map +1 -1
- package/dist/components/checkout/UnconfirmedCheckout.js +1 -1
- package/dist/components/checkout/UnconfirmedCheckout.js.map +1 -1
- package/dist/handlers/checkout.d.ts +54 -0
- package/dist/handlers/checkout.js +210 -11
- package/dist/handlers/checkout.js.map +1 -1
- package/dist/handlers/products.d.ts +1 -0
- package/dist/handlers/products.js +18 -0
- package/dist/handlers/products.js.map +1 -0
- package/dist/hooks/useCheckout.d.ts +33 -0
- package/dist/hooks/useCheckout.js +57 -15
- package/dist/hooks/useCheckout.js.map +1 -1
- package/dist/hooks/useProducts.d.ts +17 -0
- package/dist/hooks/useProducts.js +34 -0
- package/dist/hooks/useProducts.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mdk-client.d.ts +6 -1
- package/dist/mdk-client.js +7 -0
- package/dist/mdk-client.js.map +1 -1
- package/dist/mdk.js +6 -0
- package/dist/mdk.js.map +1 -1
- package/dist/preview.js +10 -1
- package/dist/preview.js.map +1 -1
- package/dist/route.d.ts +17 -2
- package/dist/route.js +72 -5
- package/dist/route.js.map +1 -1
- package/dist/startup-validation.d.ts +12 -0
- package/dist/startup-validation.js +15 -0
- package/dist/startup-validation.js.map +1 -0
- package/dist/types.d.ts +24 -0
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -0
- package/package.json +3 -3
package/dist/actions.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import type { Checkout, ConfirmCheckout } from '@moneydevkit/api-contract';
|
|
1
|
+
import type { Checkout, ConfirmCheckout, Product } from '@moneydevkit/api-contract';
|
|
2
|
+
import type { Result } from './types';
|
|
2
3
|
export declare function getCheckout(checkoutId: string): Promise<Checkout>;
|
|
4
|
+
export declare function listProducts(): Promise<Product[]>;
|
|
3
5
|
export declare function confirmCheckout(confirm: ConfirmCheckout): Promise<Checkout>;
|
|
4
6
|
/**
|
|
5
7
|
* Valid fields that can be required at checkout time.
|
|
@@ -14,22 +16,37 @@ export type CustomerInput = {
|
|
|
14
16
|
email?: string;
|
|
15
17
|
externalId?: string;
|
|
16
18
|
} & Record<string, string>;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export interface CreateCheckoutParams {
|
|
21
|
-
title: string;
|
|
22
|
-
description: string;
|
|
23
|
-
amount: number;
|
|
24
|
-
currency?: 'USD' | 'SAT';
|
|
19
|
+
type Currency = 'USD' | 'SAT';
|
|
20
|
+
type CommonCheckoutFields = {
|
|
21
|
+
currency?: Currency;
|
|
25
22
|
successUrl?: string;
|
|
26
23
|
checkoutPath?: string;
|
|
27
24
|
metadata?: Record<string, unknown>;
|
|
28
25
|
customer?: CustomerInput;
|
|
29
26
|
requireCustomerData?: string[];
|
|
30
|
-
}
|
|
31
|
-
|
|
27
|
+
};
|
|
28
|
+
type AmountCheckoutParams = CommonCheckoutFields & {
|
|
29
|
+
type: 'AMOUNT';
|
|
30
|
+
amount: number;
|
|
31
|
+
title?: string;
|
|
32
|
+
description?: string;
|
|
33
|
+
productId?: never;
|
|
34
|
+
products?: never;
|
|
35
|
+
};
|
|
36
|
+
type ProductsCheckoutParams = CommonCheckoutFields & {
|
|
37
|
+
type: 'PRODUCTS';
|
|
38
|
+
products: string[];
|
|
39
|
+
productId?: string;
|
|
40
|
+
amount?: never;
|
|
41
|
+
title?: never;
|
|
42
|
+
description?: never;
|
|
43
|
+
};
|
|
44
|
+
export type CreateCheckoutParams = AmountCheckoutParams | ProductsCheckoutParams;
|
|
45
|
+
export declare function createCheckout(params: CreateCheckoutParams): Promise<Result<{
|
|
46
|
+
checkout: Checkout;
|
|
47
|
+
}>>;
|
|
32
48
|
export declare function markInvoicePaidPreview(paymentHash: string, amountSats: number): Promise<{
|
|
33
49
|
ok: boolean;
|
|
34
50
|
}>;
|
|
35
51
|
export declare function paymentHasBeenReceived(paymentHash: string): Promise<boolean>;
|
|
52
|
+
export {};
|
package/dist/actions.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { log } from './logging';
|
|
1
|
+
import { log, error as logError } from './logging';
|
|
2
2
|
import { createMoneyDevKitClient, createMoneyDevKitNode } from './mdk';
|
|
3
3
|
import { hasPaymentBeenReceived, markPaymentReceived } from './payment-state';
|
|
4
4
|
import { is_preview_environment } from './preview';
|
|
5
|
-
|
|
5
|
+
import { failure, success } from './types';
|
|
6
6
|
/**
|
|
7
7
|
* Convert any string format to camelCase.
|
|
8
8
|
* Supports: snake_case, kebab-case, space separated, PascalCase, camelCase
|
|
@@ -40,9 +40,15 @@ function normalizeFieldName(field) {
|
|
|
40
40
|
return camel;
|
|
41
41
|
}
|
|
42
42
|
export async function getCheckout(checkoutId) {
|
|
43
|
+
// createMoneyDevKitClient can throw on invalid config
|
|
43
44
|
const client = createMoneyDevKitClient();
|
|
44
45
|
return await client.checkouts.get({ id: checkoutId });
|
|
45
46
|
}
|
|
47
|
+
export async function listProducts() {
|
|
48
|
+
const client = createMoneyDevKitClient();
|
|
49
|
+
const result = await client.products.list();
|
|
50
|
+
return result.products;
|
|
51
|
+
}
|
|
46
52
|
export async function confirmCheckout(confirm) {
|
|
47
53
|
const client = createMoneyDevKitClient();
|
|
48
54
|
const node = createMoneyDevKitNode();
|
|
@@ -84,43 +90,58 @@ function normalizeRequireCustomerData(fields) {
|
|
|
84
90
|
return fields.map(normalizeFieldName);
|
|
85
91
|
}
|
|
86
92
|
export async function createCheckout(params) {
|
|
87
|
-
const amount = params.amount ?? 200;
|
|
88
93
|
const currency = params.currency ?? 'USD';
|
|
89
94
|
const metadataOverrides = params.metadata ?? {};
|
|
90
|
-
const
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
const isProductsCheckout = params.type === 'PRODUCTS';
|
|
96
|
+
const productIds = isProductsCheckout
|
|
97
|
+
? (params.productId ? [params.productId, ...params.products] : params.products)
|
|
98
|
+
: undefined;
|
|
99
|
+
const amount = isProductsCheckout ? undefined : params.amount;
|
|
100
|
+
const title = isProductsCheckout ? undefined : params.title;
|
|
101
|
+
const description = isProductsCheckout ? undefined : params.description;
|
|
102
|
+
try {
|
|
103
|
+
const client = createMoneyDevKitClient();
|
|
104
|
+
const node = createMoneyDevKitNode();
|
|
105
|
+
const checkout = await client.checkouts.create({
|
|
106
|
+
amount,
|
|
107
|
+
currency,
|
|
108
|
+
products: productIds,
|
|
98
109
|
successUrl: params.successUrl,
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
110
|
+
metadata: {
|
|
111
|
+
title,
|
|
112
|
+
description,
|
|
113
|
+
...metadataOverrides,
|
|
114
|
+
},
|
|
115
|
+
customer: cleanCustomerInput(params.customer),
|
|
116
|
+
requireCustomerData: normalizeRequireCustomerData(params.requireCustomerData),
|
|
117
|
+
}, node.id);
|
|
118
|
+
if (checkout.status === 'CONFIRMED') {
|
|
119
|
+
const invoice = checkout.invoiceScid
|
|
120
|
+
? node.invoices.createWithScid(checkout.invoiceScid, checkout.invoiceAmountSats)
|
|
121
|
+
: node.invoices.create(checkout.invoiceAmountSats);
|
|
122
|
+
const pendingPaymentCheckout = await client.checkouts.registerInvoice({
|
|
123
|
+
paymentHash: invoice.paymentHash,
|
|
124
|
+
invoice: invoice.invoice,
|
|
125
|
+
invoiceExpiresAt: invoice.expiresAt,
|
|
126
|
+
checkoutId: checkout.id,
|
|
127
|
+
nodeId: node.id,
|
|
128
|
+
scid: invoice.scid,
|
|
129
|
+
});
|
|
130
|
+
return success({ checkout: pendingPaymentCheckout });
|
|
131
|
+
}
|
|
132
|
+
return success({ checkout });
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
136
|
+
logError('Checkout creation failed:', message);
|
|
137
|
+
return failure({
|
|
138
|
+
code: 'checkout_creation_failed',
|
|
139
|
+
message: `Failed to create checkout: ${message}`,
|
|
117
140
|
});
|
|
118
|
-
return pendingPaymentCheckout;
|
|
119
141
|
}
|
|
120
|
-
return checkout;
|
|
121
142
|
}
|
|
122
143
|
export async function markInvoicePaidPreview(paymentHash, amountSats) {
|
|
123
|
-
if (!
|
|
144
|
+
if (!is_preview_environment()) {
|
|
124
145
|
throw new Error('markInvoicePaidPreview can only be used in preview environments.');
|
|
125
146
|
}
|
|
126
147
|
const client = createMoneyDevKitClient();
|
package/dist/actions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"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"}
|
package/dist/client-actions.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import type { Checkout as CheckoutType } from '@moneydevkit/api-contract';
|
|
1
|
+
import type { Checkout as CheckoutType, Product } from '@moneydevkit/api-contract';
|
|
2
2
|
import type { ConfirmCheckout } from '@moneydevkit/api-contract';
|
|
3
3
|
import type { CreateCheckoutParams } from './actions';
|
|
4
|
-
|
|
4
|
+
import type { Result } from './types';
|
|
5
|
+
export declare function clientCreateCheckout(params: CreateCheckoutParams): Promise<Result<CheckoutType>>;
|
|
5
6
|
export declare function clientGetCheckout(checkoutId: string): Promise<CheckoutType>;
|
|
6
7
|
export declare function clientConfirmCheckout(confirm: ConfirmCheckout): Promise<CheckoutType>;
|
|
7
8
|
export declare function clientPayInvoice(paymentHash: string, amountSats: number): Promise<void>;
|
|
9
|
+
export declare function clientListProducts(): Promise<Product[]>;
|
package/dist/client-actions.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { is_preview_environment } from './preview';
|
|
2
|
+
import { failure, success } from './types';
|
|
2
3
|
const API_PATH = (typeof process !== 'undefined' && (process.env.NEXT_PUBLIC_MDK_API_PATH ?? process.env.MDK_API_PATH)) || '/api/mdk';
|
|
3
4
|
function getCookie(name) {
|
|
4
5
|
if (typeof document === 'undefined')
|
|
@@ -32,48 +33,89 @@ function ensureCsrfToken() {
|
|
|
32
33
|
document.cookie = `mdk_csrf=${token}; ${cookieAttributes.join('; ')}`;
|
|
33
34
|
return token;
|
|
34
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* POST to the MDK API and unwrap the response.
|
|
38
|
+
* Server returns { data: T }, this function unwraps it to Result<T>.
|
|
39
|
+
*/
|
|
35
40
|
async function postToMdk(handler, payload) {
|
|
36
41
|
const headers = { 'content-type': 'application/json' };
|
|
37
42
|
const csrfToken = ensureCsrfToken();
|
|
38
43
|
if (csrfToken) {
|
|
39
44
|
headers['x-moneydevkit-csrf-token'] = csrfToken;
|
|
40
45
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
+
let response;
|
|
47
|
+
try {
|
|
48
|
+
response = await fetch(API_PATH, {
|
|
49
|
+
method: 'POST',
|
|
50
|
+
headers,
|
|
51
|
+
body: JSON.stringify({ handler, ...payload }),
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return failure({
|
|
56
|
+
code: 'network_error',
|
|
57
|
+
message: 'Failed to connect to the server. Please check your internet connection.',
|
|
58
|
+
});
|
|
59
|
+
}
|
|
46
60
|
if (!response.ok) {
|
|
47
|
-
|
|
48
|
-
|
|
61
|
+
let errorBody = {};
|
|
62
|
+
try {
|
|
63
|
+
errorBody = await response.json();
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Response wasn't JSON
|
|
67
|
+
}
|
|
68
|
+
const details = errorBody.details;
|
|
69
|
+
const hasValidationDetails = Array.isArray(details) && details.length > 0;
|
|
70
|
+
// Extract the first validation error message if available
|
|
71
|
+
const validationMessage = hasValidationDetails ? details[0]?.message : undefined;
|
|
72
|
+
return failure({
|
|
73
|
+
code: hasValidationDetails ? 'validation_error' : response.status >= 500 ? 'server_error' : 'invalid_request',
|
|
74
|
+
message: validationMessage || errorBody.error || `Request failed with status ${response.status}`,
|
|
75
|
+
details: errorBody.details,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
// Server returns { data: T }, unwrap it
|
|
79
|
+
const body = (await response.json());
|
|
80
|
+
if (!body.data) {
|
|
81
|
+
return failure({
|
|
82
|
+
code: 'invalid_response',
|
|
83
|
+
message: 'Invalid response from server',
|
|
84
|
+
});
|
|
49
85
|
}
|
|
50
|
-
return (
|
|
86
|
+
return success(body.data);
|
|
51
87
|
}
|
|
52
88
|
export async function clientCreateCheckout(params) {
|
|
53
|
-
|
|
54
|
-
if (!response?.data) {
|
|
55
|
-
throw new Error('Invalid create checkout response');
|
|
56
|
-
}
|
|
57
|
-
return response.data;
|
|
89
|
+
return postToMdk('create_checkout', { params });
|
|
58
90
|
}
|
|
59
91
|
export async function clientGetCheckout(checkoutId) {
|
|
60
|
-
const
|
|
61
|
-
if (
|
|
62
|
-
throw new Error(
|
|
92
|
+
const result = await postToMdk('get_checkout', { checkoutId });
|
|
93
|
+
if (result.error) {
|
|
94
|
+
throw new Error(result.error.message);
|
|
63
95
|
}
|
|
64
|
-
return
|
|
96
|
+
return result.data;
|
|
65
97
|
}
|
|
66
98
|
export async function clientConfirmCheckout(confirm) {
|
|
67
|
-
const
|
|
68
|
-
if (
|
|
69
|
-
throw new Error(
|
|
99
|
+
const result = await postToMdk('confirm_checkout', { confirm });
|
|
100
|
+
if (result.error) {
|
|
101
|
+
throw new Error(result.error.message);
|
|
70
102
|
}
|
|
71
|
-
return
|
|
103
|
+
return result.data;
|
|
72
104
|
}
|
|
73
105
|
export async function clientPayInvoice(paymentHash, amountSats) {
|
|
74
106
|
if (!is_preview_environment()) {
|
|
75
107
|
throw new Error('clientPayInvoice is only available in preview environments.');
|
|
76
108
|
}
|
|
77
|
-
await postToMdk('pay_invoice', { paymentHash, amountSats });
|
|
109
|
+
const result = await postToMdk('pay_invoice', { paymentHash, amountSats });
|
|
110
|
+
if (result.error) {
|
|
111
|
+
throw new Error(result.error.message);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
export async function clientListProducts() {
|
|
115
|
+
const response = await postToMdk('list_products', {});
|
|
116
|
+
if (!response?.data?.products) {
|
|
117
|
+
throw new Error('Failed to list products');
|
|
118
|
+
}
|
|
119
|
+
return response.data.products;
|
|
78
120
|
}
|
|
79
121
|
//# sourceMappingURL=client-actions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-actions.js","sourceRoot":"","sources":["../src/client-actions.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"client-actions.js","sourceRoot":"","sources":["../src/client-actions.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export * from './components/Checkout';
|
|
2
2
|
export * from './hooks/useCheckout';
|
|
3
3
|
export * from './hooks/useCheckoutSuccess';
|
|
4
|
+
export * from './hooks/useProducts';
|
|
4
5
|
export * from './providers';
|
|
6
|
+
export type { MdkError, Result } from './types';
|
|
7
|
+
export { failure, success } from './types';
|
package/dist/client.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export * from './components/Checkout';
|
|
2
2
|
export * from './hooks/useCheckout';
|
|
3
3
|
export * from './hooks/useCheckoutSuccess';
|
|
4
|
+
export * from './hooks/useProducts';
|
|
4
5
|
export * from './providers';
|
|
6
|
+
export { failure, success } from './types';
|
|
5
7
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA;AACnC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,aAAa,CAAA;AAE3B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -16,7 +16,13 @@ function CheckoutLayout({ checkout, children }) {
|
|
|
16
16
|
const description = checkout?.userMetadata?.description;
|
|
17
17
|
return (_jsxs("div", { className: "w-fit mx-auto", style: { width: '380px' }, children: [(title || description) && (_jsxs("div", { className: "text-center mb-6", children: [title && (_jsx("h2", { className: "text-2xl font-semibold text-white mb-2 font-sans tracking-tight", children: title })), description && (_jsx("p", { className: "text-gray-300", children: description }))] })), _jsx("div", { className: "bg-gray-800 rounded-2xl p-6 text-white font-sans", children: children }), _jsx("div", { className: "text-center mt-6", children: _jsxs("p", { className: "text-xs text-gray-500 font-sans", children: ["Powered by", ' ', _jsx("a", { href: "https://www.moneydevkit.com", target: "_blank", rel: "noopener noreferrer", className: "text-gray-400 hover:text-white transition-colors underline decoration-gray-600 hover:decoration-white", children: "moneydevkit" })] }) })] }));
|
|
18
18
|
}
|
|
19
|
+
function CheckoutError({ error }) {
|
|
20
|
+
return (_jsx("div", { className: "flex justify-center min-h-screen p-4 pt-8 bg-gradient-to-br from-slate-900 via-gray-900 to-slate-800", children: _jsx("div", { className: "w-full max-w-md", children: _jsxs("div", { className: "w-fit mx-auto", style: { width: '380px' }, children: [_jsx("div", { className: "bg-gray-800 rounded-2xl p-6 text-white font-sans", children: _jsxs("div", { className: "text-center", children: [_jsx("div", { className: "w-16 h-16 mx-auto mb-4 rounded-full bg-red-500/20 flex items-center justify-center", children: _jsx("svg", { className: "w-8 h-8 text-red-500", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" }) }) }), _jsx("h2", { className: "text-xl font-semibold mb-2", children: "Unable to create checkout" }), _jsx("p", { className: "text-gray-400", children: error.message })] }) }), _jsx("div", { className: "text-center mt-6", children: _jsxs("p", { className: "text-xs text-gray-500 font-sans", children: ["Powered by", ' ', _jsx("a", { href: "https://www.moneydevkit.com", target: "_blank", rel: "noopener noreferrer", className: "text-gray-400 hover:text-white transition-colors underline decoration-gray-600 hover:decoration-white", children: "moneydevkit" })] }) })] }) }) }));
|
|
21
|
+
}
|
|
19
22
|
function CheckoutInternal({ id }) {
|
|
23
|
+
// Track whether we've checked for URL errors after hydration
|
|
24
|
+
const [hasCheckedUrlError, setHasCheckedUrlError] = useState(false);
|
|
25
|
+
const [errorFromUrl, setErrorFromUrl] = useState(null);
|
|
20
26
|
const [isWindowVisible, setIsWindowVisible] = useState(() => {
|
|
21
27
|
if (typeof document === 'undefined') {
|
|
22
28
|
return true;
|
|
@@ -24,6 +30,23 @@ function CheckoutInternal({ id }) {
|
|
|
24
30
|
return document.visibilityState === 'visible';
|
|
25
31
|
});
|
|
26
32
|
const [isRestarting, setIsRestarting] = useState(false);
|
|
33
|
+
// Check for URL errors after mount (to handle SSR hydration correctly)
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (typeof window === 'undefined') {
|
|
36
|
+
setHasCheckedUrlError(true);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const params = new URLSearchParams(window.location.search);
|
|
40
|
+
const errorCode = params.get('error');
|
|
41
|
+
const errorMessage = params.get('message');
|
|
42
|
+
if (errorCode) {
|
|
43
|
+
setErrorFromUrl({
|
|
44
|
+
code: errorCode,
|
|
45
|
+
message: errorMessage ?? 'An error occurred while creating the checkout.',
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
setHasCheckedUrlError(true);
|
|
49
|
+
}, []);
|
|
27
50
|
useEffect(() => {
|
|
28
51
|
if (typeof document === 'undefined' || typeof window === 'undefined') {
|
|
29
52
|
return;
|
|
@@ -44,7 +67,7 @@ function CheckoutInternal({ id }) {
|
|
|
44
67
|
const { data: checkout } = useQuery({
|
|
45
68
|
queryKey: ['mdk-checkout', id],
|
|
46
69
|
queryFn: () => clientGetCheckout(id).then((checkout) => checkout),
|
|
47
|
-
enabled: !!id,
|
|
70
|
+
enabled: !!id && hasCheckedUrlError && !errorFromUrl,
|
|
48
71
|
refetchInterval: ({ state: { data } }) => {
|
|
49
72
|
if (!isWindowVisible) {
|
|
50
73
|
return false;
|
|
@@ -90,23 +113,34 @@ function CheckoutInternal({ id }) {
|
|
|
90
113
|
const checkoutPath = typeof window !== 'undefined'
|
|
91
114
|
? window.location.pathname.split('/').slice(0, -1).join('/') || '/checkout'
|
|
92
115
|
: '/checkout';
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
catch (error) {
|
|
106
|
-
console.error('Failed to restart checkout', error);
|
|
116
|
+
setIsRestarting(true);
|
|
117
|
+
const result = await clientCreateCheckout({
|
|
118
|
+
type: 'AMOUNT',
|
|
119
|
+
title: checkout.userMetadata?.title || 'Checkout',
|
|
120
|
+
description: checkout.userMetadata?.description || '',
|
|
121
|
+
amount,
|
|
122
|
+
currency: checkout.currency,
|
|
123
|
+
successUrl: checkout.userMetadata?.successUrl ?? checkout.successUrl ?? undefined,
|
|
124
|
+
metadata: checkout.userMetadata ?? undefined,
|
|
125
|
+
});
|
|
126
|
+
if (result.error) {
|
|
127
|
+
console.error('Failed to restart checkout', result.error);
|
|
107
128
|
setIsRestarting(false);
|
|
129
|
+
return;
|
|
108
130
|
}
|
|
131
|
+
window.location.href = `${checkoutPath}/${result.data.id}`;
|
|
109
132
|
}, [checkout]);
|
|
133
|
+
// Show error UI if there was an error from URL-based checkout creation
|
|
134
|
+
if (errorFromUrl) {
|
|
135
|
+
return _jsx(CheckoutError, { error: errorFromUrl });
|
|
136
|
+
}
|
|
137
|
+
// Show error if no checkout ID provided
|
|
138
|
+
if (!id) {
|
|
139
|
+
return (_jsx(CheckoutError, { error: {
|
|
140
|
+
code: 'missing_id',
|
|
141
|
+
message: 'No checkout ID provided.',
|
|
142
|
+
} }));
|
|
143
|
+
}
|
|
110
144
|
if (!checkout) {
|
|
111
145
|
return (_jsx("div", { className: "flex items-center justify-center min-h-screen", children: _jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-white" }) }));
|
|
112
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkout.js","sourceRoot":"","sources":["../../src/components/Checkout.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Checkout.js","sourceRoot":"","sources":["../../src/components/Checkout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ import { ChevronDown } from 'lucide-react';
|
|
|
4
4
|
import { QRCodeSVG } from 'qrcode.react';
|
|
5
5
|
import { useCallback, useEffect, useState } from 'react';
|
|
6
6
|
import { clientPayInvoice } from '../../client-actions';
|
|
7
|
-
import { warn } from '../../logging';
|
|
8
7
|
import { is_preview_environment } from '../../preview';
|
|
9
8
|
import { Button } from '../ui/button';
|
|
10
9
|
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../ui/collapsible';
|
|
@@ -16,7 +15,6 @@ export default function PendingPaymentCheckout({ checkout }) {
|
|
|
16
15
|
const [markPaidError, setMarkPaidError] = useState(null);
|
|
17
16
|
const queryClient = useQueryClient();
|
|
18
17
|
const isPreview = is_preview_environment();
|
|
19
|
-
warn('isPreview_environment()', is_preview_environment());
|
|
20
18
|
useEffect(() => {
|
|
21
19
|
const updateTimer = () => {
|
|
22
20
|
if (!checkout.invoice?.expiresAt)
|
|
@@ -45,7 +43,26 @@ export default function PendingPaymentCheckout({ checkout }) {
|
|
|
45
43
|
const formatSats = (sats) => {
|
|
46
44
|
return new Intl.NumberFormat('en-US').format(sats);
|
|
47
45
|
};
|
|
46
|
+
const formatProductPrice = (price) => {
|
|
47
|
+
if (price.amountType === 'FREE')
|
|
48
|
+
return 'Free';
|
|
49
|
+
if (price.amountType === 'CUSTOM')
|
|
50
|
+
return 'Custom';
|
|
51
|
+
if (price.priceAmount === null)
|
|
52
|
+
return '';
|
|
53
|
+
if (price.currency === 'SAT') {
|
|
54
|
+
return `${formatSats(price.priceAmount)} sats`;
|
|
55
|
+
}
|
|
56
|
+
// USD - stored in cents
|
|
57
|
+
return formatCurrency(price.priceAmount, price.currency);
|
|
58
|
+
};
|
|
48
59
|
const copyToClipboard = async () => {
|
|
60
|
+
// Don't copy real invoice in preview mode
|
|
61
|
+
if (isPreview) {
|
|
62
|
+
setCopySuccess(true);
|
|
63
|
+
setTimeout(() => setCopySuccess(false), 2000);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
49
66
|
if (checkout.invoice?.invoice) {
|
|
50
67
|
try {
|
|
51
68
|
await navigator.clipboard.writeText(checkout.invoice.invoice);
|
|
@@ -87,10 +104,13 @@ export default function PendingPaymentCheckout({ checkout }) {
|
|
|
87
104
|
}
|
|
88
105
|
}, [checkout.id, invoiceAmountSats, isPreview, paymentHash, queryClient]);
|
|
89
106
|
const CheckmarkIcon = () => (_jsx("svg", { className: "w-4 h-4 text-green-500 cursor-pointer transition-colors", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }));
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
107
|
+
const hasProducts = checkout.products && checkout.products.length > 0;
|
|
108
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "text-center mb-6 w-full", children: [_jsx("div", { className: "mb-4 w-full", children: _jsx("div", { className: "text-2xl font-semibold mb-2 font-sans tracking-tight", children: checkout.invoice?.amountSats && `${formatSats(checkout.invoice.amountSats)} sats` }) }), _jsx("div", { className: "w-full", children: _jsxs(Collapsible, { open: detailsOpen, onOpenChange: setDetailsOpen, children: [_jsxs(CollapsibleTrigger, { className: "flex items-center justify-center gap-2 text-gray-400 hover:text-white transition-colors text-sm w-full font-medium", children: ["View Details", _jsx(ChevronDown, { className: `w-4 h-4 transition-transform duration-300 ease-in-out ${detailsOpen ? 'rotate-180' : ''}` })] }), _jsx(CollapsibleContent, { className: "w-full overflow-hidden transition-all duration-300 ease-in-out data-[state=closed]:animate-[collapsible-up_300ms_ease-in-out] data-[state=open]:animate-[collapsible-down_300ms_ease-in-out]", children: _jsxs("div", { className: "mt-4 space-y-3 text-sm w-full", children: [hasProducts && checkout.products.map((product) => {
|
|
109
|
+
const price = product.prices?.[0];
|
|
110
|
+
return (_jsxs("div", { className: "flex justify-between w-full", children: [_jsx("span", { className: "text-gray-400", children: product.name }), _jsx("span", { className: "text-white", children: price && formatProductPrice(price) })] }, product.id));
|
|
111
|
+
}), hasProducts && _jsx("div", { className: "border-t border-gray-600 my-2" }), _jsxs("div", { className: "flex justify-between w-full", children: [_jsx("span", { className: "text-gray-400", children: "Total Fiat" }), _jsx("span", { className: "text-white", children: checkout.invoice?.fiatAmount && checkout.currency &&
|
|
112
|
+
formatCurrency(checkout.invoice.fiatAmount, checkout.currency) })] }), _jsxs("div", { className: "flex justify-between w-full", children: [_jsx("span", { className: "text-gray-400", children: "Exchange Rate" }), _jsx("span", { className: "text-white", children: checkout.invoice?.btcPrice && `$${new Intl.NumberFormat('en-US').format(checkout.invoice.btcPrice)}` })] }), timeRemaining && (_jsxs("div", { className: "flex justify-between w-full", children: [_jsx("span", { className: "text-gray-400", children: "Expires in" }), _jsx("span", { className: "text-white", children: timeRemaining })] }))] }) })] }) })] }), _jsx("div", { className: "flex justify-center mb-4 w-full", children: _jsxs("div", { className: "bg-white p-3 rounded-lg shadow cursor-pointer hover:shadow-lg transition-shadow relative", onClick: copyToClipboard, title: "Click to copy invoice", children: [_jsx(QRCodeSVG, { value: isPreview ? 'SANDBOX_PREVIEW_MODE' : (checkout.invoice?.invoice ?? ''), size: 320, bgColor: "#ffffff", fgColor: "#000000", level: "Q" }), isPreview && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center pointer-events-none", children: _jsx("div", { className: "text-white font-bold text-lg px-4 py-2 rounded transform -rotate-12 shadow-lg", style: { backgroundColor: '#475569', opacity: 0.95 }, children: "SANDBOX" }) }))] }) }), (checkout.invoice?.invoice || isPreview) && (_jsxs("div", { className: "flex items-center gap-2 mb-6 bg-gray-700 p-3 rounded-lg w-full", children: [_jsx("code", { className: "text-xs text-gray-300 font-mono flex-1 text-center min-w-0", children: isPreview
|
|
113
|
+
? truncateInvoice('lnbc1500n1pnxxx...sandbox_invoice...xxxyyyzzz')
|
|
114
|
+
: truncateInvoice(checkout.invoice?.invoice ?? '') }), _jsx("div", { onClick: copyToClipboard, title: "Copy invoice", className: "flex-shrink-0", children: copySuccess ? _jsx(CheckmarkIcon, {}) : _jsx(CopyIcon, {}) })] })), isPreview && paymentHash && invoiceAmountSats && (_jsxs("div", { className: "mt-4 flex justify-center", children: [_jsx(Button, { onClick: handleMarkAsPaid, disabled: markingPaid, className: "bg-gray-700 hover:bg-gray-900 text-gray-300", children: markingPaid ? 'Marking as paid...' : 'Mark as Paid (Sandbox)' }), markPaidError && (_jsx("p", { className: "text-red-400 text-xs text-center mt-2", children: markPaidError }))] }))] }));
|
|
95
115
|
}
|
|
96
116
|
//# sourceMappingURL=PendingPaymentCheckout.js.map
|