@downcity/services 0.1.67 → 0.1.69

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.
Files changed (55) hide show
  1. package/bin/accounts/index.d.ts +1 -5
  2. package/bin/accounts/index.d.ts.map +1 -1
  3. package/bin/accounts/index.js +1 -4
  4. package/bin/accounts/index.js.map +1 -1
  5. package/bin/balance/index.d.ts +1 -1
  6. package/bin/balance/index.d.ts.map +1 -1
  7. package/bin/balance/index.js +1 -1
  8. package/bin/balance/index.js.map +1 -1
  9. package/bin/balance/service.d.ts +0 -4
  10. package/bin/balance/service.d.ts.map +1 -1
  11. package/bin/balance/service.js +0 -6
  12. package/bin/balance/service.js.map +1 -1
  13. package/bin/billing/index.d.ts +1 -1
  14. package/bin/billing/index.d.ts.map +1 -1
  15. package/bin/billing/index.js +1 -1
  16. package/bin/billing/index.js.map +1 -1
  17. package/bin/billing/service.d.ts +0 -4
  18. package/bin/billing/service.d.ts.map +1 -1
  19. package/bin/billing/service.js +0 -6
  20. package/bin/billing/service.js.map +1 -1
  21. package/bin/index.d.ts +6 -6
  22. package/bin/index.d.ts.map +1 -1
  23. package/bin/index.js +5 -5
  24. package/bin/index.js.map +1 -1
  25. package/bin/payment/helpers.d.ts +68 -0
  26. package/bin/payment/helpers.d.ts.map +1 -0
  27. package/bin/payment/helpers.js +148 -0
  28. package/bin/payment/helpers.js.map +1 -0
  29. package/bin/payment/index.d.ts +10 -28
  30. package/bin/payment/index.d.ts.map +1 -1
  31. package/bin/payment/index.js +9 -890
  32. package/bin/payment/index.js.map +1 -1
  33. package/bin/payment/providers.d.ts +25 -0
  34. package/bin/payment/providers.d.ts.map +1 -0
  35. package/bin/payment/providers.js +415 -0
  36. package/bin/payment/providers.js.map +1 -0
  37. package/bin/payment/routes.d.ts +29 -0
  38. package/bin/payment/routes.d.ts.map +1 -0
  39. package/bin/payment/routes.js +394 -0
  40. package/bin/payment/routes.js.map +1 -0
  41. package/bin/payment/service.d.ts +448 -0
  42. package/bin/payment/service.d.ts.map +1 -0
  43. package/bin/payment/service.js +72 -0
  44. package/bin/payment/service.js.map +1 -0
  45. package/bin/payment/types.d.ts +11 -18
  46. package/bin/payment/types.d.ts.map +1 -1
  47. package/bin/usage/index.d.ts +3 -174
  48. package/bin/usage/index.d.ts.map +1 -1
  49. package/bin/usage/index.js +2 -117
  50. package/bin/usage/index.js.map +1 -1
  51. package/bin/usage/service.d.ts +353 -0
  52. package/bin/usage/service.d.ts.map +1 -0
  53. package/bin/usage/service.js +140 -0
  54. package/bin/usage/service.js.map +1 -0
  55. package/package.json +2 -2
