better-wechatpay 1.0.0

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 (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +391 -0
  3. package/dist/app/app.d.ts +23 -0
  4. package/dist/app/app.d.ts.map +1 -0
  5. package/dist/app/app.js +89 -0
  6. package/dist/app/app.js.map +1 -0
  7. package/dist/config/loader.d.ts +3 -0
  8. package/dist/config/loader.d.ts.map +1 -0
  9. package/dist/config/loader.js +30 -0
  10. package/dist/config/loader.js.map +1 -0
  11. package/dist/core/base-payment.d.ts +70 -0
  12. package/dist/core/base-payment.d.ts.map +1 -0
  13. package/dist/core/base-payment.js +245 -0
  14. package/dist/core/base-payment.js.map +1 -0
  15. package/dist/core/cert-manager.d.ts +13 -0
  16. package/dist/core/cert-manager.d.ts.map +1 -0
  17. package/dist/core/cert-manager.js +32 -0
  18. package/dist/core/cert-manager.js.map +1 -0
  19. package/dist/core/client.d.ts +18 -0
  20. package/dist/core/client.d.ts.map +1 -0
  21. package/dist/core/client.js +105 -0
  22. package/dist/core/client.js.map +1 -0
  23. package/dist/core/crypto.d.ts +7 -0
  24. package/dist/core/crypto.d.ts.map +1 -0
  25. package/dist/core/crypto.js +26 -0
  26. package/dist/core/crypto.js.map +1 -0
  27. package/dist/core/debug.d.ts +7 -0
  28. package/dist/core/debug.d.ts.map +1 -0
  29. package/dist/core/debug.js +22 -0
  30. package/dist/core/debug.js.map +1 -0
  31. package/dist/core/sign.d.ts +9 -0
  32. package/dist/core/sign.d.ts.map +1 -0
  33. package/dist/core/sign.js +22 -0
  34. package/dist/core/sign.js.map +1 -0
  35. package/dist/core/verify.d.ts +16 -0
  36. package/dist/core/verify.d.ts.map +1 -0
  37. package/dist/core/verify.js +66 -0
  38. package/dist/core/verify.js.map +1 -0
  39. package/dist/h5/h5.d.ts +22 -0
  40. package/dist/h5/h5.d.ts.map +1 -0
  41. package/dist/h5/h5.js +117 -0
  42. package/dist/h5/h5.js.map +1 -0
  43. package/dist/index.d.ts +30 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +63 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/jsapi/jsapi.d.ts +26 -0
  48. package/dist/jsapi/jsapi.d.ts.map +1 -0
  49. package/dist/jsapi/jsapi.js +132 -0
  50. package/dist/jsapi/jsapi.js.map +1 -0
  51. package/dist/native/index.d.ts +2 -0
  52. package/dist/native/index.d.ts.map +1 -0
  53. package/dist/native/index.js +2 -0
  54. package/dist/native/index.js.map +1 -0
  55. package/dist/native/native.d.ts +22 -0
  56. package/dist/native/native.d.ts.map +1 -0
  57. package/dist/native/native.js +88 -0
  58. package/dist/native/native.js.map +1 -0
  59. package/dist/types/api.d.ts +166 -0
  60. package/dist/types/api.d.ts.map +1 -0
  61. package/dist/types/api.js +3 -0
  62. package/dist/types/api.js.map +1 -0
  63. package/dist/types/config.d.ts +17 -0
  64. package/dist/types/config.d.ts.map +1 -0
  65. package/dist/types/config.js +2 -0
  66. package/dist/types/config.js.map +1 -0
  67. package/dist/types/index.d.ts +6 -0
  68. package/dist/types/index.d.ts.map +1 -0
  69. package/dist/types/index.js +5 -0
  70. package/dist/types/index.js.map +1 -0
  71. package/dist/types/payment.d.ts +353 -0
  72. package/dist/types/payment.d.ts.map +1 -0
  73. package/dist/types/payment.js +3 -0
  74. package/dist/types/payment.js.map +1 -0
  75. package/dist/types/webhook.d.ts +16 -0
  76. package/dist/types/webhook.d.ts.map +1 -0
  77. package/dist/types/webhook.js +2 -0
  78. package/dist/types/webhook.js.map +1 -0
  79. package/dist/webhook/index.d.ts +2 -0
  80. package/dist/webhook/index.d.ts.map +1 -0
  81. package/dist/webhook/index.js +2 -0
  82. package/dist/webhook/index.js.map +1 -0
  83. package/dist/webhook/webhook.d.ts +11 -0
  84. package/dist/webhook/webhook.d.ts.map +1 -0
  85. package/dist/webhook/webhook.js +35 -0
  86. package/dist/webhook/webhook.js.map +1 -0
  87. package/package.json +49 -0
@@ -0,0 +1,35 @@
1
+ import { logger } from '../core/debug';
2
+ export class Webhook {
3
+ verifier;
4
+ crypto;
5
+ instance;
6
+ constructor(verifier, crypto, instance) {
7
+ this.verifier = verifier;
8
+ this.crypto = crypto;
9
+ this.instance = instance;
10
+ }
11
+ async verify(params) {
12
+ logger.log(this.instance, 'Verifying webhook:', {
13
+ timestamp: params.headers['wechatpay-timestamp'],
14
+ nonce: params.headers['wechatpay-nonce'],
15
+ serial: params.headers['wechatpay-serial']
16
+ });
17
+ const isValid = await this.verifier.verify(params.headers['wechatpay-timestamp'], params.headers['wechatpay-nonce'], params.body, params.headers['wechatpay-signature'], params.headers['wechatpay-serial']);
18
+ if (!isValid) {
19
+ logger.error(this.instance, 'Webhook signature verification failed');
20
+ return { success: false };
21
+ }
22
+ const notification = JSON.parse(params.body);
23
+ const decryptedData = this.crypto.decryptWebhookData(notification.resource.ciphertext, notification.resource.associated_data, notification.resource.nonce);
24
+ logger.log(this.instance, 'Webhook verified successfully:', {
25
+ eventType: notification.event_type,
26
+ orderId: decryptedData.out_trade_no
27
+ });
28
+ return {
29
+ success: true,
30
+ eventType: notification.event_type,
31
+ decryptedData
32
+ };
33
+ }
34
+ }
35
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/webhook/webhook.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,MAAM,OAAO,OAAO;IAER;IACA;IACA;IAHV,YACU,QAAkB,EAClB,MAAmB,EACnB,QAAgB;QAFhB,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAa;QACnB,aAAQ,GAAR,QAAQ,CAAQ;IACvB,CAAC;IAEJ,KAAK,CAAC,MAAM,CAAC,MAAqB;QAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,EAAE;YAC9C,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;YAChD,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;YACxC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC;SAC3C,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CACxC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EACrC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EACjC,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,EACrC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CACnC,CAAC;QAEF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,uCAAuC,CAAC,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAwB,CAAC;QAEpE,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAClD,YAAY,CAAC,QAAQ,CAAC,UAAU,EAChC,YAAY,CAAC,QAAQ,CAAC,eAAe,EACrC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAC5B,CAAC;QAEF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,gCAAgC,EAAE;YAC1D,SAAS,EAAE,YAAY,CAAC,UAAU;YAClC,OAAO,EAAE,aAAa,CAAC,YAAY;SACpC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,YAAY,CAAC,UAAiB;YACzC,aAAa;SACd,CAAC;IACJ,CAAC;CACF"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "better-wechatpay",
3
+ "version": "1.0.0",
4
+ "description": "Modern WeChat Pay SDK for Node.js - ESM, TypeScript, Native Payments",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "README.md",
17
+ "LICENSE"
18
+ ],
19
+ "scripts": {
20
+ "build": "tsc",
21
+ "test": "vitest run",
22
+ "test:watch": "vitest",
23
+ "typecheck": "tsc --noEmit",
24
+ "prepublishOnly": "npm run build"
25
+ },
26
+ "keywords": [
27
+ "wechat",
28
+ "wechatpay",
29
+ "payment",
30
+ "sdk",
31
+ "typescript",
32
+ "esm"
33
+ ],
34
+ "author": "",
35
+ "license": "MIT",
36
+ "dependencies": {
37
+ "@peculiar/x509": "^1.14.2",
38
+ "ofetch": "^1.4.0"
39
+ },
40
+ "devDependencies": {
41
+ "@types/node": "^20.12.0",
42
+ "tsx": "^4.21.0",
43
+ "typescript": "^5.7.0",
44
+ "vitest": "^4.0.16"
45
+ },
46
+ "engines": {
47
+ "node": ">=18.0.0"
48
+ }
49
+ }