@vobs/payment 0.3.0 → 1.2.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.
Files changed (178) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +182 -0
  3. package/dist/alipay/client.cjs +112 -0
  4. package/dist/alipay/client.cjs.map +1 -0
  5. package/dist/alipay/client.d.cts +36 -0
  6. package/dist/alipay/client.d.ts +36 -0
  7. package/dist/alipay/client.js +110 -0
  8. package/dist/alipay/client.js.map +1 -0
  9. package/dist/alipay/config.cjs +67 -0
  10. package/dist/alipay/config.cjs.map +1 -0
  11. package/dist/alipay/config.d.cts +30 -0
  12. package/dist/alipay/config.d.ts +30 -0
  13. package/dist/alipay/config.js +65 -0
  14. package/dist/alipay/config.js.map +1 -0
  15. package/dist/alipay/index.cjs +592 -0
  16. package/dist/alipay/index.cjs.map +1 -0
  17. package/dist/alipay/index.d.cts +12 -0
  18. package/dist/alipay/index.d.ts +12 -0
  19. package/dist/alipay/index.js +580 -0
  20. package/dist/alipay/index.js.map +1 -0
  21. package/dist/alipay/notify.cjs +70 -0
  22. package/dist/alipay/notify.cjs.map +1 -0
  23. package/dist/alipay/notify.d.cts +52 -0
  24. package/dist/alipay/notify.d.ts +52 -0
  25. package/dist/alipay/notify.js +68 -0
  26. package/dist/alipay/notify.js.map +1 -0
  27. package/dist/alipay/payment.cjs +49 -0
  28. package/dist/alipay/payment.cjs.map +1 -0
  29. package/dist/alipay/payment.d.cts +24 -0
  30. package/dist/alipay/payment.d.ts +24 -0
  31. package/dist/alipay/payment.js +47 -0
  32. package/dist/alipay/payment.js.map +1 -0
  33. package/dist/alipay/plugin.cjs +300 -0
  34. package/dist/alipay/plugin.cjs.map +1 -0
  35. package/dist/alipay/plugin.d.cts +43 -0
  36. package/dist/alipay/plugin.d.ts +43 -0
  37. package/dist/alipay/plugin.js +296 -0
  38. package/dist/alipay/plugin.js.map +1 -0
  39. package/dist/alipay/query.cjs +80 -0
  40. package/dist/alipay/query.cjs.map +1 -0
  41. package/dist/alipay/query.d.cts +26 -0
  42. package/dist/alipay/query.d.ts +26 -0
  43. package/dist/alipay/query.js +78 -0
  44. package/dist/alipay/query.js.map +1 -0
  45. package/dist/alipay/refund.cjs +104 -0
  46. package/dist/alipay/refund.cjs.map +1 -0
  47. package/dist/alipay/refund.d.cts +32 -0
  48. package/dist/alipay/refund.d.ts +32 -0
  49. package/dist/alipay/refund.js +102 -0
  50. package/dist/alipay/refund.js.map +1 -0
  51. package/dist/alipay/response.cjs +38 -0
  52. package/dist/alipay/response.cjs.map +1 -0
  53. package/dist/alipay/response.d.cts +19 -0
  54. package/dist/alipay/response.d.ts +19 -0
  55. package/dist/alipay/response.js +35 -0
  56. package/dist/alipay/response.js.map +1 -0
  57. package/dist/alipay/types.cjs +4 -0
  58. package/dist/alipay/types.cjs.map +1 -0
  59. package/dist/alipay/types.d.cts +242 -0
  60. package/dist/alipay/types.d.ts +242 -0
  61. package/dist/alipay/types.js +3 -0
  62. package/dist/alipay/types.js.map +1 -0
  63. package/dist/alipay/wap.cjs +50 -0
  64. package/dist/alipay/wap.cjs.map +1 -0
  65. package/dist/alipay/wap.d.cts +24 -0
  66. package/dist/alipay/wap.d.ts +24 -0
  67. package/dist/alipay/wap.js +48 -0
  68. package/dist/alipay/wap.js.map +1 -0
  69. package/dist/index-B1aUR7Vt.d.ts +49 -0
  70. package/dist/index-B8pzZxGq.d.cts +44 -0
  71. package/dist/index-BWnIrwRi.d.ts +44 -0
  72. package/dist/index-Dyrkl86r.d.cts +49 -0
  73. package/dist/index.cjs +1071 -0
  74. package/dist/index.cjs.map +1 -0
  75. package/dist/index.d.cts +23 -0
  76. package/dist/index.d.ts +23 -37
  77. package/dist/index.js +1052 -37
  78. package/dist/index.js.map +1 -0
  79. package/dist/wechat/client.cjs +119 -0
  80. package/dist/wechat/client.cjs.map +1 -0
  81. package/dist/wechat/client.d.cts +39 -0
  82. package/dist/wechat/client.d.ts +39 -0
  83. package/dist/wechat/client.js +117 -0
  84. package/dist/wechat/client.js.map +1 -0
  85. package/dist/wechat/config.cjs +76 -0
  86. package/dist/wechat/config.cjs.map +1 -0
  87. package/dist/wechat/config.d.cts +29 -0
  88. package/dist/wechat/config.d.ts +29 -0
  89. package/dist/wechat/config.js +74 -0
  90. package/dist/wechat/config.js.map +1 -0
  91. package/dist/wechat/index.cjs +612 -0
  92. package/dist/wechat/index.cjs.map +1 -0
  93. package/dist/wechat/index.d.cts +10 -0
  94. package/dist/wechat/index.d.ts +10 -0
  95. package/dist/wechat/index.js +602 -0
  96. package/dist/wechat/index.js.map +1 -0
  97. package/dist/wechat/notify.cjs +73 -0
  98. package/dist/wechat/notify.cjs.map +1 -0
  99. package/dist/wechat/notify.d.cts +53 -0
  100. package/dist/wechat/notify.d.ts +53 -0
  101. package/dist/wechat/notify.js +71 -0
  102. package/dist/wechat/notify.js.map +1 -0
  103. package/dist/wechat/payment.cjs +186 -0
  104. package/dist/wechat/payment.cjs.map +1 -0
  105. package/dist/wechat/payment.d.cts +50 -0
  106. package/dist/wechat/payment.d.ts +50 -0
  107. package/dist/wechat/payment.js +184 -0
  108. package/dist/wechat/payment.js.map +1 -0
  109. package/dist/wechat/plugin.cjs +305 -0
  110. package/dist/wechat/plugin.cjs.map +1 -0
  111. package/dist/wechat/plugin.d.cts +40 -0
  112. package/dist/wechat/plugin.d.ts +40 -0
  113. package/dist/wechat/plugin.js +301 -0
  114. package/dist/wechat/plugin.js.map +1 -0
  115. package/dist/wechat/refund.cjs +112 -0
  116. package/dist/wechat/refund.cjs.map +1 -0
  117. package/dist/wechat/refund.d.cts +26 -0
  118. package/dist/wechat/refund.d.ts +26 -0
  119. package/dist/wechat/refund.js +110 -0
  120. package/dist/wechat/refund.js.map +1 -0
  121. package/dist/wechat/response.cjs +50 -0
  122. package/dist/wechat/response.cjs.map +1 -0
  123. package/dist/wechat/response.d.cts +20 -0
  124. package/dist/wechat/response.d.ts +20 -0
  125. package/dist/wechat/response.js +46 -0
  126. package/dist/wechat/response.js.map +1 -0
  127. package/dist/wechat/types.cjs +4 -0
  128. package/dist/wechat/types.cjs.map +1 -0
  129. package/dist/wechat/types.d.cts +200 -0
  130. package/dist/wechat/types.d.ts +200 -0
  131. package/dist/wechat/types.js +3 -0
  132. package/dist/wechat/types.js.map +1 -0
  133. package/package.json +40 -27
  134. package/src/alipay/alipay.test.ts +231 -0
  135. package/src/alipay/client.ts +67 -0
  136. package/src/alipay/config.ts +72 -0
  137. package/src/alipay/index.ts +32 -0
  138. package/src/alipay/notify.ts +92 -0
  139. package/src/alipay/payment.ts +60 -0
  140. package/src/alipay/plugin.ts +64 -0
  141. package/src/alipay/query.ts +52 -0
  142. package/src/alipay/refund.ts +85 -0
  143. package/src/alipay/response.ts +40 -0
  144. package/src/alipay/types.ts +271 -0
  145. package/src/alipay/wap.ts +55 -0
  146. package/src/index.ts +78 -0
  147. package/src/wechat/client.ts +68 -0
  148. package/src/wechat/config.ts +81 -0
  149. package/src/wechat/index.ts +30 -0
  150. package/src/wechat/notify.ts +93 -0
  151. package/src/wechat/payment.ts +177 -0
  152. package/src/wechat/plugin.ts +59 -0
  153. package/src/wechat/refund.ts +80 -0
  154. package/src/wechat/response.ts +54 -0
  155. package/src/wechat/types.ts +223 -0
  156. package/src/wechat/wechat.test.ts +393 -0
  157. package/dist/alipay-official.d.ts +0 -34
  158. package/dist/alipay-official.js +0 -206
  159. package/dist/handlers.d.ts +0 -45
  160. package/dist/handlers.js +0 -105
  161. package/dist/jeepay.d.ts +0 -39
  162. package/dist/jeepay.js +0 -206
  163. package/dist/lakala.d.ts +0 -41
  164. package/dist/lakala.js +0 -243
  165. package/dist/manager.d.ts +0 -67
  166. package/dist/manager.js +0 -538
  167. package/dist/mock-driver.d.ts +0 -22
  168. package/dist/mock-driver.js +0 -59
  169. package/dist/state-machine.d.ts +0 -41
  170. package/dist/state-machine.js +0 -60
  171. package/dist/store.d.ts +0 -33
  172. package/dist/store.js +0 -76
  173. package/dist/types.d.ts +0 -168
  174. package/dist/types.js +0 -11
  175. package/dist/verify.d.ts +0 -34
  176. package/dist/verify.js +0 -55
  177. package/dist/wechat-official.d.ts +0 -40
  178. package/dist/wechat-official.js +0 -208
