@moneydevkit/core 0.10.0 → 0.11.0-beta.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/lightning-node.d.ts +2 -2
- package/dist/lightning-node.js +4 -4
- package/dist/lightning-node.js.map +1 -1
- package/dist/mdk402/index.d.ts +2 -0
- package/dist/mdk402/index.js +2 -0
- package/dist/mdk402/index.js.map +1 -0
- package/dist/mdk402/token.d.ts +64 -0
- package/dist/mdk402/token.js +116 -0
- package/dist/mdk402/token.js.map +1 -0
- package/dist/mdk402/with-payment.d.ts +23 -0
- package/dist/mdk402/with-payment.js +186 -0
- package/dist/mdk402/with-payment.js.map +1 -0
- package/dist/route.js +4 -1
- package/dist/route.js.map +1 -1
- package/package.json +7 -2
package/dist/lightning-node.d.ts
CHANGED
|
@@ -40,13 +40,13 @@ export declare class MoneyDevKitNode {
|
|
|
40
40
|
syncRgs(doFullSync: boolean): number;
|
|
41
41
|
getBalance(): number;
|
|
42
42
|
get invoices(): {
|
|
43
|
-
create: (amountSats: number | null) => {
|
|
43
|
+
create: (amountSats: number | null, customExpirySecs?: number) => {
|
|
44
44
|
invoice: string;
|
|
45
45
|
paymentHash: string;
|
|
46
46
|
scid: string;
|
|
47
47
|
expiresAt: Date;
|
|
48
48
|
};
|
|
49
|
-
createWithScid: (scid: string, amountSats: number | null) => {
|
|
49
|
+
createWithScid: (scid: string, amountSats: number | null, customExpirySecs?: number) => {
|
|
50
50
|
invoice: string;
|
|
51
51
|
paymentHash: string;
|
|
52
52
|
scid: string;
|
package/dist/lightning-node.js
CHANGED
|
@@ -127,8 +127,8 @@ export class MoneyDevKitNode {
|
|
|
127
127
|
}
|
|
128
128
|
get invoices() {
|
|
129
129
|
return {
|
|
130
|
-
create: (amountSats) => {
|
|
131
|
-
const expirySecs = 15 * 60;
|
|
130
|
+
create: (amountSats, customExpirySecs) => {
|
|
131
|
+
const expirySecs = customExpirySecs ?? 15 * 60;
|
|
132
132
|
const description = 'mdk invoice';
|
|
133
133
|
const invoice = amountSats === null
|
|
134
134
|
? this.node.getVariableAmountJitInvoice(description, expirySecs)
|
|
@@ -140,8 +140,8 @@ export class MoneyDevKitNode {
|
|
|
140
140
|
expiresAt: new Date(invoice.expiresAt * 1000),
|
|
141
141
|
};
|
|
142
142
|
},
|
|
143
|
-
createWithScid: (scid, amountSats) => {
|
|
144
|
-
const expirySecs = 15 * 60;
|
|
143
|
+
createWithScid: (scid, amountSats, customExpirySecs) => {
|
|
144
|
+
const expirySecs = customExpirySecs ?? 15 * 60;
|
|
145
145
|
const description = 'mdk invoice';
|
|
146
146
|
const invoice = amountSats === null
|
|
147
147
|
? this.node.getVariableAmountJitInvoiceWithScid(scid, description, expirySecs)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lightning-node.js","sourceRoot":"","sources":["../src/lightning-node.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"lightning-node.js","sourceRoot":"","sources":["../src/lightning-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mdk402/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parameters for creating an MDK402 token.
|
|
3
|
+
*/
|
|
4
|
+
export interface CreateMDK402TokenParams {
|
|
5
|
+
paymentHash: string;
|
|
6
|
+
amountSats: number;
|
|
7
|
+
expiresAt: number;
|
|
8
|
+
accessToken: string;
|
|
9
|
+
resource: string;
|
|
10
|
+
amount: number;
|
|
11
|
+
currency: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Result of verifying an MDK402 token.
|
|
15
|
+
*/
|
|
16
|
+
export type VerifyMDK402TokenResult = {
|
|
17
|
+
valid: true;
|
|
18
|
+
paymentHash: string;
|
|
19
|
+
amountSats: number;
|
|
20
|
+
expiresAt: number;
|
|
21
|
+
resource: string;
|
|
22
|
+
amount: number;
|
|
23
|
+
currency: string;
|
|
24
|
+
} | {
|
|
25
|
+
valid: false;
|
|
26
|
+
reason: 'invalid_format' | 'invalid_signature' | 'expired';
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Result of parsing an Authorization header.
|
|
30
|
+
*/
|
|
31
|
+
export type ParseAuthResult = {
|
|
32
|
+
valid: true;
|
|
33
|
+
token: string;
|
|
34
|
+
preimage: string;
|
|
35
|
+
} | {
|
|
36
|
+
valid: false;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Derive a domain-specific HMAC key for MDK402 tokens.
|
|
40
|
+
* Provides separation from checkout URL signing and webhook verification
|
|
41
|
+
* that also use MDK_ACCESS_TOKEN.
|
|
42
|
+
*/
|
|
43
|
+
export declare function deriveMDK402Key(accessToken: string): Buffer;
|
|
44
|
+
/**
|
|
45
|
+
* Create a signed MDK402 token.
|
|
46
|
+
* Returns a base64-encoded JSON string containing the payment hash,
|
|
47
|
+
* amount, expiry, and an HMAC signature.
|
|
48
|
+
*/
|
|
49
|
+
export declare function createMDK402Token(params: CreateMDK402TokenParams): string;
|
|
50
|
+
/**
|
|
51
|
+
* Verify the HMAC signature and expiry of an MDK402 token.
|
|
52
|
+
* Does NOT verify the payment preimage — that is a separate step.
|
|
53
|
+
*/
|
|
54
|
+
export declare function verifyMDK402Token(token: string, accessToken: string): VerifyMDK402TokenResult;
|
|
55
|
+
/**
|
|
56
|
+
* Verify that a preimage hashes to the expected payment hash.
|
|
57
|
+
* SHA256(preimage_bytes) must equal the payment hash.
|
|
58
|
+
*/
|
|
59
|
+
export declare function verifyPreimage(preimage: string, paymentHash: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Parse an MDK402 Authorization header.
|
|
62
|
+
* Expected format: "MDK402 <token>:<preimage>"
|
|
63
|
+
*/
|
|
64
|
+
export declare function parseAuthorizationHeader(header: string | null): ParseAuthResult;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { createHmac, timingSafeEqual, createHash } from 'crypto';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
/** Schema for validating decoded MDK402 token payloads. */
|
|
4
|
+
const tokenPayloadSchema = z.object({
|
|
5
|
+
paymentHash: z.string(),
|
|
6
|
+
amountSats: z.number(),
|
|
7
|
+
expiresAt: z.number(),
|
|
8
|
+
resource: z.string(),
|
|
9
|
+
amount: z.number(),
|
|
10
|
+
currency: z.string(),
|
|
11
|
+
sig: z.string(),
|
|
12
|
+
});
|
|
13
|
+
/** Version tag for HMAC key derivation. Allows future token format changes. */
|
|
14
|
+
const KEY_DERIVATION_TAG = 'mdk402-token-v1';
|
|
15
|
+
/**
|
|
16
|
+
* Derive a domain-specific HMAC key for MDK402 tokens.
|
|
17
|
+
* Provides separation from checkout URL signing and webhook verification
|
|
18
|
+
* that also use MDK_ACCESS_TOKEN.
|
|
19
|
+
*/
|
|
20
|
+
export function deriveMDK402Key(accessToken) {
|
|
21
|
+
return createHmac('sha256', accessToken)
|
|
22
|
+
.update(KEY_DERIVATION_TAG)
|
|
23
|
+
.digest();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a signed MDK402 token.
|
|
27
|
+
* Returns a base64-encoded JSON string containing the payment hash,
|
|
28
|
+
* amount, expiry, and an HMAC signature.
|
|
29
|
+
*/
|
|
30
|
+
export function createMDK402Token(params) {
|
|
31
|
+
const { paymentHash, amountSats, expiresAt, accessToken, resource, amount, currency } = params;
|
|
32
|
+
const key = deriveMDK402Key(accessToken);
|
|
33
|
+
const message = `${paymentHash}\0${amountSats}\0${expiresAt}\0${resource}\0${amount}\0${currency}`;
|
|
34
|
+
const sig = createHmac('sha256', key)
|
|
35
|
+
.update(message)
|
|
36
|
+
.digest('hex');
|
|
37
|
+
const tokenObj = { paymentHash, amountSats, expiresAt, resource, amount, currency, sig };
|
|
38
|
+
return Buffer.from(JSON.stringify(tokenObj)).toString('base64');
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Verify the HMAC signature and expiry of an MDK402 token.
|
|
42
|
+
* Does NOT verify the payment preimage — that is a separate step.
|
|
43
|
+
*/
|
|
44
|
+
export function verifyMDK402Token(token, accessToken) {
|
|
45
|
+
try {
|
|
46
|
+
const decoded = Buffer.from(token, 'base64').toString('utf8');
|
|
47
|
+
const parsed = tokenPayloadSchema.safeParse(JSON.parse(decoded));
|
|
48
|
+
if (!parsed.success) {
|
|
49
|
+
return { valid: false, reason: 'invalid_format' };
|
|
50
|
+
}
|
|
51
|
+
const { paymentHash, amountSats, expiresAt, resource, amount, currency, sig } = parsed.data;
|
|
52
|
+
// Check expiry before doing crypto work
|
|
53
|
+
const nowSecs = Math.floor(Date.now() / 1000);
|
|
54
|
+
if (expiresAt < nowSecs) {
|
|
55
|
+
return { valid: false, reason: 'expired' };
|
|
56
|
+
}
|
|
57
|
+
// Reject malformed hex before doing crypto work
|
|
58
|
+
if (!/^[0-9a-f]{64}$/.test(sig)) {
|
|
59
|
+
return { valid: false, reason: 'invalid_signature' };
|
|
60
|
+
}
|
|
61
|
+
// Verify HMAC with constant-time comparison
|
|
62
|
+
const key = deriveMDK402Key(accessToken);
|
|
63
|
+
const message = `${paymentHash}\0${amountSats}\0${expiresAt}\0${resource}\0${amount}\0${currency}`;
|
|
64
|
+
const expectedSig = createHmac('sha256', key)
|
|
65
|
+
.update(message)
|
|
66
|
+
.digest('hex');
|
|
67
|
+
const sigBuffer = Buffer.from(sig, 'hex');
|
|
68
|
+
const expectedBuffer = Buffer.from(expectedSig, 'hex');
|
|
69
|
+
if (!timingSafeEqual(sigBuffer, expectedBuffer)) {
|
|
70
|
+
return { valid: false, reason: 'invalid_signature' };
|
|
71
|
+
}
|
|
72
|
+
return { valid: true, paymentHash, amountSats, expiresAt, resource, amount, currency };
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return { valid: false, reason: 'invalid_format' };
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Verify that a preimage hashes to the expected payment hash.
|
|
80
|
+
* SHA256(preimage_bytes) must equal the payment hash.
|
|
81
|
+
*/
|
|
82
|
+
export function verifyPreimage(preimage, paymentHash) {
|
|
83
|
+
try {
|
|
84
|
+
const hash = createHash('sha256')
|
|
85
|
+
.update(Buffer.from(preimage, 'hex'))
|
|
86
|
+
.digest('hex');
|
|
87
|
+
return hash === paymentHash;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Parse an MDK402 Authorization header.
|
|
95
|
+
* Expected format: "MDK402 <token>:<preimage>"
|
|
96
|
+
*/
|
|
97
|
+
export function parseAuthorizationHeader(header) {
|
|
98
|
+
if (!header) {
|
|
99
|
+
return { valid: false };
|
|
100
|
+
}
|
|
101
|
+
if (!header.toLowerCase().startsWith('mdk402 ')) {
|
|
102
|
+
return { valid: false };
|
|
103
|
+
}
|
|
104
|
+
const credentials = header.slice(7).trim();
|
|
105
|
+
const colonIndex = credentials.indexOf(':');
|
|
106
|
+
if (colonIndex === -1) {
|
|
107
|
+
return { valid: false };
|
|
108
|
+
}
|
|
109
|
+
const token = credentials.slice(0, colonIndex);
|
|
110
|
+
const preimage = credentials.slice(colonIndex + 1);
|
|
111
|
+
if (!token || !preimage) {
|
|
112
|
+
return { valid: false };
|
|
113
|
+
}
|
|
114
|
+
return { valid: true, token, preimage };
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/mdk402/token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Currency } from '@moneydevkit/api-contract';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the withPayment wrapper.
|
|
4
|
+
* Defines pricing and token expiry for MDK402-gated endpoints.
|
|
5
|
+
*/
|
|
6
|
+
export type PaymentConfig = {
|
|
7
|
+
/** Fixed amount or async callback that receives the request and returns the amount. */
|
|
8
|
+
amount: number | ((req: Request) => number | Promise<number>);
|
|
9
|
+
/** Currency for pricing. SAT for direct satoshi amounts, USD for fiat conversion. */
|
|
10
|
+
currency: Currency;
|
|
11
|
+
/** How long the token (and invoice) remain valid, in seconds. Default: 900 (15 min). */
|
|
12
|
+
expirySeconds?: number;
|
|
13
|
+
};
|
|
14
|
+
type Handler = (req: Request, context?: any) => Response | Promise<Response>;
|
|
15
|
+
/**
|
|
16
|
+
* Wrap a route handler with MDK402 payment gating.
|
|
17
|
+
*
|
|
18
|
+
* Unauthenticated requests receive a 402 response with a Lightning invoice.
|
|
19
|
+
* Requests with a valid `Authorization: MDK402 <token>:<preimage>` header
|
|
20
|
+
* are forwarded to the inner handler after stateless verification.
|
|
21
|
+
*/
|
|
22
|
+
export declare function withPayment(config: PaymentConfig, handler: Handler): Handler;
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { createMoneyDevKitClient, createMoneyDevKitNode } from '../mdk';
|
|
2
|
+
import { is_preview_environment } from '../preview';
|
|
3
|
+
import { createMDK402Token, verifyMDK402Token, verifyPreimage, parseAuthorizationHeader, } from './token';
|
|
4
|
+
/** Default token and invoice expiry: 15 minutes. */
|
|
5
|
+
const DEFAULT_EXPIRY_SECONDS = 900;
|
|
6
|
+
/**
|
|
7
|
+
* Wrap a route handler with MDK402 payment gating.
|
|
8
|
+
*
|
|
9
|
+
* Unauthenticated requests receive a 402 response with a Lightning invoice.
|
|
10
|
+
* Requests with a valid `Authorization: MDK402 <token>:<preimage>` header
|
|
11
|
+
* are forwarded to the inner handler after stateless verification.
|
|
12
|
+
*/
|
|
13
|
+
export function withPayment(config, handler) {
|
|
14
|
+
return async (req, context) => {
|
|
15
|
+
const accessToken = process.env.MDK_ACCESS_TOKEN;
|
|
16
|
+
if (!accessToken) {
|
|
17
|
+
return errorResponse(500, {
|
|
18
|
+
code: 'configuration_error',
|
|
19
|
+
message: 'MDK_ACCESS_TOKEN is not configured',
|
|
20
|
+
suggestion: 'Set the MDK_ACCESS_TOKEN environment variable',
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
// Check for MDK402 authorization header
|
|
24
|
+
const authHeader = req.headers.get('authorization');
|
|
25
|
+
const parsed = parseAuthorizationHeader(authHeader);
|
|
26
|
+
if (!parsed.valid) {
|
|
27
|
+
// No auth or wrong scheme -> issue a new invoice
|
|
28
|
+
return await create402Response(req, config, accessToken);
|
|
29
|
+
}
|
|
30
|
+
// Verify token integrity and expiry
|
|
31
|
+
const tokenResult = verifyMDK402Token(parsed.token, accessToken);
|
|
32
|
+
if (!tokenResult.valid) {
|
|
33
|
+
if (tokenResult.reason === 'expired') {
|
|
34
|
+
// Expired token -> issue a fresh invoice
|
|
35
|
+
return await create402Response(req, config, accessToken);
|
|
36
|
+
}
|
|
37
|
+
return errorResponse(401, {
|
|
38
|
+
code: 'invalid_token',
|
|
39
|
+
message: 'Invalid or malformed MDK402 token',
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
// Verify token was issued for this specific endpoint
|
|
43
|
+
const expectedResource = `${req.method}:${new URL(req.url).pathname}`;
|
|
44
|
+
if (tokenResult.resource !== expectedResource) {
|
|
45
|
+
return errorResponse(403, {
|
|
46
|
+
code: 'resource_mismatch',
|
|
47
|
+
message: 'Token was not issued for this resource',
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
// Verify token was issued for the current price
|
|
51
|
+
let currentAmount;
|
|
52
|
+
try {
|
|
53
|
+
currentAmount = typeof config.amount === 'function'
|
|
54
|
+
? await Promise.resolve(config.amount(req))
|
|
55
|
+
: config.amount;
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
return errorResponse(500, {
|
|
59
|
+
code: 'pricing_error',
|
|
60
|
+
message: 'Failed to determine price',
|
|
61
|
+
details: err instanceof Error ? err.message : String(err),
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
if (tokenResult.amount !== currentAmount || tokenResult.currency !== config.currency) {
|
|
65
|
+
return errorResponse(403, {
|
|
66
|
+
code: 'amount_mismatch',
|
|
67
|
+
message: 'Token was not issued for this price',
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// Verify payment proof (skip in preview/sandbox mode)
|
|
71
|
+
const isPreview = is_preview_environment();
|
|
72
|
+
if (!isPreview) {
|
|
73
|
+
if (!verifyPreimage(parsed.preimage, tokenResult.paymentHash)) {
|
|
74
|
+
return errorResponse(401, {
|
|
75
|
+
code: 'invalid_payment_proof',
|
|
76
|
+
message: 'Invalid payment preimage',
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
// Payment verified — call the inner handler
|
|
81
|
+
return handler(req, context);
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Build the 402 Payment Required response with a Lightning invoice.
|
|
86
|
+
* Creates a checkout on the MDK backend for dashboard visibility,
|
|
87
|
+
* generates an invoice via the local Lightning node, and signs an MDK402 token.
|
|
88
|
+
*/
|
|
89
|
+
async function create402Response(req, config, accessToken) {
|
|
90
|
+
// Resolve dynamic pricing
|
|
91
|
+
let amount;
|
|
92
|
+
try {
|
|
93
|
+
amount = typeof config.amount === 'function'
|
|
94
|
+
? await Promise.resolve(config.amount(req))
|
|
95
|
+
: config.amount;
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
return errorResponse(500, {
|
|
99
|
+
code: 'pricing_error',
|
|
100
|
+
message: 'Failed to determine price',
|
|
101
|
+
details: err instanceof Error ? err.message : String(err),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
const expirySeconds = config.expirySeconds ?? DEFAULT_EXPIRY_SECONDS;
|
|
105
|
+
const isPreview = is_preview_environment();
|
|
106
|
+
try {
|
|
107
|
+
const client = createMoneyDevKitClient();
|
|
108
|
+
const node = createMoneyDevKitNode();
|
|
109
|
+
// 1. Create checkout on MDK backend (gives dashboard visibility)
|
|
110
|
+
const checkout = await client.checkouts.create({
|
|
111
|
+
amount,
|
|
112
|
+
currency: config.currency,
|
|
113
|
+
metadata: {
|
|
114
|
+
source: '402',
|
|
115
|
+
resource: req.url,
|
|
116
|
+
...(isPreview ? { sandbox: 'true' } : {}),
|
|
117
|
+
},
|
|
118
|
+
}, node.id);
|
|
119
|
+
// The checkout should be auto-confirmed for AMOUNT type without customer data
|
|
120
|
+
if (checkout.status !== 'CONFIRMED') {
|
|
121
|
+
return errorResponse(502, {
|
|
122
|
+
code: 'checkout_creation_failed',
|
|
123
|
+
message: `Unexpected checkout status: ${checkout.status}`,
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
// 2. Create Lightning invoice with matching expiry
|
|
127
|
+
const invoiceResult = checkout.invoiceScid
|
|
128
|
+
? node.invoices.createWithScid(checkout.invoiceScid, checkout.invoiceAmountSats, expirySeconds)
|
|
129
|
+
: node.invoices.create(checkout.invoiceAmountSats, expirySeconds);
|
|
130
|
+
// 3. Register invoice with backend
|
|
131
|
+
const pendingCheckout = await client.checkouts.registerInvoice({
|
|
132
|
+
paymentHash: invoiceResult.paymentHash,
|
|
133
|
+
invoice: invoiceResult.invoice,
|
|
134
|
+
invoiceExpiresAt: invoiceResult.expiresAt,
|
|
135
|
+
checkoutId: checkout.id,
|
|
136
|
+
nodeId: node.id,
|
|
137
|
+
scid: invoiceResult.scid,
|
|
138
|
+
});
|
|
139
|
+
// 4. Create signed MDK402 token bound to this endpoint
|
|
140
|
+
const expiresAt = Math.floor(invoiceResult.expiresAt.getTime() / 1000);
|
|
141
|
+
const amountSats = pendingCheckout.invoiceAmountSats ?? checkout.invoiceAmountSats ?? 0;
|
|
142
|
+
const resource = `${req.method}:${new URL(req.url).pathname}`;
|
|
143
|
+
const token = createMDK402Token({
|
|
144
|
+
paymentHash: invoiceResult.paymentHash,
|
|
145
|
+
amountSats,
|
|
146
|
+
expiresAt,
|
|
147
|
+
accessToken,
|
|
148
|
+
resource,
|
|
149
|
+
amount,
|
|
150
|
+
currency: config.currency,
|
|
151
|
+
});
|
|
152
|
+
// 5. Build 402 response
|
|
153
|
+
const wwwAuthenticate = `MDK402 token="${token}", invoice="${invoiceResult.invoice}"`;
|
|
154
|
+
return new Response(JSON.stringify({
|
|
155
|
+
error: {
|
|
156
|
+
code: 'payment_required',
|
|
157
|
+
message: 'Payment required',
|
|
158
|
+
},
|
|
159
|
+
token,
|
|
160
|
+
invoice: invoiceResult.invoice,
|
|
161
|
+
paymentHash: invoiceResult.paymentHash,
|
|
162
|
+
amountSats,
|
|
163
|
+
expiresAt,
|
|
164
|
+
}), {
|
|
165
|
+
status: 402,
|
|
166
|
+
headers: {
|
|
167
|
+
'content-type': 'application/json',
|
|
168
|
+
'www-authenticate': wwwAuthenticate,
|
|
169
|
+
},
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
catch (err) {
|
|
173
|
+
return errorResponse(502, {
|
|
174
|
+
code: 'checkout_creation_failed',
|
|
175
|
+
message: err instanceof Error ? err.message : 'Failed to create checkout or invoice',
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/** Build a JSON error response following the MdkError format. */
|
|
180
|
+
function errorResponse(status, error) {
|
|
181
|
+
return new Response(JSON.stringify({ error }), {
|
|
182
|
+
status,
|
|
183
|
+
headers: { 'content-type': 'application/json' },
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=with-payment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"with-payment.js","sourceRoot":"","sources":["../../src/mdk402/with-payment.ts"],"names":[],"mappings":"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"}
|
package/dist/route.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { timingSafeEqual } from 'crypto';
|
|
1
2
|
import { z } from 'zod';
|
|
2
3
|
import { handleBalance } from './handlers/balance';
|
|
3
4
|
import { handleConfirmCheckout, handleCreateCheckout, handleGetCheckout, handleCreateCheckoutFromUrl, parseCheckoutQueryParams, verifyCheckoutSignature, sanitizeCheckoutPath, } from './handlers/checkout';
|
|
@@ -70,7 +71,9 @@ function validateWebhookSecret(request, { silent = false } = {}) {
|
|
|
70
71
|
return jsonResponse(500, { error: 'Webhook secret is not configured.' });
|
|
71
72
|
}
|
|
72
73
|
const providedSecret = request.headers.get(WEBHOOK_SECRET_HEADER);
|
|
73
|
-
if (!providedSecret ||
|
|
74
|
+
if (!providedSecret ||
|
|
75
|
+
providedSecret.length !== expectedSecret.length ||
|
|
76
|
+
!timingSafeEqual(Buffer.from(providedSecret), Buffer.from(expectedSecret))) {
|
|
74
77
|
if (!silent) {
|
|
75
78
|
log('Unauthorized webhook request received. Please confirm that MDK_ACCESS_TOKEN is set to the correct value.');
|
|
76
79
|
}
|
package/dist/route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../src/route.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moneydevkit/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0-beta.0",
|
|
4
4
|
"description": "Shared moneydevkit checkout core utilities",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -28,6 +28,11 @@
|
|
|
28
28
|
"import": "./dist/route.js",
|
|
29
29
|
"default": "./dist/route.js"
|
|
30
30
|
},
|
|
31
|
+
"./mdk402": {
|
|
32
|
+
"types": "./dist/mdk402/index.d.ts",
|
|
33
|
+
"import": "./dist/mdk402/index.js",
|
|
34
|
+
"default": "./dist/mdk402/index.js"
|
|
35
|
+
},
|
|
31
36
|
"./package.json": "./package.json"
|
|
32
37
|
},
|
|
33
38
|
"files": [
|
|
@@ -70,6 +75,6 @@
|
|
|
70
75
|
"copy-css": "node scripts/copy-styles.mjs",
|
|
71
76
|
"clean": "rm -rf dist",
|
|
72
77
|
"typecheck": "tsc --noEmit",
|
|
73
|
-
"test": "npm run build && tsx --tsconfig tsconfig.test.json --test $(find tests -name '*.test.ts')"
|
|
78
|
+
"test": "npm run build && tsx --tsconfig tsconfig.test.json --experimental-test-module-mocks --test $(find tests -name '*.test.ts')"
|
|
74
79
|
}
|
|
75
80
|
}
|