@curless/hotel-storefront 0.35.0 → 0.35.1
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/card.generated.d.ts +1 -1
- package/dist/card.generated.js +2 -2
- package/dist/card.generated.js.map +1 -1
- package/dist/config.d.ts +11 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/huazhu/backend.d.ts.map +1 -1
- package/dist/huazhu/backend.js +81 -9
- package/dist/huazhu/backend.js.map +1 -1
- package/dist/huazhu/bookings.d.ts +2 -0
- package/dist/huazhu/bookings.d.ts.map +1 -1
- package/dist/huazhu/bookings.js.map +1 -1
- package/dist/huazhu/catalog.d.ts +7 -1
- package/dist/huazhu/catalog.d.ts.map +1 -1
- package/dist/huazhu/catalog.js +8 -4
- package/dist/huazhu/catalog.js.map +1 -1
- package/dist/huazhu/make.d.ts.map +1 -1
- package/dist/huazhu/make.js +44 -13
- package/dist/huazhu/make.js.map +1 -1
- package/dist/legal.d.ts.map +1 -1
- package/dist/legal.js +18 -6
- package/dist/legal.js.map +1 -1
- package/dist/payments/checkout.d.ts +27 -2
- package/dist/payments/checkout.d.ts.map +1 -1
- package/dist/payments/checkout.js +9 -0
- package/dist/payments/checkout.js.map +1 -1
- package/dist/payments/fake-stripe.d.ts +6 -3
- package/dist/payments/fake-stripe.d.ts.map +1 -1
- package/dist/payments/fake-stripe.js +35 -5
- package/dist/payments/fake-stripe.js.map +1 -1
- package/dist/payments/stripe-checkout.d.ts +9 -1
- package/dist/payments/stripe-checkout.d.ts.map +1 -1
- package/dist/payments/stripe-checkout.js +45 -5
- package/dist/payments/stripe-checkout.js.map +1 -1
- package/dist/server.d.ts +2 -2
- package/dist/server.js +2 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +4 -1
- package/dist/tools.js.map +1 -1
- package/dist/vocab.d.ts +8 -1
- package/dist/vocab.d.ts.map +1 -1
- package/dist/vocab.js +5 -2
- package/dist/vocab.js.map +1 -1
- package/package.json +1 -1
|
@@ -30,21 +30,41 @@ export type CheckoutOptions = {
|
|
|
30
30
|
*/
|
|
31
31
|
export type Checkout = {
|
|
32
32
|
readonly method: PaymentMethod;
|
|
33
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* A page for one stay, at the total the guest was shown. `ref` is the
|
|
35
|
+
* booking's distributorResId, `code` its confirmation code - both written on
|
|
36
|
+
* the payment, so it is found from either side.
|
|
37
|
+
*/
|
|
34
38
|
open(o: {
|
|
35
39
|
ref: string;
|
|
40
|
+
code?: string;
|
|
36
41
|
title: string;
|
|
37
42
|
amountMinor: number;
|
|
38
43
|
currency: string;
|
|
39
44
|
}): Promise<OpenedCheckout>;
|
|
40
45
|
state(sessionId: string): Promise<CheckoutState>;
|
|
46
|
+
/**
|
|
47
|
+
* What a paid page took, to be held to the quote before anything is booked
|
|
48
|
+
* (总线程, 2026-10-15). Undefined when it is not paid.
|
|
49
|
+
*/
|
|
50
|
+
paidAmount(sessionId: string): Promise<{
|
|
51
|
+
amountMinor: number;
|
|
52
|
+
currency: string;
|
|
53
|
+
} | undefined>;
|
|
41
54
|
close(sessionId: string): Promise<CheckoutState>;
|
|
42
|
-
refund
|
|
55
|
+
/** `key` names this refund among any others of the payment - see `StripeCheckout.refund`. */
|
|
56
|
+
refund(sessionId: string, reason: string, key?: string): Promise<{
|
|
43
57
|
requestId: string;
|
|
44
58
|
status: string;
|
|
45
59
|
}>;
|
|
46
60
|
/** requested, approved (on its way), refunded, failed or rejected. */
|
|
47
61
|
refundState(requestId: string): Promise<string>;
|
|
62
|
+
/**
|
|
63
|
+
* Writes more onto the payment once it is known - Huazhu's own order
|
|
64
|
+
* number, after the booking (总线程, 2026-10-15). Where a way of paying has
|
|
65
|
+
* nowhere to write it, it has no such call.
|
|
66
|
+
*/
|
|
67
|
+
annotate?(sessionId: string, notes: Record<string, string>): Promise<void>;
|
|
48
68
|
};
|
|
49
69
|
/** The gateway refused, or could not be reached - with what it said. */
|
|
50
70
|
export declare class CheckoutError extends Error {
|
|
@@ -65,12 +85,17 @@ export declare class GatewayCheckout implements Checkout {
|
|
|
65
85
|
open(o: {
|
|
66
86
|
/** Ours, and the line's id at the gateway: the booking's `distributorResId`. */
|
|
67
87
|
ref: string;
|
|
88
|
+
code?: string;
|
|
68
89
|
title: string;
|
|
69
90
|
amountMinor: number;
|
|
70
91
|
currency: string;
|
|
71
92
|
}): Promise<OpenedCheckout>;
|
|
72
93
|
/** Whether it has been paid, is still open, or is closed without payment. */
|
|
73
94
|
state(sessionId: string): Promise<CheckoutState>;
|
|
95
|
+
paidAmount(sessionId: string): Promise<{
|
|
96
|
+
amountMinor: number;
|
|
97
|
+
currency: string;
|
|
98
|
+
} | undefined>;
|
|
74
99
|
/**
|
|
75
100
|
* Closes an unpaid checkout and its card page - so a page left past its
|
|
76
101
|
* deadline cannot be paid (总线程, 2026-10-12). Answers what it is now: a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/payments/checkout.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,qEAAqE;AACrE,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEvD,MAAM,MAAM,cAAc,GAAG;IAC3B,0FAA0F;IAC1F,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,qDAAqD;IACrD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B
|
|
1
|
+
{"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../../src/payments/checkout.ts"],"names":[],"mappings":"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"}
|
|
@@ -92,6 +92,15 @@ export class GatewayCheckout {
|
|
|
92
92
|
const s = await this.call('GET', this.session(sessionId));
|
|
93
93
|
return STATE[String(s?.status)] ?? 'open';
|
|
94
94
|
}
|
|
95
|
+
async paidAmount(sessionId) {
|
|
96
|
+
const s = await this.call('GET', this.session(sessionId));
|
|
97
|
+
if (STATE[String(s?.status)] !== 'paid')
|
|
98
|
+
return undefined;
|
|
99
|
+
const total = s.totals?.find((t) => t.type === 'total')?.amount;
|
|
100
|
+
return typeof total === 'number' && s.currency
|
|
101
|
+
? { amountMinor: total, currency: s.currency.toUpperCase() }
|
|
102
|
+
: undefined;
|
|
103
|
+
}
|
|
95
104
|
/**
|
|
96
105
|
* Closes an unpaid checkout and its card page - so a page left past its
|
|
97
106
|
* deadline cannot be paid (总线程, 2026-10-12). Answers what it is now: a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/payments/checkout.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,4EAA4E;AAC5E,2EAA2E;AAC3E,8CAA8C;AAC9C,EAAE;AACF,4EAA4E;AAC5E,gFAAgF;AAChF,8EAA8E;AAC9E,6CAA6C;
|
|
1
|
+
{"version":3,"file":"checkout.js","sourceRoot":"","sources":["../../src/payments/checkout.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ type Session = {
|
|
|
3
3
|
url: string;
|
|
4
4
|
status: 'open' | 'complete' | 'expired';
|
|
5
5
|
payment_status: 'paid' | 'unpaid';
|
|
6
|
-
|
|
6
|
+
amount_total: number;
|
|
7
7
|
currency: string;
|
|
8
8
|
ref?: string;
|
|
9
9
|
expiresAt: number;
|
|
@@ -23,10 +23,13 @@ export declare const createFakeStripe: (opts: {
|
|
|
23
23
|
method: string;
|
|
24
24
|
path: string;
|
|
25
25
|
form: Record<string, string>;
|
|
26
|
+
key?: string;
|
|
26
27
|
}[];
|
|
28
|
+
/** Make writing onto a payment fail - Stripe having a bad moment. */
|
|
29
|
+
failNotes: boolean;
|
|
27
30
|
fetch: typeof fetch;
|
|
28
|
-
/** The guest pays on the page. */
|
|
29
|
-
pay(id: string): void;
|
|
31
|
+
/** The guest pays on the page - `amount` to make it take other than it asked (a fault). */
|
|
32
|
+
pay(id: string, amount?: number): void;
|
|
30
33
|
/** The money arrives back on the card. */
|
|
31
34
|
settleRefunds(): void;
|
|
32
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-stripe.d.ts","sourceRoot":"","sources":["../../src/payments/fake-stripe.ts"],"names":[],"mappings":"AAMA,KAAK,OAAO,GAAG;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACxC,cAAc,EAAE,MAAM,GAAG,QAAQ,CAAC;IAClC,
|
|
1
|
+
{"version":3,"file":"fake-stripe.d.ts","sourceRoot":"","sources":["../../src/payments/fake-stripe.ts"],"names":[],"mappings":"AAMA,KAAK,OAAO,GAAG;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACxC,cAAc,EAAE,MAAM,GAAG,QAAQ,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAAC;AAEF,KAAK,MAAM,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;CAAE,CAAC;AAEjG,eAAO,MAAM,gBAAgB,GAAI,MAAM;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE;;;;gBAIhC,MAAM;cAAQ,MAAM;cAAQ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;cAAQ,MAAM;;IAwFrF,qEAAqE;eAIpD,OAAO;WAOhB,OAAO,KAAK;IACpB,2FAA2F;YACnF,MAAM,WAAW,MAAM;IAQ/B,0CAA0C;;CAK7C,CAAC"}
|
|
@@ -5,18 +5,32 @@
|
|
|
5
5
|
// payment that was made.
|
|
6
6
|
export const createFakeStripe = (opts) => {
|
|
7
7
|
const sessions = new Map();
|
|
8
|
+
const state = { failNotes: false };
|
|
8
9
|
const refunds = new Map();
|
|
9
10
|
const calls = [];
|
|
10
11
|
let seq = 0;
|
|
11
12
|
const json = (status, body) => new Response(JSON.stringify(body), { status, headers: { 'content-type': 'application/json' } });
|
|
12
13
|
const err = (status, message) => json(status, { error: { message } });
|
|
14
|
+
const answered = new Map();
|
|
13
15
|
const handle = async (url, init) => {
|
|
14
16
|
const method = (init.method ?? 'GET').toUpperCase();
|
|
15
17
|
const path = url.pathname;
|
|
16
18
|
const form = Object.fromEntries(new URLSearchParams(String(init.body ?? '')));
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
const headers = new Headers(init.headers);
|
|
20
|
+
const key = headers.get('idempotency-key') ?? undefined;
|
|
21
|
+
calls.push({ method, path, form, ...(key ? { key } : {}) });
|
|
22
|
+
if (headers.get('authorization') !== `Bearer ${opts.apiKey}`)
|
|
19
23
|
return err(401, 'Invalid API Key provided');
|
|
24
|
+
// Stripe's own rule: a repeat of a key gets the first answer, nothing new.
|
|
25
|
+
const seen = key ? answered.get(key) : undefined;
|
|
26
|
+
if (seen)
|
|
27
|
+
return new Response(seen.body, { status: seen.status });
|
|
28
|
+
const res = await route(method, path, form);
|
|
29
|
+
if (key && method === 'POST')
|
|
30
|
+
answered.set(key, { status: res.status, body: await res.clone().text() });
|
|
31
|
+
return res;
|
|
32
|
+
};
|
|
33
|
+
const route = async (method, path, form) => {
|
|
20
34
|
if (method === 'POST' && path === '/v1/checkout/sessions') {
|
|
21
35
|
const amount = Number(form['line_items[0][price_data][unit_amount]']);
|
|
22
36
|
if (!(amount > 0))
|
|
@@ -27,7 +41,7 @@ export const createFakeStripe = (opts) => {
|
|
|
27
41
|
url: `https://checkout.stripe.com/c/pay/${id}`,
|
|
28
42
|
status: 'open',
|
|
29
43
|
payment_status: 'unpaid',
|
|
30
|
-
amount,
|
|
44
|
+
amount_total: amount,
|
|
31
45
|
currency: String(form['line_items[0][price_data][currency]']),
|
|
32
46
|
...(form['metadata[ref]'] ? { ref: form['metadata[ref]'] } : {}),
|
|
33
47
|
expiresAt: Number(form.expires_at),
|
|
@@ -61,6 +75,13 @@ export const createFakeStripe = (opts) => {
|
|
|
61
75
|
refunds.set(id, r);
|
|
62
76
|
return json(200, r);
|
|
63
77
|
}
|
|
78
|
+
const intentPath = /^\/v1\/payment_intents\/([^/]+)$/.exec(path);
|
|
79
|
+
if (method === 'POST' && intentPath) {
|
|
80
|
+
if (state.failNotes)
|
|
81
|
+
return err(500, 'An unknown error occurred');
|
|
82
|
+
const paid = [...sessions.values()].find((x) => x.payment_intent === intentPath[1]);
|
|
83
|
+
return paid ? json(200, { id: intentPath[1] }) : err(404, 'No such payment_intent');
|
|
84
|
+
}
|
|
64
85
|
const refundPath = /^\/v1\/refunds\/([^/]+)$/.exec(path);
|
|
65
86
|
if (method === 'GET' && refundPath) {
|
|
66
87
|
const r = refunds.get(decodeURIComponent(refundPath[1] ?? ''));
|
|
@@ -72,14 +93,23 @@ export const createFakeStripe = (opts) => {
|
|
|
72
93
|
sessions,
|
|
73
94
|
refunds,
|
|
74
95
|
calls,
|
|
96
|
+
/** Make writing onto a payment fail - Stripe having a bad moment. */
|
|
97
|
+
get failNotes() {
|
|
98
|
+
return state.failNotes;
|
|
99
|
+
},
|
|
100
|
+
set failNotes(v) {
|
|
101
|
+
state.failNotes = v;
|
|
102
|
+
},
|
|
75
103
|
fetch: (async (input, init) => handle(new URL(String(input instanceof Request ? input.url : input)), init ?? {})),
|
|
76
|
-
/** The guest pays on the page. */
|
|
77
|
-
pay(id) {
|
|
104
|
+
/** The guest pays on the page - `amount` to make it take other than it asked (a fault). */
|
|
105
|
+
pay(id, amount) {
|
|
78
106
|
const s = sessions.get(id);
|
|
79
107
|
if (!s || s.status !== 'open')
|
|
80
108
|
throw new Error(`cannot pay ${id}`);
|
|
81
109
|
s.status = 'complete';
|
|
82
110
|
s.payment_status = 'paid';
|
|
111
|
+
if (amount !== undefined)
|
|
112
|
+
s.amount_total = amount;
|
|
83
113
|
s.payment_intent = `pi_test_${++seq}`;
|
|
84
114
|
},
|
|
85
115
|
/** The money arrives back on the card. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fake-stripe.js","sourceRoot":"","sources":["../../src/payments/fake-stripe.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,yBAAyB;AAgBzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAwB,EAAE,EAAE;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"fake-stripe.js","sourceRoot":"","sources":["../../src/payments/fake-stripe.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,2EAA2E;AAC3E,yBAAyB;AAgBzB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAwB,EAAE,EAAE;IAC3D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,KAAK,GAAmF,EAAE,CAAC;IACjG,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,MAAM,IAAI,GAAG,CAAC,MAAc,EAAE,IAAa,EAAE,EAAE,CAC7C,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAClG,MAAM,GAAG,GAAG,CAAC,MAAc,EAAE,OAAe,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAEtF,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4C,CAAC;IACrE,MAAM,MAAM,GAAG,KAAK,EAAE,GAAQ,EAAE,IAAiB,EAAqB,EAAE;QACtE,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,SAAS,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,UAAU,IAAI,CAAC,MAAM,EAAE;YAC1D,OAAO,GAAG,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;QAC9C,2EAA2E;QAC3E,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,IAAI,IAAI;YAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAClE,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,GAAG,IAAI,MAAM,KAAK,MAAM;YAC1B,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5E,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,KAAK,EACjB,MAAc,EACd,IAAY,EACZ,IAA4B,EACT,EAAE;QACrB,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;gBAAE,OAAO,GAAG,CAAC,GAAG,EAAE,8BAA8B,CAAC,CAAC;YACnE,MAAM,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAY;gBACjB,EAAE;gBACF,GAAG,EAAE,qCAAqC,EAAE,EAAE;gBAC9C,MAAM,EAAE,MAAM;gBACd,cAAc,EAAE,QAAQ;gBACxB,YAAY,EAAE,MAAM;gBACpB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;gBAC7D,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBAClC,cAAc,EAAE,IAAI;aACrB,CAAC;YACF,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACpB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,WAAW,GAAG,gDAAgD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChF,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,CAAC;gBAAE,OAAO,GAAG,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;YACpD,IAAI,MAAM,KAAK,KAAK;gBAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;oBACrB,OAAO,GAAG,CAAC,GAAG,EAAE,8DAA8D,CAAC,CAAC;gBAClF,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;gBACrB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QACD,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC;YAC1F,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;gBAAE,OAAO,GAAG,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;YACnF,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc,CAAC;gBAC7E,OAAO,GAAG,CAAC,GAAG,EAAE,mCAAmC,CAAC,CAAC;YACvD,MAAM,EAAE,GAAG,WAAW,EAAE,GAAG,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAW,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,UAAU,GAAG,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,IAAI,MAAM,KAAK,MAAM,IAAI,UAAU,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,SAAS;gBAAE,OAAO,GAAG,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,wBAAwB,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,UAAU,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,KAAK,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,CAAC,GAAG,EAAE,6BAA6B,MAAM,KAAK,IAAI,GAAG,CAAC,CAAC;IACnE,CAAC,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,OAAO;QACP,KAAK;QACL,qEAAqE;QACrE,IAAI,SAAS;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QACzB,CAAC;QACD,IAAI,SAAS,CAAC,CAAU;YACtB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,KAA6B,EAAE,IAAkB,EAAE,EAAE,CAClE,MAAM,CACJ,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAC7D,IAAI,IAAI,EAAE,CACX,CAAiB;QACpB,2FAA2F;QAC3F,GAAG,CAAC,EAAU,EAAE,MAAe;YAC7B,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACnE,CAAC,CAAC,MAAM,GAAG,UAAU,CAAC;YACtB,CAAC,CAAC,cAAc,GAAG,MAAM,CAAC;YAC1B,IAAI,MAAM,KAAK,SAAS;gBAAE,CAAC,CAAC,YAAY,GAAG,MAAM,CAAC;YAClD,CAAC,CAAC,cAAc,GAAG,WAAW,EAAE,GAAG,EAAE,CAAC;QACxC,CAAC;QACD,0CAA0C;QAC1C,aAAa;YACX,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,EAAE;gBAAE,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS;oBAAE,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC;QACvF,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -19,18 +19,26 @@ export declare class StripeCheckout implements Checkout {
|
|
|
19
19
|
/** A Checkout page for one stay, at the total the guest was shown. */
|
|
20
20
|
open(o: {
|
|
21
21
|
ref: string;
|
|
22
|
+
code?: string;
|
|
22
23
|
title: string;
|
|
23
24
|
amountMinor: number;
|
|
24
25
|
currency: string;
|
|
25
26
|
}): Promise<OpenedCheckout>;
|
|
26
27
|
state(sessionId: string): Promise<CheckoutState>;
|
|
28
|
+
/** Only a page Stripe calls paid - `payment_status: paid`, not `complete` alone. */
|
|
29
|
+
paidAmount(sessionId: string): Promise<{
|
|
30
|
+
amountMinor: number;
|
|
31
|
+
currency: string;
|
|
32
|
+
} | undefined>;
|
|
27
33
|
/** Expires an unpaid page; one paid in the last second answers `paid`, and that money is the caller's. */
|
|
28
34
|
close(sessionId: string): Promise<CheckoutState>;
|
|
29
35
|
/** All of it back - a refund of the payment the page took. */
|
|
30
|
-
refund(sessionId: string, reason: string): Promise<{
|
|
36
|
+
refund(sessionId: string, reason: string, key?: string): Promise<{
|
|
31
37
|
requestId: string;
|
|
32
38
|
status: string;
|
|
33
39
|
}>;
|
|
40
|
+
/** Onto the PaymentIntent the page made - where the dashboard shows it beside the money. */
|
|
41
|
+
annotate(sessionId: string, notes: Record<string, string>): Promise<void>;
|
|
34
42
|
refundState(requestId: string): Promise<string>;
|
|
35
43
|
}
|
|
36
44
|
//# sourceMappingURL=stripe-checkout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stripe-checkout.d.ts","sourceRoot":"","sources":["../../src/payments/stripe-checkout.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5F,MAAM,MAAM,qBAAqB,GAAG;IAClC,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AA6BF,qBAAa,cAAe,YAAW,QAAQ;IAKjC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAED,IAAI,EAAE,qBAAqB;
|
|
1
|
+
{"version":3,"file":"stripe-checkout.d.ts","sourceRoot":"","sources":["../../src/payments/stripe-checkout.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG5F,MAAM,MAAM,qBAAqB,GAAG;IAClC,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AA6BF,qBAAa,cAAe,YAAW,QAAQ;IAKjC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAU;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAED,IAAI,EAAE,qBAAqB;YAW1C,IAAI;IAkClB,sEAAsE;IAChE,IAAI,CAAC,CAAC,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,cAAc,CAAC;IAwCrB,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAMtD,oFAAoF;IAC9E,UAAU,CACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,CAAC;IAUjE,0GAA0G;IACpG,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAgBtD,8DAA8D;IACxD,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAyBjD,4FAA4F;IACtF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAczE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAOtD"}
|
|
@@ -33,12 +33,16 @@ export class StripeCheckout {
|
|
|
33
33
|
base;
|
|
34
34
|
constructor(opts) {
|
|
35
35
|
this.opts = opts;
|
|
36
|
+
// The test account's own key, shared with the gateway (robin, 2026-10-15:
|
|
37
|
+
// everything here is a test) - in test mode only.
|
|
36
38
|
if (!/^sk_test_/.test(opts.apiKey))
|
|
37
39
|
throw new CheckoutError('paying on Stripe directly takes a test-mode key only (sk_test_…) - no real card is charged here');
|
|
38
40
|
this.fetch = opts.fetch ?? globalThis.fetch;
|
|
39
41
|
this.base = (opts.apiBase ?? 'https://api.stripe.com').replace(/\/$/, '');
|
|
40
42
|
}
|
|
41
|
-
async call(method, path, form
|
|
43
|
+
async call(method, path, form,
|
|
44
|
+
/** Stripe answers a repeat of this key with the first answer - never a second page or refund. */
|
|
45
|
+
idempotencyKey) {
|
|
42
46
|
let res;
|
|
43
47
|
try {
|
|
44
48
|
res = await this.fetch(`${this.base}${path}`, {
|
|
@@ -46,6 +50,7 @@ export class StripeCheckout {
|
|
|
46
50
|
headers: {
|
|
47
51
|
authorization: `Bearer ${this.opts.apiKey}`,
|
|
48
52
|
...(form ? { 'content-type': 'application/x-www-form-urlencoded' } : {}),
|
|
53
|
+
...(idempotencyKey ? { 'idempotency-key': idempotencyKey } : {}),
|
|
49
54
|
},
|
|
50
55
|
...(form ? { body: new URLSearchParams(form).toString() } : {}),
|
|
51
56
|
signal: AbortSignal.timeout(this.opts.timeoutMs ?? 15_000),
|
|
@@ -69,6 +74,19 @@ export class StripeCheckout {
|
|
|
69
74
|
/** A Checkout page for one stay, at the total the guest was shown. */
|
|
70
75
|
async open(o) {
|
|
71
76
|
const back = this.opts.returnUrl;
|
|
77
|
+
// The booking it pays for - our code and Huazhu's distributorResId, its own
|
|
78
|
+
// key for the order - on the page and on the payment, so Stripe's
|
|
79
|
+
// dashboard and Huazhu's order are matched at a glance (总线程, 2026-10-15).
|
|
80
|
+
const ids = {
|
|
81
|
+
// One Stripe account for the gateway and this connector: which it was.
|
|
82
|
+
'metadata[source]': 'huazhu-mcp',
|
|
83
|
+
'payment_intent_data[metadata][source]': 'huazhu-mcp',
|
|
84
|
+
'metadata[distributor_res_id]': o.ref,
|
|
85
|
+
'payment_intent_data[metadata][distributor_res_id]': o.ref,
|
|
86
|
+
...(o.code
|
|
87
|
+
? { 'metadata[booking]': o.code, 'payment_intent_data[metadata][booking]': o.code }
|
|
88
|
+
: {}),
|
|
89
|
+
};
|
|
72
90
|
const s = await this.call('POST', '/v1/checkout/sessions', {
|
|
73
91
|
mode: 'payment',
|
|
74
92
|
'payment_method_types[0]': 'card',
|
|
@@ -76,14 +94,16 @@ export class StripeCheckout {
|
|
|
76
94
|
'line_items[0][price_data][currency]': o.currency.toLowerCase(),
|
|
77
95
|
'line_items[0][price_data][unit_amount]': String(o.amountMinor),
|
|
78
96
|
'line_items[0][price_data][product_data][name]': o.title.slice(0, 200),
|
|
79
|
-
// The booking it pays for: the distributorResId, found again on both sides.
|
|
80
97
|
client_reference_id: o.ref,
|
|
81
98
|
'metadata[ref]': o.ref,
|
|
82
99
|
'payment_intent_data[metadata][ref]': o.ref,
|
|
100
|
+
...ids,
|
|
83
101
|
success_url: `${back}${back.includes('?') ? '&' : '?'}paid=1`,
|
|
84
102
|
cancel_url: back,
|
|
85
103
|
expires_at: String(Math.floor(Date.now() / 1000) + PAGE_LIFE_S),
|
|
86
|
-
}
|
|
104
|
+
},
|
|
105
|
+
// One page a booking, however often it is asked for.
|
|
106
|
+
`hz-open-${o.ref}`);
|
|
87
107
|
if (!s?.id || !s.url)
|
|
88
108
|
throw new CheckoutError('Stripe opened no Checkout page');
|
|
89
109
|
return { sessionId: s.id, url: s.url };
|
|
@@ -91,6 +111,13 @@ export class StripeCheckout {
|
|
|
91
111
|
async state(sessionId) {
|
|
92
112
|
return stateOf(await this.call('GET', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}`));
|
|
93
113
|
}
|
|
114
|
+
/** Only a page Stripe calls paid - `payment_status: paid`, not `complete` alone. */
|
|
115
|
+
async paidAmount(sessionId) {
|
|
116
|
+
const s = await this.call('GET', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}`);
|
|
117
|
+
if (stateOf(s) !== 'paid' || typeof s.amount_total !== 'number' || !s.currency)
|
|
118
|
+
return undefined;
|
|
119
|
+
return { amountMinor: s.amount_total, currency: s.currency.toUpperCase() };
|
|
120
|
+
}
|
|
94
121
|
/** Expires an unpaid page; one paid in the last second answers `paid`, and that money is the caller's. */
|
|
95
122
|
async close(sessionId) {
|
|
96
123
|
try {
|
|
@@ -104,7 +131,7 @@ export class StripeCheckout {
|
|
|
104
131
|
}
|
|
105
132
|
}
|
|
106
133
|
/** All of it back - a refund of the payment the page took. */
|
|
107
|
-
async refund(sessionId, reason) {
|
|
134
|
+
async refund(sessionId, reason, key) {
|
|
108
135
|
const s = await this.call('GET', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}`);
|
|
109
136
|
const intent = typeof s.payment_intent === 'string' ? s.payment_intent : s.payment_intent?.id;
|
|
110
137
|
if (!intent)
|
|
@@ -113,11 +140,24 @@ export class StripeCheckout {
|
|
|
113
140
|
payment_intent: intent,
|
|
114
141
|
reason: 'requested_by_customer',
|
|
115
142
|
'metadata[why]': reason.slice(0, 450),
|
|
116
|
-
}
|
|
143
|
+
},
|
|
144
|
+
// One refund for each time the money is given back, however often that
|
|
145
|
+
// is asked for: keyed by the refund itself, not the payment alone - a
|
|
146
|
+
// second refund of the same payment (a fee kept, two parts) is not
|
|
147
|
+
// the first one again (总线程, 2026-10-15).
|
|
148
|
+
`hz-refund-${intent}-${key ?? 'full'}`);
|
|
117
149
|
if (!r?.id)
|
|
118
150
|
throw new CheckoutError('Stripe opened no refund');
|
|
119
151
|
return { requestId: r.id, status: REFUND[String(r.status)] ?? 'approved' };
|
|
120
152
|
}
|
|
153
|
+
/** Onto the PaymentIntent the page made - where the dashboard shows it beside the money. */
|
|
154
|
+
async annotate(sessionId, notes) {
|
|
155
|
+
const s = await this.call('GET', `/v1/checkout/sessions/${encodeURIComponent(sessionId)}`);
|
|
156
|
+
const intent = typeof s.payment_intent === 'string' ? s.payment_intent : s.payment_intent?.id;
|
|
157
|
+
if (!intent)
|
|
158
|
+
throw new CheckoutError('that Checkout page has no payment to write on');
|
|
159
|
+
await this.call('POST', `/v1/payment_intents/${encodeURIComponent(intent)}`, Object.fromEntries(Object.entries(notes).map(([k, v]) => [`metadata[${k}]`, v])));
|
|
160
|
+
}
|
|
121
161
|
async refundState(requestId) {
|
|
122
162
|
const r = await this.call('GET', `/v1/refunds/${encodeURIComponent(requestId)}`);
|
|
123
163
|
return REFUND[String(r.status)] ?? 'approved';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stripe-checkout.js","sourceRoot":"","sources":["../../src/payments/stripe-checkout.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,oCAAoC;AACpC,EAAE;AACF,6EAA6E;AAC7E,6EAA6E;AAC7E,+CAA+C;AAC/C,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,iEAAiE;AAGjE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAa9C,yGAAyG;AACzG,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,CAAC;AAE5B,0EAA0E;AAC1E,MAAM,MAAM,GAA2B;IACrC,OAAO,EAAE,UAAU;IACnB,eAAe,EAAE,UAAU;IAC3B,SAAS,EAAE,UAAU;IACrB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAUF,MAAM,OAAO,GAAG,CAAC,CAAU,EAAiB,EAAE,CAC5C,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,cAAc,KAAK,MAAM;IACpD,CAAC,CAAC,MAAM;IACR,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS;QACtB,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,MAAM,CAAC;AAEf,MAAM,OAAO,cAAc;IAKI;IAJpB,MAAM,GAAkB,MAAM,CAAC;IACvB,KAAK,CAAe;IACpB,IAAI,CAAS;IAE9B,YAA6B,IAA2B;QAA3B,SAAI,GAAJ,IAAI,CAAuB;QACtD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YAChC,MAAM,IAAI,aAAa,CACrB,iGAAiG,CAClG,CAAC;QACJ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IAEO,KAAK,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"stripe-checkout.js","sourceRoot":"","sources":["../../src/payments/stripe-checkout.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export declare const INITIALIZE_PER_MINUTE = 300;
|
|
|
28
28
|
* number. Found by reading the boot banner of a container that had just been
|
|
29
29
|
* deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
|
|
30
30
|
*/
|
|
31
|
-
export declare const VERSION = "0.35.
|
|
31
|
+
export declare const VERSION = "0.35.1";
|
|
32
32
|
/**
|
|
33
33
|
* The card's resource URI.
|
|
34
34
|
*
|
|
@@ -37,7 +37,7 @@ export declare const VERSION = "0.35.0";
|
|
|
37
37
|
* connector went storefront-v35 → v40 in a single day of UI work for exactly
|
|
38
38
|
* this reason.
|
|
39
39
|
*/
|
|
40
|
-
export declare const CARD_URI = "ui://curless/hotel/booking-
|
|
40
|
+
export declare const CARD_URI = "ui://curless/hotel/booking-v71.html";
|
|
41
41
|
/**
|
|
42
42
|
* The URI one deployment names its card by: `CARD_URI` with a short hash of
|
|
43
43
|
* everything a host caches under it - the card itself, and the hosts it may
|
package/dist/server.js
CHANGED
|
@@ -46,7 +46,7 @@ export const INITIALIZE_PER_MINUTE = 300;
|
|
|
46
46
|
* number. Found by reading the boot banner of a container that had just been
|
|
47
47
|
* deployed (2026-09-22): seventeen tools listed, and "0.7.0" above them.
|
|
48
48
|
*/
|
|
49
|
-
export const VERSION = '0.35.
|
|
49
|
+
export const VERSION = '0.35.1';
|
|
50
50
|
/**
|
|
51
51
|
* The card's resource URI.
|
|
52
52
|
*
|
|
@@ -55,7 +55,7 @@ export const VERSION = '0.35.0';
|
|
|
55
55
|
* connector went storefront-v35 → v40 in a single day of UI work for exactly
|
|
56
56
|
* this reason.
|
|
57
57
|
*/
|
|
58
|
-
export const CARD_URI = 'ui://curless/hotel/booking-
|
|
58
|
+
export const CARD_URI = 'ui://curless/hotel/booking-v71.html';
|
|
59
59
|
/** The card as it ships, hashed once - what a host caches under the URI. */
|
|
60
60
|
const CARD_HTML_SHA = createHash('sha256').update(HOTEL_CARD_HTML).digest('hex');
|
|
61
61
|
/**
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.js
CHANGED
|
@@ -1423,8 +1423,11 @@ const common = (deps, key) => {
|
|
|
1423
1423
|
// In a market each group says whether it needs a phone (`market.suppliers`).
|
|
1424
1424
|
...(caps.requiresPhone && !deps.backend.suppliers ? { phoneRequired: true } : {}),
|
|
1425
1425
|
...(deps.vocab.sandbox ? { sandbox: true } : {}),
|
|
1426
|
-
// The group's own test system: the card says "test", never "simulated"
|
|
1426
|
+
// The group's own test system: the card says "test", never "simulated" -
|
|
1427
|
+
// and where it sells rates paid in advance, that those are paid with a
|
|
1428
|
+
// test card, never that "nothing is paid" (华住, 2026-10-15).
|
|
1427
1429
|
...(deps.vocab.test ? { test: true } : {}),
|
|
1430
|
+
...(deps.vocab.test && caps.prepaid ? { testPays: true } : {}),
|
|
1428
1431
|
...(caps.programme ? { programme: caps.programme } : {}),
|
|
1429
1432
|
...(caps.codePrefix ? { codePrefix: caps.codePrefix } : {}),
|
|
1430
1433
|
// Sells rooms by the hour: the card draws its Overnight / By the hour
|