@@ -0,0 +1,448 @@
1
+ /**
2
+ * Downcity 官方 Payment 统一服务。
3
+ *
4
+ * 关键点(中文)
5
+ * - payment 是唯一支付服务,Stripe / Creem / Dodo / Waffo 都只是 provider。
6
+ * - 统一负责 checkout、本地支付记录、webhook 幂等、状态同步和 balance 入账。
7
+ * - 所有 provider 共用 `/v1/payment/*` 路由和统一 payments/events 表。
8
+ */
9
+ import { InstallableService, type ServiceInstallContext } from "@downcity/city";
10
+ import type { PaymentProvider, PaymentServiceOptions } from "./types.js";
11
+ /**
12
+ * 统一 Payment 服务。
13
+ */
14
+ export declare class PaymentService extends InstallableService {
15
+ readonly id = "payment";
16
+ readonly name = "Payment";
17
+ readonly version = "0.2.0";
18
+ readonly schema: {
19
+ payments: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
20
+ name: "service_payment_payments";
21
+ schema: undefined;
22
+ columns: {
23
+ payment_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
24
+ name: "payment_id";
25
+ tableName: "service_payment_payments";
26
+ dataType: "string";
27
+ columnType: "SQLiteText";
28
+ data: string;
29
+ driverParam: string;
30
+ notNull: true;
31
+ hasDefault: false;
32
+ isPrimaryKey: true;
33
+ isAutoincrement: false;
34
+ hasRuntimeDefault: false;
35
+ enumValues: [string, ...string[]];
36
+ baseColumn: never;
37
+ identity: undefined;
38
+ generated: undefined;
39
+ }, {}, {
40
+ length: number | undefined;
41
+ }>;
42
+ provider: import("drizzle-orm/sqlite-core").SQLiteColumn<{
43
+ name: "provider";
44
+ tableName: "service_payment_payments";
45
+ dataType: "string";
46
+ columnType: "SQLiteText";
47
+ data: string;
48
+ driverParam: string;
49
+ notNull: true;
50
+ hasDefault: false;
51
+ isPrimaryKey: false;
52
+ isAutoincrement: false;
53
+ hasRuntimeDefault: false;
54
+ enumValues: [string, ...string[]];
55
+ baseColumn: never;
56
+ identity: undefined;
57
+ generated: undefined;
58
+ }, {}, {
59
+ length: number | undefined;
60
+ }>;
61
+ topup_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
62
+ name: "topup_id";
63
+ tableName: "service_payment_payments";
64
+ dataType: "string";
65
+ columnType: "SQLiteText";
66
+ data: string;
67
+ driverParam: string;
68
+ notNull: true;
69
+ hasDefault: false;
70
+ isPrimaryKey: false;
71
+ isAutoincrement: false;
72
+ hasRuntimeDefault: false;
73
+ enumValues: [string, ...string[]];
74
+ baseColumn: never;
75
+ identity: undefined;
76
+ generated: undefined;
77
+ }, {}, {
78
+ length: number | undefined;
79
+ }>;
80
+ user_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
81
+ name: "user_id";
82
+ tableName: "service_payment_payments";
83
+ dataType: "string";
84
+ columnType: "SQLiteText";
85
+ data: string;
86
+ driverParam: string;
87
+ notNull: true;
88
+ hasDefault: false;
89
+ isPrimaryKey: false;
90
+ isAutoincrement: false;
91
+ hasRuntimeDefault: false;
92
+ enumValues: [string, ...string[]];
93
+ baseColumn: never;
94
+ identity: undefined;
95
+ generated: undefined;
96
+ }, {}, {
97
+ length: number | undefined;
98
+ }>;
99
+ provider_session_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
100
+ name: "provider_session_id";
101
+ tableName: "service_payment_payments";
102
+ dataType: "string";
103
+ columnType: "SQLiteText";
104
+ data: string;
105
+ driverParam: string;
106
+ notNull: true;
107
+ hasDefault: false;
108
+ isPrimaryKey: false;
109
+ isAutoincrement: false;
110
+ hasRuntimeDefault: false;
111
+ enumValues: [string, ...string[]];
112
+ baseColumn: never;
113
+ identity: undefined;
114
+ generated: undefined;
115
+ }, {}, {
116
+ length: number | undefined;
117
+ }>;
118
+ provider_payment_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
119
+ name: "provider_payment_id";
120
+ tableName: "service_payment_payments";
121
+ dataType: "string";
122
+ columnType: "SQLiteText";
123
+ data: string;
124
+ driverParam: string;
125
+ notNull: true;
126
+ hasDefault: false;
127
+ isPrimaryKey: false;
128
+ isAutoincrement: false;
129
+ hasRuntimeDefault: false;
130
+ enumValues: [string, ...string[]];
131
+ baseColumn: never;
132
+ identity: undefined;
133
+ generated: undefined;
134
+ }, {}, {
135
+ length: number | undefined;
136
+ }>;
137
+ provider_order_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
138
+ name: "provider_order_id";
139
+ tableName: "service_payment_payments";
140
+ dataType: "string";
141
+ columnType: "SQLiteText";
142
+ data: string;
143
+ driverParam: string;
144
+ notNull: true;
145
+ hasDefault: false;
146
+ isPrimaryKey: false;
147
+ isAutoincrement: false;
148
+ hasRuntimeDefault: false;
149
+ enumValues: [string, ...string[]];
150
+ baseColumn: never;
151
+ identity: undefined;
152
+ generated: undefined;
153
+ }, {}, {
154
+ length: number | undefined;
155
+ }>;
156
+ amount: import("drizzle-orm/sqlite-core").SQLiteColumn<{
157
+ name: "amount";
158
+ tableName: "service_payment_payments";
159
+ dataType: "number";
160
+ columnType: "SQLiteInteger";
161
+ data: number;
162
+ driverParam: number;
163
+ notNull: true;
164
+ hasDefault: false;
165
+ isPrimaryKey: false;
166
+ isAutoincrement: false;
167
+ hasRuntimeDefault: false;
168
+ enumValues: undefined;
169
+ baseColumn: never;
170
+ identity: undefined;
171
+ generated: undefined;
172
+ }, {}, {}>;
173
+ currency: import("drizzle-orm/sqlite-core").SQLiteColumn<{
174
+ name: "currency";
175
+ tableName: "service_payment_payments";
176
+ dataType: "string";
177
+ columnType: "SQLiteText";
178
+ data: string;
179
+ driverParam: string;
180
+ notNull: true;
181
+ hasDefault: false;
182
+ isPrimaryKey: false;
183
+ isAutoincrement: false;
184
+ hasRuntimeDefault: false;
185
+ enumValues: [string, ...string[]];
186
+ baseColumn: never;
187
+ identity: undefined;
188
+ generated: undefined;
189
+ }, {}, {
190
+ length: number | undefined;
191
+ }>;
192
+ status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
193
+ name: "status";
194
+ tableName: "service_payment_payments";
195
+ dataType: "string";
196
+ columnType: "SQLiteText";
197
+ data: string;
198
+ driverParam: string;
199
+ notNull: true;
200
+ hasDefault: false;
201
+ isPrimaryKey: false;
202
+ isAutoincrement: false;
203
+ hasRuntimeDefault: false;
204
+ enumValues: [string, ...string[]];
205
+ baseColumn: never;
206
+ identity: undefined;
207
+ generated: undefined;
208
+ }, {}, {
209
+ length: number | undefined;
210
+ }>;
211
+ checkout_url: import("drizzle-orm/sqlite-core").SQLiteColumn<{
212
+ name: "checkout_url";
213
+ tableName: "service_payment_payments";
214
+ dataType: "string";
215
+ columnType: "SQLiteText";
216
+ data: string;
217
+ driverParam: string;
218
+ notNull: true;
219
+ hasDefault: false;
220
+ isPrimaryKey: false;
221
+ isAutoincrement: false;
222
+ hasRuntimeDefault: false;
223
+ enumValues: [string, ...string[]];
224
+ baseColumn: never;
225
+ identity: undefined;
226
+ generated: undefined;
227
+ }, {}, {
228
+ length: number | undefined;
229
+ }>;
230
+ metadata_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
231
+ name: "metadata_json";
232
+ tableName: "service_payment_payments";
233
+ dataType: "string";
234
+ columnType: "SQLiteText";
235
+ data: string;
236
+ driverParam: string;
237
+ notNull: true;
238
+ hasDefault: false;
239
+ isPrimaryKey: false;
240
+ isAutoincrement: false;
241
+ hasRuntimeDefault: false;
242
+ enumValues: [string, ...string[]];
243
+ baseColumn: never;
244
+ identity: undefined;
245
+ generated: undefined;
246
+ }, {}, {
247
+ length: number | undefined;
248
+ }>;
249
+ created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
250
+ name: "created_at";
251
+ tableName: "service_payment_payments";
252
+ dataType: "string";
253
+ columnType: "SQLiteText";
254
+ data: string;
255
+ driverParam: string;
256
+ notNull: true;
257
+ hasDefault: false;
258
+ isPrimaryKey: false;
259
+ isAutoincrement: false;
260
+ hasRuntimeDefault: false;
261
+ enumValues: [string, ...string[]];
262
+ baseColumn: never;
263
+ identity: undefined;
264
+ generated: undefined;
265
+ }, {}, {
266
+ length: number | undefined;
267
+ }>;
268
+ updated_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
269
+ name: "updated_at";
270
+ tableName: "service_payment_payments";
271
+ dataType: "string";
272
+ columnType: "SQLiteText";
273
+ data: string;
274
+ driverParam: string;
275
+ notNull: true;
276
+ hasDefault: false;
277
+ isPrimaryKey: false;
278
+ isAutoincrement: false;
279
+ hasRuntimeDefault: false;
280
+ enumValues: [string, ...string[]];
281
+ baseColumn: never;
282
+ identity: undefined;
283
+ generated: undefined;
284
+ }, {}, {
285
+ length: number | undefined;
286
+ }>;
287
+ };
288
+ dialect: "sqlite";
289
+ }>;
290
+ events: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
291
+ name: "service_payment_events";
292
+ schema: undefined;
293
+ columns: {
294
+ event_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
295
+ name: "event_id";
296
+ tableName: "service_payment_events";
297
+ dataType: "string";
298
+ columnType: "SQLiteText";
299
+ data: string;
300
+ driverParam: string;
301
+ notNull: true;
302
+ hasDefault: false;
303
+ isPrimaryKey: true;
304
+ isAutoincrement: false;
305
+ hasRuntimeDefault: false;
306
+ enumValues: [string, ...string[]];
307
+ baseColumn: never;
308
+ identity: undefined;
309
+ generated: undefined;
310
+ }, {}, {
311
+ length: number | undefined;
312
+ }>;
313
+ provider: import("drizzle-orm/sqlite-core").SQLiteColumn<{
314
+ name: "provider";
315
+ tableName: "service_payment_events";
316
+ dataType: "string";
317
+ columnType: "SQLiteText";
318
+ data: string;
319
+ driverParam: string;
320
+ notNull: true;
321
+ hasDefault: false;
322
+ isPrimaryKey: false;
323
+ isAutoincrement: false;
324
+ hasRuntimeDefault: false;
325
+ enumValues: [string, ...string[]];
326
+ baseColumn: never;
327
+ identity: undefined;
328
+ generated: undefined;
329
+ }, {}, {
330
+ length: number | undefined;
331
+ }>;
332
+ type: import("drizzle-orm/sqlite-core").SQLiteColumn<{
333
+ name: "type";
334
+ tableName: "service_payment_events";
335
+ dataType: "string";
336
+ columnType: "SQLiteText";
337
+ data: string;
338
+ driverParam: string;
339
+ notNull: true;
340
+ hasDefault: false;
341
+ isPrimaryKey: false;
342
+ isAutoincrement: false;
343
+ hasRuntimeDefault: false;
344
+ enumValues: [string, ...string[]];
345
+ baseColumn: never;
346
+ identity: undefined;
347
+ generated: undefined;
348
+ }, {}, {
349
+ length: number | undefined;
350
+ }>;
351
+ payload_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
352
+ name: "payload_json";
353
+ tableName: "service_payment_events";
354
+ dataType: "string";
355
+ columnType: "SQLiteText";
356
+ data: string;
357
+ driverParam: string;
358
+ notNull: true;
359
+ hasDefault: false;
360
+ isPrimaryKey: false;
361
+ isAutoincrement: false;
362
+ hasRuntimeDefault: false;
363
+ enumValues: [string, ...string[]];
364
+ baseColumn: never;
365
+ identity: undefined;
366
+ generated: undefined;
367
+ }, {}, {
368
+ length: number | undefined;
369
+ }>;
370
+ sync_status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
371
+ name: "sync_status";
372
+ tableName: "service_payment_events";
373
+ dataType: "string";
374
+ columnType: "SQLiteText";
375
+ data: string;
376
+ driverParam: string;
377
+ notNull: true;
378
+ hasDefault: false;
379
+ isPrimaryKey: false;
380
+ isAutoincrement: false;
381
+ hasRuntimeDefault: false;
382
+ enumValues: [string, ...string[]];
383
+ baseColumn: never;
384
+ identity: undefined;
385
+ generated: undefined;
386
+ }, {}, {
387
+ length: number | undefined;
388
+ }>;
389
+ sync_error: import("drizzle-orm/sqlite-core").SQLiteColumn<{
390
+ name: "sync_error";
391
+ tableName: "service_payment_events";
392
+ dataType: "string";
393
+ columnType: "SQLiteText";
394
+ data: string;
395
+ driverParam: string;
396
+ notNull: true;
397
+ hasDefault: false;
398
+ isPrimaryKey: false;
399
+ isAutoincrement: false;
400
+ hasRuntimeDefault: false;
401
+ enumValues: [string, ...string[]];
402
+ baseColumn: never;
403
+ identity: undefined;
404
+ generated: undefined;
405
+ }, {}, {
406
+ length: number | undefined;
407
+ }>;
408
+ created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
409
+ name: "created_at";
410
+ tableName: "service_payment_events";
411
+ dataType: "string";
412
+ columnType: "SQLiteText";
413
+ data: string;
414
+ driverParam: string;
415
+ notNull: true;
416
+ hasDefault: false;
417
+ isPrimaryKey: false;
418
+ isAutoincrement: false;
419
+ hasRuntimeDefault: false;
420
+ enumValues: [string, ...string[]];
421
+ baseColumn: never;
422
+ identity: undefined;
423
+ generated: undefined;
424
+ }, {}, {
425
+ length: number | undefined;
426
+ }>;
427
+ };
428
+ dialect: "sqlite";
429
+ }>;
430
+ };
431
+ private readonly options;
432
+ private readonly providers;
433
+ constructor(options: PaymentServiceOptions);
434
+ install(ctx: ServiceInstallContext): void;
435
+ /**
436
+ * 读取充值单。
437
+ */
438
+ readTopup(topup_id: string): Promise<import("./types.js").PaymentTopupRecord>;
439
+ /**
440
+ * 完成充值并入账。
441
+ */
442
+ finishTopup(topup_id: string, extra?: Record<string, unknown>): Promise<import("./types.js").PaymentTopupRecord>;
443
+ /**
444
+ * 获取已挂载的 provider 列表。
445
+ */
446
+ getProviders(): PaymentProvider[];
447
+ }
448
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/payment/service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAuB,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAIrG,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAazE;;GAEG;AACH,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,QAAQ,CAAC,EAAE,aAAa;IACxB,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAGb;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;gBAElC,OAAO,EAAE,qBAAqB;IAe1C,OAAO,CAAC,GAAG,EAAE,qBAAqB,GAAG,IAAI;IAIzC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM;IAI1B;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI7D;;OAEG;IACH,YAAY,IAAI,eAAe,EAAE;CAGlC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Downcity 官方 Payment 统一服务。
3
+ *
4
+ * 关键点(中文)
5
+ * - payment 是唯一支付服务,Stripe / Creem / Dodo / Waffo 都只是 provider。
6
+ * - 统一负责 checkout、本地支付记录、webhook 幂等、状态同步和 balance 入账。
7
+ * - 所有 provider 共用 `/v1/payment/*` 路由和统一 payments/events 表。
8
+ */
9
+ import { InstallableService } from "@downcity/city";
10
+ import { paymentEvents, paymentPayments } from "./schema.js";
11
+ import { mergeEnvRequirements, normalizeProviders } from "./helpers.js";
12
+ import { installPaymentRoutes } from "./routes.js";
13
+ /**
14
+ * Payment 服务自身 env。
15
+ */
16
+ const paymentEnv = [
17
+ {
18
+ key: "DOWNCITY_CITY_BASE_URL",
19
+ description: "City 对外访问地址;用于自动生成统一 payment 结果页地址",
20
+ required: false,
21
+ },
22
+ ];
23
+ /**
24
+ * 统一 Payment 服务。
25
+ */
26
+ export class PaymentService extends InstallableService {
27
+ id = "payment";
28
+ name = "Payment";
29
+ version = "0.2.0";
30
+ schema = {
31
+ payments: paymentPayments,
32
+ events: paymentEvents,
33
+ };
34
+ options;
35
+ providers;
36
+ constructor(options) {
37
+ const providers = normalizeProviders(options.providers);
38
+ super(mergeEnvRequirements([
39
+ ...paymentEnv,
40
+ ...providers.flatMap((provider) => provider.env),
41
+ ]));
42
+ this.options = options;
43
+ this.providers = providers;
44
+ this.instruction = [
45
+ "统一支付服务。Stripe、Creem、Dodo、Waffo 都作为 provider 挂载。",
46
+ "前端先读取 /methods,再通过 /checkout/create 创建对应 provider 的 checkout。",
47
+ "所有 provider 共用 /webhook、/payments、/events 和统一 payment 表。",
48
+ ].join("\n");
49
+ }
50
+ install(ctx) {
51
+ installPaymentRoutes(this, ctx);
52
+ }
53
+ /**
54
+ * 读取充值单。
55
+ */
56
+ readTopup(topup_id) {
57
+ return this.options.readTopup(topup_id);
58
+ }
59
+ /**
60
+ * 完成充值并入账。
61
+ */
62
+ finishTopup(topup_id, extra) {
63
+ return this.options.finishTopup(topup_id, extra);
64
+ }
65
+ /**
66
+ * 获取已挂载的 provider 列表。
67
+ */
68
+ getProviders() {
69
+ return this.providers;
70
+ }
71
+ }
72
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/payment/service.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAmD,MAAM,gBAAgB,CAAC;AACrG,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD;;GAEG;AACH,MAAM,UAAU,GAAqB;IACnC;QACE,GAAG,EAAE,wBAAwB;QAC7B,WAAW,EAAE,oCAAoC;QACjD,QAAQ,EAAE,KAAK;KAChB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,kBAAkB;IAC3C,EAAE,GAAG,SAAS,CAAC;IACf,IAAI,GAAG,SAAS,CAAC;IACjB,OAAO,GAAG,OAAO,CAAC;IAClB,MAAM,GAAG;QAChB,QAAQ,EAAE,eAAe;QACzB,MAAM,EAAE,aAAa;KACtB,CAAC;IAEe,OAAO,CAAwB;IAC/B,SAAS,CAAoB;IAE9C,YAAY,OAA8B;QACxC,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxD,KAAK,CAAC,oBAAoB,CAAC;YACzB,GAAG,UAAU;YACb,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;SACjD,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG;YACjB,iDAAiD;YACjD,+DAA+D;YAC/D,0DAA0D;SAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IAED,OAAO,CAAC,GAA0B;QAChC,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB,EAAE,KAA+B;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;CACF"}
@@ -40,22 +40,6 @@ export interface PaymentTopupRecord extends Record<string, unknown> {
40
40
  /** 充值说明。 */
41
41
  note: string;
42
42
  }
