@downcity/services 0.1.94 → 0.1.101
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/bin/payment/index.d.ts +6 -6
- package/bin/payment/index.d.ts.map +1 -1
- package/bin/payment/index.js +6 -6
- package/bin/payment/index.js.map +1 -1
- package/bin/{payment-creem/creem.d.ts → payment/providers/creem/client.d.ts} +7 -12
- package/bin/payment/providers/creem/client.d.ts.map +1 -0
- package/bin/{payment-creem/creem.js → payment/providers/creem/client.js} +29 -37
- package/bin/payment/providers/creem/client.js.map +1 -0
- package/bin/payment/providers/creem/index.d.ts +13 -0
- package/bin/payment/providers/creem/index.d.ts.map +1 -0
- package/bin/payment/providers/creem/index.js +94 -0
- package/bin/payment/providers/creem/index.js.map +1 -0
- package/bin/payment/providers/creem/types.d.ts +49 -0
- package/bin/payment/providers/creem/types.d.ts.map +1 -0
- package/bin/payment/providers/creem/types.js +9 -0
- package/bin/payment/providers/creem/types.js.map +1 -0
- package/bin/payment/providers/dodo/client.d.ts +48 -0
- package/bin/payment/providers/dodo/client.d.ts.map +1 -0
- package/bin/{payment-dodo/dodo.js → payment/providers/dodo/client.js} +18 -33
- package/bin/payment/providers/dodo/client.js.map +1 -0
- package/bin/payment/providers/dodo/index.d.ts +13 -0
- package/bin/payment/providers/dodo/index.d.ts.map +1 -0
- package/bin/payment/providers/dodo/index.js +109 -0
- package/bin/payment/providers/dodo/index.js.map +1 -0
- package/bin/payment/providers/dodo/types.d.ts +58 -0
- package/bin/payment/providers/dodo/types.d.ts.map +1 -0
- package/bin/payment/providers/dodo/types.js +9 -0
- package/bin/payment/providers/dodo/types.js.map +1 -0
- package/bin/payment/providers/index.d.ts +12 -0
- package/bin/payment/providers/index.d.ts.map +1 -0
- package/bin/payment/providers/index.js +12 -0
- package/bin/payment/providers/index.js.map +1 -0
- package/bin/{payment-stripe/stripe.d.ts → payment/providers/stripe/client.d.ts} +4 -12
- package/bin/payment/providers/stripe/client.d.ts.map +1 -0
- package/bin/{payment-stripe/stripe.js → payment/providers/stripe/client.js} +22 -38
- package/bin/payment/providers/stripe/client.js.map +1 -0
- package/bin/payment/providers/stripe/index.d.ts +13 -0
- package/bin/payment/providers/stripe/index.d.ts.map +1 -0
- package/bin/payment/providers/stripe/index.js +97 -0
- package/bin/payment/providers/stripe/index.js.map +1 -0
- package/bin/payment/providers/stripe/types.d.ts +51 -0
- package/bin/payment/providers/stripe/types.d.ts.map +1 -0
- package/bin/payment/providers/stripe/types.js +9 -0
- package/bin/payment/providers/stripe/types.js.map +1 -0
- package/bin/payment/providers/waffo/client.d.ts +56 -0
- package/bin/payment/providers/waffo/client.d.ts.map +1 -0
- package/bin/{payment-waffo/waffo.js → payment/providers/waffo/client.js} +54 -31
- package/bin/payment/providers/waffo/client.js.map +1 -0
- package/bin/payment/providers/waffo/index.d.ts +13 -0
- package/bin/payment/providers/waffo/index.d.ts.map +1 -0
- package/bin/payment/providers/waffo/index.js +105 -0
- package/bin/payment/providers/waffo/index.js.map +1 -0
- package/bin/payment/providers/waffo/types.d.ts +63 -0
- package/bin/payment/providers/waffo/types.d.ts.map +1 -0
- package/bin/payment/providers/waffo/types.js +9 -0
- package/bin/payment/providers/waffo/types.js.map +1 -0
- package/package.json +3 -3
- package/bin/payment/providers.d.ts +0 -25
- package/bin/payment/providers.d.ts.map +0 -1
- package/bin/payment/providers.js +0 -415
- package/bin/payment/providers.js.map +0 -1
- package/bin/payment-creem/creem.d.ts.map +0 -1
- package/bin/payment-creem/creem.js.map +0 -1
- package/bin/payment-creem/index.d.ts +0 -17
- package/bin/payment-creem/index.d.ts.map +0 -1
- package/bin/payment-creem/index.js +0 -569
- package/bin/payment-creem/index.js.map +0 -1
- package/bin/payment-creem/schema.d.ts +0 -378
- package/bin/payment-creem/schema.d.ts.map +0 -1
- package/bin/payment-creem/schema.js +0 -47
- package/bin/payment-creem/schema.js.map +0 -1
- package/bin/payment-creem/types.d.ts +0 -293
- package/bin/payment-creem/types.d.ts.map +0 -1
- package/bin/payment-creem/types.js +0 -10
- package/bin/payment-creem/types.js.map +0 -1
- package/bin/payment-dodo/dodo.d.ts +0 -119
- package/bin/payment-dodo/dodo.d.ts.map +0 -1
- package/bin/payment-dodo/dodo.js.map +0 -1
- package/bin/payment-dodo/index.d.ts +0 -17
- package/bin/payment-dodo/index.d.ts.map +0 -1
- package/bin/payment-dodo/index.js +0 -548
- package/bin/payment-dodo/index.js.map +0 -1
- package/bin/payment-dodo/schema.d.ts +0 -378
- package/bin/payment-dodo/schema.d.ts.map +0 -1
- package/bin/payment-dodo/schema.js +0 -47
- package/bin/payment-dodo/schema.js.map +0 -1
- package/bin/payment-dodo/types.d.ts +0 -257
- package/bin/payment-dodo/types.d.ts.map +0 -1
- package/bin/payment-dodo/types.js +0 -10
- package/bin/payment-dodo/types.js.map +0 -1
- package/bin/payment-stripe/index.d.ts +0 -17
- package/bin/payment-stripe/index.d.ts.map +0 -1
- package/bin/payment-stripe/index.js +0 -555
- package/bin/payment-stripe/index.js.map +0 -1
- package/bin/payment-stripe/schema.d.ts +0 -378
- package/bin/payment-stripe/schema.d.ts.map +0 -1
- package/bin/payment-stripe/schema.js +0 -47
- package/bin/payment-stripe/schema.js.map +0 -1
- package/bin/payment-stripe/stripe.d.ts.map +0 -1
- package/bin/payment-stripe/stripe.js.map +0 -1
- package/bin/payment-stripe/types.d.ts +0 -303
- package/bin/payment-stripe/types.d.ts.map +0 -1
- package/bin/payment-stripe/types.js +0 -10
- package/bin/payment-stripe/types.js.map +0 -1
- package/bin/payment-waffo/index.d.ts +0 -17
- package/bin/payment-waffo/index.d.ts.map +0 -1
- package/bin/payment-waffo/index.js +0 -549
- package/bin/payment-waffo/index.js.map +0 -1
- package/bin/payment-waffo/schema.d.ts +0 -388
- package/bin/payment-waffo/schema.d.ts.map +0 -1
- package/bin/payment-waffo/schema.js +0 -39
- package/bin/payment-waffo/schema.js.map +0 -1
- package/bin/payment-waffo/types.d.ts +0 -285
- package/bin/payment-waffo/types.d.ts.map +0 -1
- package/bin/payment-waffo/types.js +0 -10
- package/bin/payment-waffo/types.js.map +0 -1
- package/bin/payment-waffo/waffo.d.ts +0 -111
- package/bin/payment-waffo/waffo.d.ts.map +0 -1
- package/bin/payment-waffo/waffo.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/payment/providers/waffo/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,KAAK,EACV,0BAA0B,EAC1B,+BAA+B,EAC/B,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,YAAY,CAOf;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,0BAA0B,CAAC,CAmBrC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,wBAAwB;IACxB,MAAM,EAAE,YAAY,CAAC;IACrB,iBAAiB;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY;IACZ,WAAW,EAAE,uBAAuB,CAAC;CACtC,GAAG,iBAAiB,CAKpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIpE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAIjF;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CA8BhD"}
|
|
@@ -4,9 +4,9 @@
|
|
|
4
4
|
* 关键说明(中文)
|
|
5
5
|
* - 创建 Checkout 使用官方 `@waffo/pancake-ts` SDK
|
|
6
6
|
* - webhook 验签使用 SDK 自带 RSA-SHA256 verify
|
|
7
|
-
* - 这里集中处理 SDK client、事件解析和字符串归一化
|
|
8
7
|
*/
|
|
9
8
|
import { WaffoPancake } from "@waffo/pancake-ts";
|
|
9
|
+
import { normalizeOptionalText, normalizeRequired } from "../../helpers.js";
|
|
10
10
|
/**
|
|
11
11
|
* 创建 Waffo SDK client。
|
|
12
12
|
*/
|
|
@@ -40,19 +40,6 @@ export async function createWaffoCheckoutSession(client, input) {
|
|
|
40
40
|
checkout_url: normalizeRequired(response.checkoutUrl, "Waffo checkout url"),
|
|
41
41
|
};
|
|
42
42
|
}
|
|
43
|
-
/**
|
|
44
|
-
* 读取支付 provider 需要的 USD cents 金额。
|
|
45
|
-
*/
|
|
46
|
-
function readTopupAmountUsdCents(topup) {
|
|
47
|
-
const direct = Number(topup.amount_usd_cents);
|
|
48
|
-
if (Number.isSafeInteger(direct) && direct > 0)
|
|
49
|
-
return direct;
|
|
50
|
-
const fallback = Math.round(Number(topup.amount) / 10_000);
|
|
51
|
-
if (!Number.isSafeInteger(fallback) || fallback <= 0) {
|
|
52
|
-
throw new TypeError("topup amount_usd_cents must be a positive integer");
|
|
53
|
-
}
|
|
54
|
-
return fallback;
|
|
55
|
-
}
|
|
56
43
|
/**
|
|
57
44
|
* 解析并校验 Waffo webhook。
|
|
58
45
|
*/
|
|
@@ -63,22 +50,7 @@ export function parseWaffoWebhookEvent(input) {
|
|
|
63
50
|
return event && typeof event === "object" ? event : {};
|
|
64
51
|
}
|
|
65
52
|
/**
|
|
66
|
-
*
|
|
67
|
-
*/
|
|
68
|
-
export function normalizeRequired(value, label) {
|
|
69
|
-
const normalized = String(value ?? "").trim();
|
|
70
|
-
if (!normalized)
|
|
71
|
-
throw new TypeError(`${label} is required`);
|
|
72
|
-
return normalized;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* 规范化可选字符串。
|
|
76
|
-
*/
|
|
77
|
-
export function normalizeOptionalText(value) {
|
|
78
|
-
return typeof value === "string" ? value.trim() : "";
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* 规范化 metadata 对象。
|
|
53
|
+
* 读取 metadata 对象。
|
|
82
54
|
*/
|
|
83
55
|
export function readMetadata(value) {
|
|
84
56
|
return value && typeof value === "object" && !Array.isArray(value)
|
|
@@ -94,4 +66,55 @@ export function normalizeWaffoEnvironment(value) {
|
|
|
94
66
|
return "prod";
|
|
95
67
|
return "test";
|
|
96
68
|
}
|
|
97
|
-
|
|
69
|
+
/**
|
|
70
|
+
* Waffo webhook-only fallback 私钥。
|
|
71
|
+
*
|
|
72
|
+
* 关键说明(中文)
|
|
73
|
+
* - 仅用于 webhook-only 场景,让 SDK 能完成签名验证流程
|
|
74
|
+
* - 不会用于任何真实请求,真实请求必须配置 WAFFO_PRIVATE_KEY
|
|
75
|
+
*/
|
|
76
|
+
export function fallbackWaffoPrivateKey() {
|
|
77
|
+
return [
|
|
78
|
+
"-----BEGIN RSA PRIVATE KEY-----",
|
|
79
|
+
"MIIEpAIBAAKCAQEAtAqPA17F1sr9kylJy8LbcaHrim/UocR/ur3z5Vu7QQTUhuPO",
|
|
80
|
+
"pbsYnu1oFGwCsCjFhBBapI8/Huy9ARP3/Oxsp4kna9gEPLRSTMfUK5a0nPUnkHXv",
|
|
81
|
+
"DFgzIFYn1Yac/3FiA4zIA5BH+0ZUBu8cFZ1MvaPu7YFQvr165hOmwLnoJsypcY5V",
|
|
82
|
+
"Kjb8p+HjMXyiCy3gUId2DCJuUhjbtUo84gI3v4YAI6YD07pNUSm5wFDFKsYeymdV",
|
|
83
|
+
"QdtBhgPUx0RJDyhOKU1Vq8mge2b03ZiQK3O3gUmQgP0sAUpyyUrHaMjs/nAw9dqy",
|
|
84
|
+
"Wl0VyglAIcl79sRVUXTHgEHGf+j0pNcyVjIF2QIDAQABAoIBAAM1bPcSaVQ6qepF",
|
|
85
|
+
"ghsvjdmomRoOhCud5OjfGcmsqNmvzFnbFYO+oeGzOXejtSiOkXaZFAR6yRU0AupS",
|
|
86
|
+
"AMlxLT6PIzS41NqAHDdiGFXuiamCdQIOGASQTdj1sCAOFh43VxfZGnd1ytKfnj/B",
|
|
87
|
+
"Yy6/bu6yTT/OXjIIDnirQP2OUqTeWTHdf1xgQGkb+y20Oo3JgJ637j67HuLPrpzs",
|
|
88
|
+
"jIluqhRszKwVWhGlyTYJdK8nOv2sn+Kn8cEFybmbcytWk9Sxf128+IjTgsEFgEcy",
|
|
89
|
+
"RS6/UofjKfh9WY+4DK/L7mQgdYwawiRX4y4MkExCusmQxT72mDVGXnSbTYNp2qZl",
|
|
90
|
+
"WEgFeQECgYEA8cgKGrySiDFxJb900I5O/CL+1pIYXy6K4gDLk70luwjRSWU+ufZo",
|
|
91
|
+
"g/IRntgk0b0eC4vzP6539hQsh8rrO2swv0vBDG/cvyjP7ljHTx0pFtAjb/yJ9PXN",
|
|
92
|
+
"ca08G8qx6BX5mqdD46T56V4g5PtLT6cwn5Hth2/H+4MZ/5osP3CbU0UCgYEAvqEJ",
|
|
93
|
+
"OEOlKMRhxdfb7RnKMwiXUN2vZ0NuGgK0slqEC9FAv1E/XV8azcs40uINrDdieRmr",
|
|
94
|
+
"Oi+LBXC08FHiAKZOVuxg1DzKx8gDc/R6YGT5sKVhVhKgWsF9ysmCyyqdqnuvFMAd",
|
|
95
|
+
"7PgS4Nf01rO9jo+cqKBHTzFny0TWZTTAR6NzZ4UCgYEAzqcKs+V/XPbdXcUxg9xO",
|
|
96
|
+
"eEU1CZLfT+NJA3hoiAMAD8eukgv+PBX3KOeq1diqR7ZbysS4iTKHCAYgNYRj4Gpy",
|
|
97
|
+
"xN5rx0SJKb4pUvAAkoc7CmumDl6MT5oUGdhWau6pdtPpfpz+csEcdbFlbjG3IgKl",
|
|
98
|
+
"lY21tq/8/uUEQKq2rRaDO/0CgYAUgC0FqACzCauaI0S7kvJz2pCrWavrZw0ILxJP",
|
|
99
|
+
"u/xHaRGVgZ9W40t2pkxOIZFm2+3zKBeKAmLpCt3qmmO7vibeoj0nlgIYyiHU7o3a",
|
|
100
|
+
"oAFaRe7Z2tbz66sji9hNESAznWmOybpuKZ+eHptuG5ZfJoKqf9IrahzHd3e3Gp0z",
|
|
101
|
+
"FxjqIQKBgQDbHuXgZL8A7pQe+YFUVbXYjhzb+sTlVQD7C4KF0sdiKNKXcXhvcCxL",
|
|
102
|
+
"AfJu59vnIlhD4MUcxt5lWDBLX08dmcJOX2AryDMmNVC7knNu92IehJeboSaM1+t3",
|
|
103
|
+
"1V/8pTMTtzg5ANHzZICj6vn46UXCL78XUC3sqZdAm/+9kS+oAnWaIw==",
|
|
104
|
+
"-----END RSA PRIVATE KEY-----",
|
|
105
|
+
].join("\n");
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 读取支付 provider 需要的 USD cents 金额。
|
|
109
|
+
*/
|
|
110
|
+
function readTopupAmountUsdCents(topup) {
|
|
111
|
+
const direct = Number(topup.amount_usd_cents);
|
|
112
|
+
if (Number.isSafeInteger(direct) && direct > 0)
|
|
113
|
+
return direct;
|
|
114
|
+
const fallback = Math.round(Number(topup.amount) / 10_000);
|
|
115
|
+
if (!Number.isSafeInteger(fallback) || fallback <= 0) {
|
|
116
|
+
throw new TypeError("topup amount_usd_cents must be a positive integer");
|
|
117
|
+
}
|
|
118
|
+
return fallback;
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/payment/providers/waffo/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waffo Pancake payment provider 工厂。
|
|
3
|
+
*
|
|
4
|
+
* 关键说明(中文)
|
|
5
|
+
* - Waffo 只是 PaymentService 的一个 provider
|
|
6
|
+
* - 负责声明 env、生成支付方式、创建 Checkout、解析 webhook
|
|
7
|
+
*/
|
|
8
|
+
import type { PaymentProvider, WaffoPaymentProviderOptions } from "../../types.js";
|
|
9
|
+
/**
|
|
10
|
+
* 创建 Waffo Pancake provider。
|
|
11
|
+
*/
|
|
12
|
+
export declare function waffoPaymentProvider(options?: WaffoPaymentProviderOptions): PaymentProvider;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/payment/providers/waffo/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAUnF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,eAAe,CA0F/F"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waffo Pancake payment provider 工厂。
|
|
3
|
+
*
|
|
4
|
+
* 关键说明(中文)
|
|
5
|
+
* - Waffo 只是 PaymentService 的一个 provider
|
|
6
|
+
* - 负责声明 env、生成支付方式、创建 Checkout、解析 webhook
|
|
7
|
+
*/
|
|
8
|
+
import { normalizeCurrency, normalizeOptionalText, normalizeRequired, paymentMethodItem, randomId, } from "../../helpers.js";
|
|
9
|
+
import { createWaffoCheckoutSession, createWaffoClient, fallbackWaffoPrivateKey, normalizeWaffoEnvironment, parseWaffoWebhookEvent, readMetadata, } from "./client.js";
|
|
10
|
+
/**
|
|
11
|
+
* 创建 Waffo Pancake provider。
|
|
12
|
+
*/
|
|
13
|
+
export function waffoPaymentProvider(options = {}) {
|
|
14
|
+
const label = options.label?.trim() || "Waffo Pancake";
|
|
15
|
+
return {
|
|
16
|
+
id: "waffo",
|
|
17
|
+
label,
|
|
18
|
+
env: [
|
|
19
|
+
{ key: "WAFFO_MERCHANT_ID", description: "Waffo Merchant ID,例如 MER_xxx", required: true },
|
|
20
|
+
{ key: "WAFFO_PRIVATE_KEY", description: "Waffo API private key,用于 SDK 请求签名", required: true },
|
|
21
|
+
{ key: "WAFFO_PRODUCT_ID", description: "Waffo product_id,用于创建 Checkout Session", required: true },
|
|
22
|
+
{ key: "WAFFO_WEBHOOK_PUBLIC_KEY", description: "Waffo webhook public key,用于校验 x-waffo-signature", required: false },
|
|
23
|
+
{ key: "WAFFO_ENVIRONMENT", description: "Waffo 环境:test 或 prod;默认 test", required: false },
|
|
24
|
+
{ key: "WAFFO_CURRENCY", description: "默认结算币种,例如 usd", required: false },
|
|
25
|
+
{ key: "WAFFO_API_BASE_URL", description: "可选的 Waffo API 基础地址覆写,通常只用于测试环境", required: false },
|
|
26
|
+
],
|
|
27
|
+
method(ctx) {
|
|
28
|
+
const enabled = Boolean((options.merchant_id || ctx.env("WAFFO_MERCHANT_ID"))
|
|
29
|
+
&& (options.private_key || ctx.env("WAFFO_PRIVATE_KEY"))
|
|
30
|
+
&& (options.product_id || ctx.env("WAFFO_PRODUCT_ID")));
|
|
31
|
+
return paymentMethodItem({
|
|
32
|
+
id: "waffo",
|
|
33
|
+
enabled,
|
|
34
|
+
label,
|
|
35
|
+
currency: normalizeCurrency(ctx.env("WAFFO_CURRENCY")) || normalizeCurrency(options.currency) || "usd",
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
async createCheckout(input) {
|
|
39
|
+
const merchant_id = options.merchant_id ?? input.ctx.env("WAFFO_MERCHANT_ID");
|
|
40
|
+
const private_key = options.private_key ?? input.ctx.env("WAFFO_PRIVATE_KEY");
|
|
41
|
+
const product_id = options.product_id ?? input.ctx.env("WAFFO_PRODUCT_ID");
|
|
42
|
+
if (!merchant_id)
|
|
43
|
+
throw new Error("Waffo merchant id is not configured");
|
|
44
|
+
if (!private_key)
|
|
45
|
+
throw new Error("Waffo private key is not configured");
|
|
46
|
+
if (!product_id)
|
|
47
|
+
throw new Error("Waffo product id is not configured");
|
|
48
|
+
const client = createWaffoClient({
|
|
49
|
+
merchant_id,
|
|
50
|
+
private_key,
|
|
51
|
+
webhook_public_key: options.webhook_public_key ?? input.ctx.env("WAFFO_WEBHOOK_PUBLIC_KEY"),
|
|
52
|
+
api_base_url: options.api_base_url ?? input.ctx.env("WAFFO_API_BASE_URL"),
|
|
53
|
+
});
|
|
54
|
+
const created = await createWaffoCheckoutSession(client, {
|
|
55
|
+
payment_id: input.payment_id,
|
|
56
|
+
topup: input.topup,
|
|
57
|
+
product_id,
|
|
58
|
+
currency: normalizeCurrency(input.ctx.env("WAFFO_CURRENCY")) || normalizeCurrency(options.currency) || "usd",
|
|
59
|
+
success_url: input.success_url,
|
|
60
|
+
});
|
|
61
|
+
return {
|
|
62
|
+
provider_session_id: created.session_id,
|
|
63
|
+
checkout_url: created.checkout_url,
|
|
64
|
+
metadata: { product_id },
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
async parseWebhook(input) {
|
|
68
|
+
const client = createWaffoClient({
|
|
69
|
+
merchant_id: options.merchant_id ?? input.ctx.env("WAFFO_MERCHANT_ID") ?? "MER_webhook",
|
|
70
|
+
private_key: options.private_key ?? input.ctx.env("WAFFO_PRIVATE_KEY") ?? fallbackWaffoPrivateKey(),
|
|
71
|
+
webhook_public_key: options.webhook_public_key ?? input.ctx.env("WAFFO_WEBHOOK_PUBLIC_KEY"),
|
|
72
|
+
api_base_url: options.api_base_url ?? input.ctx.env("WAFFO_API_BASE_URL"),
|
|
73
|
+
});
|
|
74
|
+
const event = parseWaffoWebhookEvent({
|
|
75
|
+
client,
|
|
76
|
+
raw: input.raw,
|
|
77
|
+
signature: input.request.headers.get("x-waffo-signature"),
|
|
78
|
+
environment: normalizeWaffoEnvironment(input.ctx.env("WAFFO_ENVIRONMENT") || options.environment),
|
|
79
|
+
});
|
|
80
|
+
const data = readMetadata(event.data);
|
|
81
|
+
const metadata = readMetadata(data.orderMetadata);
|
|
82
|
+
const order_id = normalizeOptionalText(data.orderId);
|
|
83
|
+
const payment_id = normalizeOptionalText(data.paymentId) || normalizeOptionalText(event.eventId);
|
|
84
|
+
const type = normalizeOptionalText(event.eventType) || "unknown";
|
|
85
|
+
return {
|
|
86
|
+
event_id: normalizeRequired(event.id || event.eventId || `evt_${randomId()}`, "waffo event id"),
|
|
87
|
+
type,
|
|
88
|
+
payload: event,
|
|
89
|
+
status: type === "order.completed" ? "paid" : "ignored",
|
|
90
|
+
payment_id: normalizeOptionalText(data.orderMerchantExternalId),
|
|
91
|
+
topup_id: normalizeOptionalText(metadata.topup_id),
|
|
92
|
+
provider_payment_id: payment_id,
|
|
93
|
+
provider_order_id: order_id,
|
|
94
|
+
ref: payment_id || order_id,
|
|
95
|
+
meta: {
|
|
96
|
+
provider: "waffo",
|
|
97
|
+
waffo_event_id: normalizeOptionalText(event.id || event.eventId),
|
|
98
|
+
waffo_order_id: order_id,
|
|
99
|
+
waffo_payment_id: payment_id,
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/payment/providers/waffo/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waffo provider 内部类型。
|
|
3
|
+
*
|
|
4
|
+
* 关键说明(中文)
|
|
5
|
+
* - 仅供 waffo provider 内部使用
|
|
6
|
+
* - 对外可见类型(如 WaffoPaymentProviderOptions)放在 payment/types.ts
|
|
7
|
+
*/
|
|
8
|
+
import type { PaymentTopupRecord } from "../../types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Waffo 运行环境。
|
|
11
|
+
*/
|
|
12
|
+
export type WaffoPaymentEnvironment = "test" | "prod";
|
|
13
|
+
/**
|
|
14
|
+
* Waffo Checkout API 创建参数。
|
|
15
|
+
*/
|
|
16
|
+
export interface WaffoCreateCheckoutSessionInput {
|
|
17
|
+
/** 服务内部支付记录 ID。 */
|
|
18
|
+
payment_id: string;
|
|
19
|
+
/** 充值单信息。 */
|
|
20
|
+
topup: PaymentTopupRecord;
|
|
21
|
+
/** Waffo product_id。 */
|
|
22
|
+
product_id: string;
|
|
23
|
+
/** 结算币种。 */
|
|
24
|
+
currency: string;
|
|
25
|
+
/** 支付成功跳转地址。 */
|
|
26
|
+
success_url: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Waffo Checkout API 创建结果。
|
|
30
|
+
*/
|
|
31
|
+
export interface WaffoCheckoutSessionResult {
|
|
32
|
+
/** Waffo Checkout Session ID。 */
|
|
33
|
+
session_id: string;
|
|
34
|
+
/** Waffo Checkout 托管页面 URL。 */
|
|
35
|
+
checkout_url: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Waffo webhook 事件数据部分。
|
|
39
|
+
*/
|
|
40
|
+
export interface WaffoWebhookEventData extends Record<string, unknown> {
|
|
41
|
+
/** Waffo 订单 ID。 */
|
|
42
|
+
orderId?: unknown;
|
|
43
|
+
/** Waffo 支付 ID。 */
|
|
44
|
+
paymentId?: unknown;
|
|
45
|
+
/** 商户提交的订单外部 ID(即 payment_id)。 */
|
|
46
|
+
orderMerchantExternalId?: unknown;
|
|
47
|
+
/** 订单 metadata,用于回带 topup_id 等业务字段。 */
|
|
48
|
+
orderMetadata?: unknown;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Waffo webhook 事件。
|
|
52
|
+
*/
|
|
53
|
+
export interface WaffoWebhookEvent extends Record<string, unknown> {
|
|
54
|
+
/** Waffo 事件 ID。 */
|
|
55
|
+
id?: unknown;
|
|
56
|
+
/** Waffo 事件 ID 备用字段。 */
|
|
57
|
+
eventId?: unknown;
|
|
58
|
+
/** Waffo 事件类型。 */
|
|
59
|
+
eventType?: unknown;
|
|
60
|
+
/** Waffo 事件数据。 */
|
|
61
|
+
data?: WaffoWebhookEventData;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/payment/providers/waffo/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa;IACb,KAAK,EAAE,kBAAkB,CAAC;IAC1B,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpE,mBAAmB;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mBAAmB;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,uCAAuC;IACvC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAChE,mBAAmB;IACnB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,wBAAwB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB;IAClB,IAAI,CAAC,EAAE,qBAAqB,CAAC;CAC9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/payment/providers/waffo/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@downcity/services",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.101",
|
|
4
4
|
"description": "Downcity public services package for accounts, balance, usage, Stripe, Creem, Dodo, and Waffo payment flows.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./bin/index.js",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@waffo/pancake-ts": "^0.11.0",
|
|
53
|
-
"@downcity/city": "0.2.
|
|
53
|
+
"@downcity/city": "0.2.110",
|
|
54
54
|
"better-auth": "^1.6.12",
|
|
55
55
|
"dodopayments": "^2.36.0",
|
|
56
56
|
"drizzle-orm": "^0.45.2"
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"build": "rm -rf bin tsconfig.tsbuildinfo && tsc",
|
|
60
60
|
"dev": "tsc --watch",
|
|
61
61
|
"typecheck": "tsc --noEmit && tsc -p tsconfig.test.json",
|
|
62
|
-
"test": "tsc && tsc -p tsconfig.test.json && node --test test
|
|
62
|
+
"test": "tsc && tsc -p tsconfig.test.json && node --test $(find test -name \"*.test.mjs\")",
|
|
63
63
|
"version:patch": "node ../../scripts/bump-package-version.mjs ./package.json"
|
|
64
64
|
}
|
|
65
65
|
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Payment provider 工厂函数。
|
|
3
|
-
*
|
|
4
|
-
* 关键点(中文)
|
|
5
|
-
* - Stripe / Creem / Dodo / Waffo 只是 provider,不是 service。
|
|
6
|
-
* - 每个 provider 实现统一的 PaymentProvider 接口即可被 PaymentService 挂载。
|
|
7
|
-
*/
|
|
8
|
-
import type { CreemPaymentProviderOptions, DodoPaymentProviderOptions, PaymentProvider, StripePaymentProviderOptions, WaffoPaymentProviderOptions } from "./types.js";
|
|
9
|
-
/**
|
|
10
|
-
* 创建 Stripe payment provider。
|
|
11
|
-
*/
|
|
12
|
-
export declare function stripePaymentProvider(options?: StripePaymentProviderOptions): PaymentProvider;
|
|
13
|
-
/**
|
|
14
|
-
* 创建 Creem payment provider。
|
|
15
|
-
*/
|
|
16
|
-
export declare function creemPaymentProvider(options?: CreemPaymentProviderOptions): PaymentProvider;
|
|
17
|
-
/**
|
|
18
|
-
* 创建 Dodo Payments provider。
|
|
19
|
-
*/
|
|
20
|
-
export declare function dodoPaymentProvider(options?: DodoPaymentProviderOptions): PaymentProvider;
|
|
21
|
-
/**
|
|
22
|
-
* 创建 Waffo Pancake provider。
|
|
23
|
-
*/
|
|
24
|
-
export declare function waffoPaymentProvider(options?: WaffoPaymentProviderOptions): PaymentProvider;
|
|
25
|
-
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/payment/providers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAsCH,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,eAAe,EACf,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,GAAE,4BAAiC,GAAG,eAAe,CAgFjG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,eAAe,CA+E/F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B,GAAG,eAAe,CA2F7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,eAAe,CAyF/F"}
|