@downcity/services 0.1.48 → 0.1.49
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/README.md +13 -1
- package/bin/index.d.ts +4 -2
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +2 -1
- package/bin/index.js.map +1 -1
- package/bin/payment/index.d.ts +5 -1
- package/bin/payment/index.d.ts.map +1 -1
- package/bin/payment/index.js +23 -0
- package/bin/payment/index.js.map +1 -1
- package/bin/payment/types.d.ts +27 -0
- package/bin/payment/types.d.ts.map +1 -1
- package/bin/payment-creem/creem.d.ts +42 -0
- package/bin/payment-creem/creem.d.ts.map +1 -0
- package/bin/payment-creem/creem.js +129 -0
- package/bin/payment-creem/creem.js.map +1 -0
- package/bin/payment-creem/index.d.ts +17 -0
- package/bin/payment-creem/index.d.ts.map +1 -0
- package/bin/payment-creem/index.js +625 -0
- package/bin/payment-creem/index.js.map +1 -0
- package/bin/payment-creem/schema.d.ts +378 -0
- package/bin/payment-creem/schema.d.ts.map +1 -0
- package/bin/payment-creem/schema.js +47 -0
- package/bin/payment-creem/schema.js.map +1 -0
- package/bin/payment-creem/types.d.ts +316 -0
- package/bin/payment-creem/types.d.ts.map +1 -0
- package/bin/payment-creem/types.js +10 -0
- package/bin/payment-creem/types.js.map +1 -0
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Downcity 官方服务聚合包。
|
|
4
4
|
|
|
5
|
-
这个包统一提供账号、余额、usage
|
|
5
|
+
这个包统一提供账号、余额、usage、Stripe 支付与 Creem 支付等官方服务,避免业务侧分别安装多个 `service-*` 包。
|
|
6
6
|
|
|
7
7
|
## 安装
|
|
8
8
|
|
|
@@ -16,10 +16,13 @@ pnpm add @downcity/services
|
|
|
16
16
|
import {
|
|
17
17
|
accountsService,
|
|
18
18
|
balanceService,
|
|
19
|
+
creemPaymentMethod,
|
|
20
|
+
creemPaymentService,
|
|
19
21
|
paymentService,
|
|
20
22
|
stripePaymentMethod,
|
|
21
23
|
stripePaymentService,
|
|
22
24
|
usageService,
|
|
25
|
+
type CreemPaymentServiceBalanceBridge,
|
|
23
26
|
type StripePaymentServiceBalanceBridge,
|
|
24
27
|
} from "@downcity/services";
|
|
25
28
|
```
|
|
@@ -38,6 +41,14 @@ const checkout = await user.service("payment.stripe").action("checkout/create").
|
|
|
38
41
|
});
|
|
39
42
|
```
|
|
40
43
|
|
|
44
|
+
Creem 支付方式使用同样的调用形态:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
const checkout = await user.service("payment.creem").action("checkout/create").invoke({
|
|
48
|
+
topup_id: "topup_demo",
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
41
52
|
## 包含的服务
|
|
42
53
|
|
|
43
54
|
- `accountsService()`:注册、登录、邮箱验证、GitHub/Google OAuth 与 `user_token` 签发
|
|
@@ -45,3 +56,4 @@ const checkout = await user.service("payment.stripe").action("checkout/create").
|
|
|
45
56
|
- `paymentService()`:统一暴露当前 City 可用的支付方式列表
|
|
46
57
|
- `usageService()`:记录真实用户侧 service 调用事件
|
|
47
58
|
- `stripePaymentService()`:把 Stripe 一次性支付同步成 balance topup 到账
|
|
59
|
+
- `creemPaymentService()`:把 Creem 一次性支付同步成 balance topup 到账
|
package/bin/index.d.ts
CHANGED
|
@@ -12,11 +12,13 @@ export type { AccountsServiceOptions } from "./accounts/index.js";
|
|
|
12
12
|
export { balanceAccounts, balanceLedger, balanceRedeemCodes, balanceTopups } from "./balance/schema.js";
|
|
13
13
|
export { BalanceService, balanceService } from "./balance/service.js";
|
|
14
14
|
export type { BalanceAccount, BalanceCreateRedeemCodeInput, BalanceExtra, BalanceHistoryQuery, BalanceLedgerEntry, BalanceLedgerKind, BalanceRedeemCode, BalanceRedeemCodeIssueResult, BalanceRedeemCodeQuery, BalanceRedeemCodeRedeemResult, BalanceRedeemCodeStatus, BalanceServiceOptions, BalanceTopup, BalanceTopupQuery, BalanceTopupStatus, } from "./balance/types.js";
|
|
15
|
-
export { paymentService, stripePaymentMethod } from "./payment/index.js";
|
|
15
|
+
export { creemPaymentMethod, paymentService, stripePaymentMethod } from "./payment/index.js";
|
|
16
16
|
export type { PaymentMethodDefinition, PaymentMethodItem, PaymentMethodType, PaymentServiceOptions, } from "./payment/types.js";
|
|
17
|
-
export type { StripePaymentMethodOptions } from "./payment/types.js";
|
|
17
|
+
export type { CreemPaymentMethodOptions, StripePaymentMethodOptions } from "./payment/types.js";
|
|
18
18
|
export { stripeEvents, stripePayments, stripePaymentService } from "./payment-stripe/index.js";
|
|
19
19
|
export type { StripeCheckoutCreateResult, StripeCreateCheckoutInput, StripeEventRecord, StripeEventSyncStatus, StripePaymentRecord, StripePaymentServiceBalanceBridge, StripePaymentServiceOptions, StripePaymentStatus, StripePaymentTopupRecord, StripeWebhookEvent, } from "./payment-stripe/types.js";
|
|
20
|
+
export { creemEvents, creemPayments, creemPaymentService } from "./payment-creem/index.js";
|
|
21
|
+
export type { CreemCheckoutCreateResult, CreemCreateCheckoutInput, CreemEventRecord, CreemEventSyncStatus, CreemPaymentRecord, CreemPaymentServiceBalanceBridge, CreemPaymentServiceOptions, CreemPaymentStatus, CreemPaymentTopupRecord, CreemWebhookEvent, } from "./payment-creem/types.js";
|
|
20
22
|
export { usageEvents, usageService } from "./usage/index.js";
|
|
21
23
|
export type { UsageServiceOptions } from "./usage/index.js";
|
|
22
24
|
//# sourceMappingURL=index.d.ts.map
|
package/bin/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EACV,cAAc,EACd,4BAA4B,EAC5B,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtE,YAAY,EACV,cAAc,EACd,4BAA4B,EAC5B,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,4BAA4B,EAC5B,sBAAsB,EACtB,6BAA6B,EAC7B,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC7F,YAAY,EACV,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhG,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC/F,YAAY,EACV,0BAA0B,EAC1B,yBAAyB,EACzB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,iCAAiC,EACjC,2BAA2B,EAC3B,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gCAAgC,EAChC,0BAA0B,EAC1B,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/bin/index.js
CHANGED
|
@@ -10,7 +10,8 @@ export { accountsOAuthStates, userProfiles } from "./accounts/schema.js";
|
|
|
10
10
|
export { AccountsService, accountsService } from "./accounts/index.js";
|
|
11
11
|
export { balanceAccounts, balanceLedger, balanceRedeemCodes, balanceTopups } from "./balance/schema.js";
|
|
12
12
|
export { BalanceService, balanceService } from "./balance/service.js";
|
|
13
|
-
export { paymentService, stripePaymentMethod } from "./payment/index.js";
|
|
13
|
+
export { creemPaymentMethod, paymentService, stripePaymentMethod } from "./payment/index.js";
|
|
14
14
|
export { stripeEvents, stripePayments, stripePaymentService } from "./payment-stripe/index.js";
|
|
15
|
+
export { creemEvents, creemPayments, creemPaymentService } from "./payment-creem/index.js";
|
|
15
16
|
export { usageEvents, usageService } from "./usage/index.js";
|
|
16
17
|
//# sourceMappingURL=index.js.map
|
package/bin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAmBtE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGvE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAmBtE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAS7F,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAc/F,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAc3F,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
package/bin/payment/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - 具体支付链路仍由 `payment.stripe` 之类的具体服务承接
|
|
8
8
|
*/
|
|
9
9
|
import type { ServiceDefinition } from "@downcity/city";
|
|
10
|
-
import type { PaymentMethodDefinition, PaymentServiceOptions, StripePaymentMethodOptions } from "./types.js";
|
|
10
|
+
import type { PaymentMethodDefinition, PaymentServiceOptions, CreemPaymentMethodOptions, StripePaymentMethodOptions } from "./types.js";
|
|
11
11
|
/**
|
|
12
12
|
* 创建统一 Payment 服务。
|
|
13
13
|
*/
|
|
@@ -16,4 +16,8 @@ export declare function paymentService(options: PaymentServiceOptions): ServiceD
|
|
|
16
16
|
* 生成 Stripe 支付方式定义。
|
|
17
17
|
*/
|
|
18
18
|
export declare function stripePaymentMethod(options?: StripePaymentMethodOptions): PaymentMethodDefinition;
|
|
19
|
+
/**
|
|
20
|
+
* 生成 Creem 支付方式定义。
|
|
21
|
+
*/
|
|
22
|
+
export declare function creemPaymentMethod(options?: CreemPaymentMethodOptions): PaymentMethodDefinition;
|
|
19
23
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payment/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EACV,uBAAuB,EAEvB,qBAAqB,EACrB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,iBAAiB,CAuBhF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,uBAAuB,CAiBrG"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payment/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EACV,uBAAuB,EAEvB,qBAAqB,EACrB,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,iBAAiB,CAuBhF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,uBAAuB,CAiBrG;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,uBAAuB,CAmBnG"}
|
package/bin/payment/index.js
CHANGED
|
@@ -54,6 +54,29 @@ export function stripePaymentMethod(options = {}) {
|
|
|
54
54
|
},
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* 生成 Creem 支付方式定义。
|
|
59
|
+
*/
|
|
60
|
+
export function creemPaymentMethod(options = {}) {
|
|
61
|
+
return {
|
|
62
|
+
resolve(ctx) {
|
|
63
|
+
const hasApiKey = Boolean(options.api_key || ctx.env("CREEM_API_KEY"));
|
|
64
|
+
const hasProductId = Boolean(options.product_id || ctx.env("CREEM_PRODUCT_ID"));
|
|
65
|
+
const enabled = hasApiKey && hasProductId;
|
|
66
|
+
return {
|
|
67
|
+
id: "creem",
|
|
68
|
+
type: "checkout",
|
|
69
|
+
enabled,
|
|
70
|
+
label: options.label?.trim() || "Creem",
|
|
71
|
+
service: "payment.creem",
|
|
72
|
+
action: "checkout/create",
|
|
73
|
+
requires_user: true,
|
|
74
|
+
currency: normalizeCurrency(ctx.env("CREEM_CURRENCY")) || normalizeCurrency(options.currency) || "usd",
|
|
75
|
+
reason: enabled ? undefined : "not_configured",
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
57
80
|
/**
|
|
58
81
|
* 统一规范化币种。
|
|
59
82
|
*/
|
package/bin/payment/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payment/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/payment/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAWH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC3D,OAAO;QACL,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE;YACX,wBAAwB;YACxB,8BAA8B;YAC9B,oCAAoC;SACrC,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,OAAO,CAAC,GAAG;YACT,GAAG,CAAC,KAAK,CAAC;gBACR,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,EAAE;gBACR,KAAK,CAAC,OAAO,CAAC,UAAU;oBACtB,OAAO,UAAU,CAAC,YAAY,CAAC;wBAC7B,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;qBAC5D,CAAC,CAAC;gBACL,CAAC;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAsC,EAAE;IAC1E,OAAO;QACL,OAAO,CAAC,GAAG;YACT,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAC5E,OAAO;gBACL,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO;gBACP,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,QAAQ;gBACxC,OAAO,EAAE,gBAAgB;gBACzB,MAAM,EAAE,iBAAiB;gBACzB,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK;gBACvG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB;aAC/C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAqC,EAAE;IACxE,OAAO;QACL,OAAO,CAAC,GAAG;YACT,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YACvE,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAChF,MAAM,OAAO,GAAG,SAAS,IAAI,YAAY,CAAC;YAC1C,OAAO;gBACL,EAAE,EAAE,OAAO;gBACX,IAAI,EAAE,UAAU;gBAChB,OAAO;gBACP,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,OAAO;gBACvC,OAAO,EAAE,eAAe;gBACxB,MAAM,EAAE,iBAAiB;gBACzB,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK;gBACtG,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB;aAC/C,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAc;IACvC,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClD,CAAC"}
|
package/bin/payment/types.d.ts
CHANGED
|
@@ -104,4 +104,31 @@ export interface StripePaymentMethodOptions {
|
|
|
104
104
|
*/
|
|
105
105
|
label?: string;
|
|
106
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Creem 支付方式配置。
|
|
109
|
+
*/
|
|
110
|
+
export interface CreemPaymentMethodOptions {
|
|
111
|
+
/**
|
|
112
|
+
* 显式注入的 Creem API Key。
|
|
113
|
+
*
|
|
114
|
+
* 未传入时会回退读取 runtime env 中的 `CREEM_API_KEY`。
|
|
115
|
+
*/
|
|
116
|
+
api_key?: string;
|
|
117
|
+
/**
|
|
118
|
+
* 显式注入的 Creem product_id。
|
|
119
|
+
*
|
|
120
|
+
* 未传入时会回退读取 runtime env 中的 `CREEM_PRODUCT_ID`。
|
|
121
|
+
*/
|
|
122
|
+
product_id?: string;
|
|
123
|
+
/**
|
|
124
|
+
* 默认结算币种。
|
|
125
|
+
*
|
|
126
|
+
* 未传入时会回退读取 runtime env 中的 `CREEM_CURRENCY`,最终默认 `usd`。
|
|
127
|
+
*/
|
|
128
|
+
currency?: string;
|
|
129
|
+
/**
|
|
130
|
+
* 可选展示名称。
|
|
131
|
+
*/
|
|
132
|
+
label?: string;
|
|
133
|
+
}
|
|
107
134
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/payment/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;OAIG;IACH,IAAI,EAAE,iBAAiB,CAAC;IAExB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,gBAAgB,GAAG,eAAe,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,iBAAiB,CAAC;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,OAAO,EAAE,uBAAuB,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/payment/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;;OAIG;IACH,IAAI,EAAE,iBAAiB,CAAC;IAExB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,gBAAgB,GAAG,eAAe,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE;QAAE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG,iBAAiB,CAAC;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,OAAO,EAAE,uBAAuB,EAAE,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creem HTTP / webhook 工具函数。
|
|
3
|
+
*
|
|
4
|
+
* 关键说明(中文)
|
|
5
|
+
* - 不依赖 Creem SDK,统一走官方 HTTP API
|
|
6
|
+
* - 创建 Checkout 使用 JSON body,兼容 Node 与 Worker
|
|
7
|
+
* - webhook 验签使用 Web Crypto API,便于 Cloudflare Workers 运行
|
|
8
|
+
*/
|
|
9
|
+
import type { CreemCheckoutSessionResult, CreemCreateCheckoutSessionInput, CreemWebhookEvent } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* 规范化 Creem API 基础地址。
|
|
12
|
+
*/
|
|
13
|
+
export declare function normalizeCreemApiBaseURL(value: string | undefined): string;
|
|
14
|
+
/**
|
|
15
|
+
* 创建 Creem Checkout Session。
|
|
16
|
+
*/
|
|
17
|
+
export declare function createCreemCheckoutSession(apiKey: string, apiBaseURL: string, input: CreemCreateCheckoutSessionInput): Promise<CreemCheckoutSessionResult>;
|
|
18
|
+
/**
|
|
19
|
+
* 解析 Creem webhook 事件。
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseCreemWebhookEvent(raw: string): CreemWebhookEvent;
|
|
22
|
+
/**
|
|
23
|
+
* 验证 Creem webhook 签名。
|
|
24
|
+
*
|
|
25
|
+
* 关键说明(中文)
|
|
26
|
+
* - Creem 当前 webhook header 使用 `creem-signature`
|
|
27
|
+
* - 签名值是 raw body 基于 webhook secret 的 HMAC-SHA256 hex
|
|
28
|
+
*/
|
|
29
|
+
export declare function verifyCreemSignature(raw: string, header: string | null, secret: string): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* 规范化非空字符串。
|
|
32
|
+
*/
|
|
33
|
+
export declare function normalizeRequired(value: unknown, label: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* 规范化可选字符串。
|
|
36
|
+
*/
|
|
37
|
+
export declare function normalizeOptionalText(value: unknown): string;
|
|
38
|
+
/**
|
|
39
|
+
* 规范化 metadata 对象。
|
|
40
|
+
*/
|
|
41
|
+
export declare function readMetadata(value: unknown): Record<string, unknown>;
|
|
42
|
+
//# sourceMappingURL=creem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creem.d.ts","sourceRoot":"","sources":["../../src/payment-creem/creem.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,0BAA0B,EAC1B,+BAA+B,EAC/B,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI1E;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,0BAA0B,CAAC,CAqCrC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAGrE;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB/G;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE5D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIpE"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Creem HTTP / webhook 工具函数。
|
|
3
|
+
*
|
|
4
|
+
* 关键说明(中文)
|
|
5
|
+
* - 不依赖 Creem SDK,统一走官方 HTTP API
|
|
6
|
+
* - 创建 Checkout 使用 JSON body,兼容 Node 与 Worker
|
|
7
|
+
* - webhook 验签使用 Web Crypto API,便于 Cloudflare Workers 运行
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* 规范化 Creem API 基础地址。
|
|
11
|
+
*/
|
|
12
|
+
export function normalizeCreemApiBaseURL(value) {
|
|
13
|
+
const normalized = String(value ?? "https://api.creem.io/v1").trim();
|
|
14
|
+
if (!normalized)
|
|
15
|
+
throw new TypeError("Creem API server URL is required");
|
|
16
|
+
return normalized.replace(/\/+$/, "");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 创建 Creem Checkout Session。
|
|
20
|
+
*/
|
|
21
|
+
export async function createCreemCheckoutSession(apiKey, apiBaseURL, input) {
|
|
22
|
+
const response = await fetch(`${normalizeCreemApiBaseURL(apiBaseURL)}/checkouts`, {
|
|
23
|
+
method: "POST",
|
|
24
|
+
headers: {
|
|
25
|
+
"content-type": "application/json",
|
|
26
|
+
"x-api-key": normalizeRequired(apiKey, "Creem API key"),
|
|
27
|
+
},
|
|
28
|
+
body: JSON.stringify({
|
|
29
|
+
product_id: input.product_id,
|
|
30
|
+
success_url: input.success_url,
|
|
31
|
+
request_id: input.payment_id,
|
|
32
|
+
metadata: {
|
|
33
|
+
payment_id: input.payment_id,
|
|
34
|
+
topup_id: input.topup.topup_id,
|
|
35
|
+
user_id: input.topup.user_id,
|
|
36
|
+
amount: input.topup.amount,
|
|
37
|
+
unit: input.topup.unit,
|
|
38
|
+
},
|
|
39
|
+
}),
|
|
40
|
+
});
|
|
41
|
+
const payload = await readJSONRecord(response);
|
|
42
|
+
if (!response.ok) {
|
|
43
|
+
const message = String((payload.error && typeof payload.error === "object" ? payload.error.message : "") ||
|
|
44
|
+
payload.message ||
|
|
45
|
+
"Creem checkout session creation failed").trim();
|
|
46
|
+
throw new Error(message || "Creem checkout session creation failed");
|
|
47
|
+
}
|
|
48
|
+
const checkoutId = normalizeRequired(payload.id ?? payload.checkout_id, "Creem checkout id");
|
|
49
|
+
const checkoutURL = normalizeRequired(payload.checkout_url ?? payload.url, "Creem checkout url");
|
|
50
|
+
return {
|
|
51
|
+
checkout_id: checkoutId,
|
|
52
|
+
checkout_url: checkoutURL,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 解析 Creem webhook 事件。
|
|
57
|
+
*/
|
|
58
|
+
export function parseCreemWebhookEvent(raw) {
|
|
59
|
+
const parsed = JSON.parse(raw || "{}");
|
|
60
|
+
return parsed && typeof parsed === "object" ? parsed : {};
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* 验证 Creem webhook 签名。
|
|
64
|
+
*
|
|
65
|
+
* 关键说明(中文)
|
|
66
|
+
* - Creem 当前 webhook header 使用 `creem-signature`
|
|
67
|
+
* - 签名值是 raw body 基于 webhook secret 的 HMAC-SHA256 hex
|
|
68
|
+
*/
|
|
69
|
+
export async function verifyCreemSignature(raw, header, secret) {
|
|
70
|
+
const signature = normalizeOptionalText(header);
|
|
71
|
+
if (!signature)
|
|
72
|
+
return false;
|
|
73
|
+
const encoder = new TextEncoder();
|
|
74
|
+
const key = await crypto.subtle.importKey("raw", encoder.encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
75
|
+
const signed = await crypto.subtle.sign("HMAC", key, encoder.encode(raw));
|
|
76
|
+
const expected = Array.from(new Uint8Array(signed))
|
|
77
|
+
.map((byte) => byte.toString(16).padStart(2, "0"))
|
|
78
|
+
.join("");
|
|
79
|
+
return timingSafeEqual(signature, expected);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 规范化非空字符串。
|
|
83
|
+
*/
|
|
84
|
+
export function normalizeRequired(value, label) {
|
|
85
|
+
const normalized = String(value ?? "").trim();
|
|
86
|
+
if (!normalized)
|
|
87
|
+
throw new TypeError(`${label} is required`);
|
|
88
|
+
return normalized;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* 规范化可选字符串。
|
|
92
|
+
*/
|
|
93
|
+
export function normalizeOptionalText(value) {
|
|
94
|
+
return typeof value === "string" ? value.trim() : "";
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* 规范化 metadata 对象。
|
|
98
|
+
*/
|
|
99
|
+
export function readMetadata(value) {
|
|
100
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
101
|
+
? value
|
|
102
|
+
: {};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* 常量时间比较两个签名字符串。
|
|
106
|
+
*/
|
|
107
|
+
function timingSafeEqual(left, right) {
|
|
108
|
+
if (left.length !== right.length)
|
|
109
|
+
return false;
|
|
110
|
+
let result = 0;
|
|
111
|
+
for (let index = 0; index < left.length; index++) {
|
|
112
|
+
result |= left.charCodeAt(index) ^ right.charCodeAt(index);
|
|
113
|
+
}
|
|
114
|
+
return result === 0;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 读取 JSON 响应并兜底为空对象。
|
|
118
|
+
*/
|
|
119
|
+
async function readJSONRecord(response) {
|
|
120
|
+
const text = await response.text();
|
|
121
|
+
try {
|
|
122
|
+
const parsed = JSON.parse(text || "{}");
|
|
123
|
+
return parsed && typeof parsed === "object" ? parsed : {};
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return { message: text };
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=creem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"creem.js","sourceRoot":"","sources":["../../src/payment-creem/creem.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAyB;IAChE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,yBAAyB,CAAC,CAAC,IAAI,EAAE,CAAC;IACrE,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAC;IACzE,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAc,EACd,UAAkB,EAClB,KAAsC;IAEtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,wBAAwB,CAAC,UAAU,CAAC,YAAY,EAAE;QAChF,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,WAAW,EAAE,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC;SACxD;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,QAAQ,EAAE;gBACR,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;gBAC9B,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;gBAC5B,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;gBAC1B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;aACvB;SACF,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,MAAM,CACpB,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACjF,OAAO,CAAC,OAAO;YACf,wCAAwC,CACzC,CAAC,IAAI,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,wCAAwC,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC7F,MAAM,WAAW,GAAG,iBAAiB,CAAC,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;IACjG,OAAO;QACL,WAAW,EAAE,UAAU;QACvB,YAAY,EAAE,WAAW;KAC1B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;IACvC,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAA2B,CAAC,CAAC,CAAC,EAAE,CAAC;AACjF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAW,EAAE,MAAqB,EAAE,MAAc;IAC3F,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAE7B,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,CACvC,KAAK,EACL,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EACtB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EACjC,KAAK,EACL,CAAC,MAAM,CAAC,CACT,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;SAChD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACjD,IAAI,CAAC,EAAE,CAAC,CAAC;IAEZ,OAAO,eAAe,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc,EAAE,KAAa;IAC7D,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,SAAS,CAAC,GAAG,KAAK,cAAc,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChE,CAAC,CAAC,KAAgC;QAClC,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAY,EAAE,KAAa;IAClD,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,MAAM,KAAK,CAAC,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,QAAkB;IAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACxC,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Downcity Creem 一次性充值服务。
|
|
3
|
+
*
|
|
4
|
+
* 关键说明(中文)
|
|
5
|
+
* - 当前版本只处理 Creem Checkout 一次性充值
|
|
6
|
+
* - 不处理 entitlement,也不处理 subscription
|
|
7
|
+
* - 支付成功后统一调用 balance.finishTopup() 完成到账
|
|
8
|
+
*/
|
|
9
|
+
import type { ServiceDefinition } from "@downcity/city";
|
|
10
|
+
import type { CreemPaymentServiceOptions } from "./types.js";
|
|
11
|
+
export { creemEvents, creemPayments } from "./schema.js";
|
|
12
|
+
export type { CreemCheckoutCreateResult, CreemCreateCheckoutInput, CreemEventRecord, CreemEventSyncStatus, CreemPaymentRecord, CreemPaymentServiceBalanceBridge, CreemPaymentServiceOptions, CreemPaymentStatus, CreemPaymentTopupRecord, CreemWebhookEvent, } from "./types.js";
|
|
13
|
+
/**
|
|
14
|
+
* 创建 Creem 一次性充值服务。
|
|
15
|
+
*/
|
|
16
|
+
export declare function creemPaymentService(options: CreemPaymentServiceOptions): ServiceDefinition;
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payment-creem/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAkB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAWxE,OAAO,KAAK,EAMV,0BAA0B,EAG3B,MAAM,YAAY,CAAC;AA4EpB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,YAAY,EACV,yBAAyB,EACzB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,gCAAgC,EAChC,0BAA0B,EAC1B,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,iBAAiB,CAwN1F"}
|