43
- /**
44
- * Payment 服务所需的 balance 最小桥接接口。
45
- */
46
- export interface PaymentServiceBalanceBridge {
47
- /** 读取充值单。 */
48
- readTopup(topup_id: string): Promise<PaymentTopupRecord>;
49
- /** 完成充值单并真正入账。 */
50
- finishTopup(topup_id: string, extra?: {
51
- /** 说明文本。 */
52
- note?: string;
53
- /** 外部引用 ID。 */
54
- ref?: string;
55
- /** 结构化扩展字段。 */
56
- meta?: Record<string, unknown>;
57
- }): Promise<PaymentTopupRecord>;
58
- }
59
43
  /**
60
44
  * 单个支付方式返回项。
61
45
  */
@@ -177,8 +161,17 @@ export interface PaymentProvider {
177
161
  * Payment 服务配置。
178
162
  */
179
163
  export interface PaymentServiceOptions {
180
- /** 已挂载到 City 的 balance 服务实例。 */
181
- balance: PaymentServiceBalanceBridge;
164
+ /** 读取充值单。 */
165
+ readTopup(topup_id: string): Promise<PaymentTopupRecord>;
166
+ /** 完成充值单并真正入账。 */
167
+ finishTopup(topup_id: string, extra?: {
168
+ /** 说明文本。 */
169
+ note?: string;
170
+ /** 外部引用 ID。 */
171
+ ref?: string;
172
+ /** 结构化扩展字段。 */
173
+ meta?: Record<string, unknown>;
174
+ }): Promise<PaymentTopupRecord>;
182
175
  /** 当前 City 启用的支付 provider。 */
183
176
  providers: PaymentProvider[];
184
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/payment/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/payment/types.ts"],"names":[],"mappings":"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"}