@@ -0,0 +1,76 @@
1
+ 'use strict';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
5
+
6
+ // packages/payment/src/wechat/config.ts
7
+ var _WechatConfig = class _WechatConfig {
8
+ constructor(options) {
9
+ this.validate(options);
10
+ this._options = { ...options };
11
+ }
12
+ /** 获取完整配置 */
13
+ get options() {
14
+ return this._options;
15
+ }
16
+ /** 商户号 */
17
+ get mchid() {
18
+ return this._options.mchid;
19
+ }
20
+ /** 应用 ID(公众号 / 小程序 / APP) */
21
+ get appid() {
22
+ return this._options.appid;
23
+ }
24
+ /** 商户 API 证书序列号 */
25
+ get serial() {
26
+ return this._options.serial;
27
+ }
28
+ /** APIv3 密钥(回调解密用) */
29
+ get apiv3Key() {
30
+ return this._options.apiv3Key;
31
+ }
32
+ /** 异步通知地址 */
33
+ get notifyUrl() {
34
+ return this._options.notifyUrl;
35
+ }
36
+ /** 更新配置(部分更新) */
37
+ update(patch) {
38
+ const merged = { ...this._options, ...patch };
39
+ this.validate(merged);
40
+ this._options = merged;
41
+ }
42
+ /** 替换配置 */
43
+ replace(options) {
44
+ this.validate(options);
45
+ this._options = { ...options };
46
+ }
47
+ validate(options) {
48
+ if (!options.mchid) {
49
+ throw new Error("WechatConfig: mchid \u4E0D\u80FD\u4E3A\u7A7A");
50
+ }
51
+ if (!options.serial) {
52
+ throw new Error("WechatConfig: serial\uFF08\u5546\u6237 API \u8BC1\u4E66\u5E8F\u5217\u53F7\uFF09\u4E0D\u80FD\u4E3A\u7A7A");
53
+ }
54
+ if (!options.privateKey) {
55
+ throw new Error("WechatConfig: privateKey\uFF08\u5546\u6237 API \u79C1\u94A5 PEM\uFF09\u4E0D\u80FD\u4E3A\u7A7A");
56
+ }
57
+ if (!options.certs || Object.keys(options.certs).length === 0) {
58
+ throw new Error("WechatConfig: certs\uFF08\u5E73\u53F0\u8BC1\u4E66/\u5FAE\u4FE1\u652F\u4ED8\u516C\u94A5 {\u5E8F\u5217\u53F7: PEM}\uFF09\u4E0D\u80FD\u4E3A\u7A7A");
59
+ }
60
+ if (!options.appid) {
61
+ throw new Error("WechatConfig: appid \u4E0D\u80FD\u4E3A\u7A7A");
62
+ }
63
+ if (!options.apiv3Key) {
64
+ throw new Error("WechatConfig: apiv3Key \u4E0D\u80FD\u4E3A\u7A7A");
65
+ }
66
+ if (options.apiv3Key.length !== 32) {
67
+ throw new Error("WechatConfig: apiv3Key \u5FC5\u987B\u4E3A 32 \u5B57\u8282\u5B57\u7B26\u4E32");
68
+ }
69
+ }
70
+ };
71
+ __name(_WechatConfig, "WechatConfig");
72
+ var WechatConfig = _WechatConfig;
73
+
74
+ exports.WechatConfig = WechatConfig;
75
+ //# sourceMappingURL=config.cjs.map
76
+ //# sourceMappingURL=config.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/wechat/config.ts"],"names":[],"mappings":";;;;;;AAMO,IAAM,aAAA,GAAN,MAAM,aAAA,CAAa;AAAA,EAGxB,YAAY,OAAA,EAA8B;AACxC,IAAA,IAAA,CAAK,SAAS,OAAO,CAAA;AACrB,IAAA,IAAA,CAAK,QAAA,GAAW,EAAE,GAAG,OAAA,EAAQ;AAAA,EAC/B;AAAA;AAAA,EAGA,IAAI,OAAA,GAAyC;AAC3C,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA;AAAA,EAGA,IAAI,KAAA,GAAgB;AAClB,IAAA,OAAO,KAAK,QAAA,CAAS,KAAA;AAAA,EACvB;AAAA;AAAA,EAGA,IAAI,KAAA,GAAgB;AAClB,IAAA,OAAO,KAAK,QAAA,CAAS,KAAA;AAAA,EACvB;AAAA;AAAA,EAGA,IAAI,MAAA,GAAiB;AACnB,IAAA,OAAO,KAAK,QAAA,CAAS,MAAA;AAAA,EACvB;AAAA;AAAA,EAGA,IAAI,QAAA,GAAmB;AACrB,IAAA,OAAO,KAAK,QAAA,CAAS,QAAA;AAAA,EACvB;AAAA;AAAA,EAGA,IAAI,SAAA,GAAgC;AAClC,IAAA,OAAO,KAAK,QAAA,CAAS,SAAA;AAAA,EACvB;AAAA;AAAA,EAGA,OAAO,KAAA,EAA2C;AAChD,IAAA,MAAM,SAAS,EAAE,GAAG,IAAA,CAAK,QAAA,EAAU,GAAG,KAAA,EAAM;AAC5C,IAAA,IAAA,CAAK,SAAS,MAAM,CAAA;AACpB,IAAA,IAAA,CAAK,QAAA,GAAW,MAAA;AAAA,EAClB;AAAA;AAAA,EAGA,QAAQ,OAAA,EAAoC;AAC1C,IAAA,IAAA,CAAK,SAAS,OAAO,CAAA;AACrB,IAAA,IAAA,CAAK,QAAA,GAAW,EAAE,GAAG,OAAA,EAAQ;AAAA,EAC/B;AAAA,EAEQ,SAAS,OAAA,EAAoC;AACnD,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAClB,MAAA,MAAM,IAAI,MAAM,8CAA0B,CAAA;AAAA,IAC5C;AACA,IAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,MAAA,MAAM,IAAI,MAAM,yGAAwC,CAAA;AAAA,IAC1D;AACA,IAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,MAAA,MAAM,IAAI,MAAM,+FAA6C,CAAA;AAAA,IAC/D;AACA,IAAA,IAAI,CAAC,QAAQ,KAAA,IAAS,MAAA,CAAO,KAAK,OAAA,CAAQ,KAAK,CAAA,CAAE,MAAA,KAAW,CAAA,EAAG;AAC7D,MAAA,MAAM,IAAI,MAAM,gJAAiD,CAAA;AAAA,IACnE;AACA,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAClB,MAAA,MAAM,IAAI,MAAM,8CAA0B,CAAA;AAAA,IAC5C;AACA,IAAA,IAAI,CAAC,QAAQ,QAAA,EAAU;AACrB,MAAA,MAAM,IAAI,MAAM,iDAA6B,CAAA;AAAA,IAC/C;AACA,IAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,MAAA,KAAW,EAAA,EAAI;AAClC,MAAA,MAAM,IAAI,MAAM,6EAAqC,CAAA;AAAA,IACvD;AAAA,EACF;AACF,CAAA;AA1E0B,MAAA,CAAA,aAAA,EAAA,cAAA,CAAA;AAAnB,IAAM,YAAA,GAAN","file":"config.cjs","sourcesContent":["import type { WechatClientOptions } from './types'\n\n/**\n * 微信支付配置管理\n * 遵循 vobs 生命周期管理:可创建、可校验、可更新、可替换\n */\nexport class WechatConfig {\n private _options: WechatClientOptions\n\n constructor(options: WechatClientOptions) {\n this.validate(options)\n this._options = { ...options }\n }\n\n /** 获取完整配置 */\n get options(): Readonly<WechatClientOptions> {\n return this._options\n }\n\n /** 商户号 */\n get mchid(): string {\n return this._options.mchid\n }\n\n /** 应用 ID(公众号 / 小程序 / APP) */\n get appid(): string {\n return this._options.appid\n }\n\n /** 商户 API 证书序列号 */\n get serial(): string {\n return this._options.serial\n }\n\n /** APIv3 密钥(回调解密用) */\n get apiv3Key(): string {\n return this._options.apiv3Key\n }\n\n /** 异步通知地址 */\n get notifyUrl(): string | undefined {\n return this._options.notifyUrl\n }\n\n /** 更新配置(部分更新) */\n update(patch: Partial<WechatClientOptions>): void {\n const merged = { ...this._options, ...patch }\n this.validate(merged)\n this._options = merged\n }\n\n /** 替换配置 */\n replace(options: WechatClientOptions): void {\n this.validate(options)\n this._options = { ...options }\n }\n\n private validate(options: WechatClientOptions): void {\n if (!options.mchid) {\n throw new Error('WechatConfig: mchid 不能为空')\n }\n if (!options.serial) {\n throw new Error('WechatConfig: serial(商户 API 证书序列号)不能为空')\n }\n if (!options.privateKey) {\n throw new Error('WechatConfig: privateKey(商户 API 私钥 PEM)不能为空')\n }\n if (!options.certs || Object.keys(options.certs).length === 0) {\n throw new Error('WechatConfig: certs(平台证书/微信支付公钥 {序列号: PEM})不能为空')\n }\n if (!options.appid) {\n throw new Error('WechatConfig: appid 不能为空')\n }\n if (!options.apiv3Key) {\n throw new Error('WechatConfig: apiv3Key 不能为空')\n }\n if (options.apiv3Key.length !== 32) {\n throw new Error('WechatConfig: apiv3Key 必须为 32 字节字符串')\n }\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import { WechatClientOptions } from './types.cjs';
2
+
3
+ /**
4
+ * 微信支付配置管理
5
+ * 遵循 vobs 生命周期管理:可创建、可校验、可更新、可替换
6
+ */
7
+ declare class WechatConfig {
8
+ private _options;
9
+ constructor(options: WechatClientOptions);
10
+ /** 获取完整配置 */
11
+ get options(): Readonly<WechatClientOptions>;
12
+ /** 商户号 */
13
+ get mchid(): string;
14
+ /** 应用 ID(公众号 / 小程序 / APP) */
15
+ get appid(): string;
16
+ /** 商户 API 证书序列号 */
17
+ get serial(): string;
18
+ /** APIv3 密钥(回调解密用) */
19
+ get apiv3Key(): string;
20
+ /** 异步通知地址 */
21
+ get notifyUrl(): string | undefined;
22
+ /** 更新配置(部分更新) */
23
+ update(patch: Partial<WechatClientOptions>): void;
24
+ /** 替换配置 */
25
+ replace(options: WechatClientOptions): void;
26
+ private validate;
27
+ }
28
+
29
+ export { WechatConfig };
@@ -0,0 +1,29 @@
1
+ import { WechatClientOptions } from './types.js';
2
+
3
+ /**
4
+ * 微信支付配置管理
5
+ * 遵循 vobs 生命周期管理:可创建、可校验、可更新、可替换
6
+ */
7
+ declare class WechatConfig {
8
+ private _options;
9
+ constructor(options: WechatClientOptions);
10
+ /** 获取完整配置 */
11
+ get options(): Readonly<WechatClientOptions>;
12
+ /** 商户号 */
13
+ get mchid(): string;
14
+ /** 应用 ID(公众号 / 小程序 / APP) */
15
+ get appid(): string;
16
+ /** 商户 API 证书序列号 */
17
+ get serial(): string;
18
+ /** APIv3 密钥(回调解密用) */
19
+ get apiv3Key(): string;
20
+ /** 异步通知地址 */
21
+ get notifyUrl(): string | undefined;
22
+ /** 更新配置(部分更新) */
23
+ update(patch: Partial<WechatClientOptions>): void;
24
+ /** 替换配置 */
25
+ replace(options: WechatClientOptions): void;
26
+ private validate;
27
+ }
28
+
29
+ export { WechatConfig };
@@ -0,0 +1,74 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // packages/payment/src/wechat/config.ts
5
+ var _WechatConfig = class _WechatConfig {
6
+ constructor(options) {
7
+ this.validate(options);
8
+ this._options = { ...options };
9
+ }
10
+ /** 获取完整配置 */
11
+ get options() {
12
+ return this._options;
13
+ }
14
+ /** 商户号 */
15
+ get mchid() {
16
+ return this._options.mchid;
17
+ }
18
+ /** 应用 ID(公众号 / 小程序 / APP) */
19
+ get appid() {
20
+ return this._options.appid;
21
+ }
22
+ /** 商户 API 证书序列号 */
23
+ get serial() {
24
+ return this._options.serial;
25
+ }
26
+ /** APIv3 密钥(回调解密用) */
27
+ get apiv3Key() {
28
+ return this._options.apiv3Key;
29
+ }
30
+ /** 异步通知地址 */
31
+ get notifyUrl() {
32
+ return this._options.notifyUrl;
33
+ }
34
+ /** 更新配置(部分更新) */
35
+ update(patch) {
36
+ const merged = { ...this._options, ...patch };
37
+ this.validate(merged);
38
+ this._options = merged;
39
+ }
40
+ /** 替换配置 */
41
+ replace(options) {
42
+ this.validate(options);
43
+ this._options = { ...options };
44
+ }
45
+ validate(options) {
46
+ if (!options.mchid) {
47
+ throw new Error("WechatConfig: mchid \u4E0D\u80FD\u4E3A\u7A7A");
48
+ }
49
+ if (!options.serial) {
50
+ throw new Error("WechatConfig: serial\uFF08\u5546\u6237 API \u8BC1\u4E66\u5E8F\u5217\u53F7\uFF09\u4E0D\u80FD\u4E3A\u7A7A");
51
+ }
52
+ if (!options.privateKey) {
53
+ throw new Error("WechatConfig: privateKey\uFF08\u5546\u6237 API \u79C1\u94A5 PEM\uFF09\u4E0D\u80FD\u4E3A\u7A7A");
54
+ }
55
+ if (!options.certs || Object.keys(options.certs).length === 0) {
56
+ throw new Error("WechatConfig: certs\uFF08\u5E73\u53F0\u8BC1\u4E66/\u5FAE\u4FE1\u652F\u4ED8\u516C\u94A5 {\u5E8F\u5217\u53F7: PEM}\uFF09\u4E0D\u80FD\u4E3A\u7A7A");
57
+ }
58
+ if (!options.appid) {
59
+ throw new Error("WechatConfig: appid \u4E0D\u80FD\u4E3A\u7A7A");
60
+ }
61
+ if (!options.apiv3Key) {
62
+ throw new Error("WechatConfig: apiv3Key \u4E0D\u80FD\u4E3A\u7A7A");
63
+ }
64
+ if (options.apiv3Key.length !== 32) {
65
+ throw new Error("WechatConfig: apiv3Key \u5FC5\u987B\u4E3A 32 \u5B57\u8282\u5B57\u7B26\u4E32");
66
+ }
67
+ }
68
+ };
69
+ __name(_WechatConfig, "WechatConfig");
70
+ var WechatConfig = _WechatConfig;
71
+
72
+ export { WechatConfig };
73
+ //# sourceMappingURL=config.js.map
74
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/wechat/config.ts"],"names":[],"mappings":";;;;AAMO,IAAM,aAAA,GAAN,MAAM,aAAA,CAAa;AAAA,EAGxB,YAAY,OAAA,EAA8B;AACxC,IAAA,IAAA,CAAK,SAAS,OAAO,CAAA;AACrB,IAAA,IAAA,CAAK,QAAA,GAAW,EAAE,GAAG,OAAA,EAAQ;AAAA,EAC/B;AAAA;AAAA,EAGA,IAAI,OAAA,GAAyC;AAC3C,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EACd;AAAA;AAAA,EAGA,IAAI,KAAA,GAAgB;AAClB,IAAA,OAAO,KAAK,QAAA,CAAS,KAAA;AAAA,EACvB;AAAA;AAAA,EAGA,IAAI,KAAA,GAAgB;AAClB,IAAA,OAAO,KAAK,QAAA,CAAS,KAAA;AAAA,EACvB;AAAA;AAAA,EAGA,IAAI,MAAA,GAAiB;AACnB,IAAA,OAAO,KAAK,QAAA,CAAS,MAAA;AAAA,EACvB;AAAA;AAAA,EAGA,IAAI,QAAA,GAAmB;AACrB,IAAA,OAAO,KAAK,QAAA,CAAS,QAAA;AAAA,EACvB;AAAA;AAAA,EAGA,IAAI,SAAA,GAAgC;AAClC,IAAA,OAAO,KAAK,QAAA,CAAS,SAAA;AAAA,EACvB;AAAA;AAAA,EAGA,OAAO,KAAA,EAA2C;AAChD,IAAA,MAAM,SAAS,EAAE,GAAG,IAAA,CAAK,QAAA,EAAU,GAAG,KAAA,EAAM;AAC5C,IAAA,IAAA,CAAK,SAAS,MAAM,CAAA;AACpB,IAAA,IAAA,CAAK,QAAA,GAAW,MAAA;AAAA,EAClB;AAAA;AAAA,EAGA,QAAQ,OAAA,EAAoC;AAC1C,IAAA,IAAA,CAAK,SAAS,OAAO,CAAA;AACrB,IAAA,IAAA,CAAK,QAAA,GAAW,EAAE,GAAG,OAAA,EAAQ;AAAA,EAC/B;AAAA,EAEQ,SAAS,OAAA,EAAoC;AACnD,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAClB,MAAA,MAAM,IAAI,MAAM,8CAA0B,CAAA;AAAA,IAC5C;AACA,IAAA,IAAI,CAAC,QAAQ,MAAA,EAAQ;AACnB,MAAA,MAAM,IAAI,MAAM,yGAAwC,CAAA;AAAA,IAC1D;AACA,IAAA,IAAI,CAAC,QAAQ,UAAA,EAAY;AACvB,MAAA,MAAM,IAAI,MAAM,+FAA6C,CAAA;AAAA,IAC/D;AACA,IAAA,IAAI,CAAC,QAAQ,KAAA,IAAS,MAAA,CAAO,KAAK,OAAA,CAAQ,KAAK,CAAA,CAAE,MAAA,KAAW,CAAA,EAAG;AAC7D,MAAA,MAAM,IAAI,MAAM,gJAAiD,CAAA;AAAA,IACnE;AACA,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAClB,MAAA,MAAM,IAAI,MAAM,8CAA0B,CAAA;AAAA,IAC5C;AACA,IAAA,IAAI,CAAC,QAAQ,QAAA,EAAU;AACrB,MAAA,MAAM,IAAI,MAAM,iDAA6B,CAAA;AAAA,IAC/C;AACA,IAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,MAAA,KAAW,EAAA,EAAI;AAClC,MAAA,MAAM,IAAI,MAAM,6EAAqC,CAAA;AAAA,IACvD;AAAA,EACF;AACF,CAAA;AA1E0B,MAAA,CAAA,aAAA,EAAA,cAAA,CAAA;AAAnB,IAAM,YAAA,GAAN","file":"config.js","sourcesContent":["import type { WechatClientOptions } from './types'\n\n/**\n * 微信支付配置管理\n * 遵循 vobs 生命周期管理:可创建、可校验、可更新、可替换\n */\nexport class WechatConfig {\n private _options: WechatClientOptions\n\n constructor(options: WechatClientOptions) {\n this.validate(options)\n this._options = { ...options }\n }\n\n /** 获取完整配置 */\n get options(): Readonly<WechatClientOptions> {\n return this._options\n }\n\n /** 商户号 */\n get mchid(): string {\n return this._options.mchid\n }\n\n /** 应用 ID(公众号 / 小程序 / APP) */\n get appid(): string {\n return this._options.appid\n }\n\n /** 商户 API 证书序列号 */\n get serial(): string {\n return this._options.serial\n }\n\n /** APIv3 密钥(回调解密用) */\n get apiv3Key(): string {\n return this._options.apiv3Key\n }\n\n /** 异步通知地址 */\n get notifyUrl(): string | undefined {\n return this._options.notifyUrl\n }\n\n /** 更新配置(部分更新) */\n update(patch: Partial<WechatClientOptions>): void {\n const merged = { ...this._options, ...patch }\n this.validate(merged)\n this._options = merged\n }\n\n /** 替换配置 */\n replace(options: WechatClientOptions): void {\n this.validate(options)\n this._options = { ...options }\n }\n\n private validate(options: WechatClientOptions): void {\n if (!options.mchid) {\n throw new Error('WechatConfig: mchid 不能为空')\n }\n if (!options.serial) {\n throw new Error('WechatConfig: serial(商户 API 证书序列号)不能为空')\n }\n if (!options.privateKey) {\n throw new Error('WechatConfig: privateKey(商户 API 私钥 PEM)不能为空')\n }\n if (!options.certs || Object.keys(options.certs).length === 0) {\n throw new Error('WechatConfig: certs(平台证书/微信支付公钥 {序列号: PEM})不能为空')\n }\n if (!options.appid) {\n throw new Error('WechatConfig: appid 不能为空')\n }\n if (!options.apiv3Key) {\n throw new Error('WechatConfig: apiv3Key 不能为空')\n }\n if (options.apiv3Key.length !== 32) {\n throw new Error('WechatConfig: apiv3Key 必须为 32 字节字符串')\n }\n }\n}\n"]}