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.
- package/LICENSE +21 -0
- package/README.md +391 -0
- package/dist/app/app.d.ts +23 -0
- package/dist/app/app.d.ts.map +1 -0
- package/dist/app/app.js +89 -0
- package/dist/app/app.js.map +1 -0
- package/dist/config/loader.d.ts +3 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +30 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/core/base-payment.d.ts +70 -0
- package/dist/core/base-payment.d.ts.map +1 -0
- package/dist/core/base-payment.js +245 -0
- package/dist/core/base-payment.js.map +1 -0
- package/dist/core/cert-manager.d.ts +13 -0
- package/dist/core/cert-manager.d.ts.map +1 -0
- package/dist/core/cert-manager.js +32 -0
- package/dist/core/cert-manager.js.map +1 -0
- package/dist/core/client.d.ts +18 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +105 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/crypto.d.ts +7 -0
- package/dist/core/crypto.d.ts.map +1 -0
- package/dist/core/crypto.js +26 -0
- package/dist/core/crypto.js.map +1 -0
- package/dist/core/debug.d.ts +7 -0
- package/dist/core/debug.d.ts.map +1 -0
- package/dist/core/debug.js +22 -0
- package/dist/core/debug.js.map +1 -0
- package/dist/core/sign.d.ts +9 -0
- package/dist/core/sign.d.ts.map +1 -0
- package/dist/core/sign.js +22 -0
- package/dist/core/sign.js.map +1 -0
- package/dist/core/verify.d.ts +16 -0
- package/dist/core/verify.d.ts.map +1 -0
- package/dist/core/verify.js +66 -0
- package/dist/core/verify.js.map +1 -0
- package/dist/h5/h5.d.ts +22 -0
- package/dist/h5/h5.d.ts.map +1 -0
- package/dist/h5/h5.js +117 -0
- package/dist/h5/h5.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/jsapi/jsapi.d.ts +26 -0
- package/dist/jsapi/jsapi.d.ts.map +1 -0
- package/dist/jsapi/jsapi.js +132 -0
- package/dist/jsapi/jsapi.js.map +1 -0
- package/dist/native/index.d.ts +2 -0
- package/dist/native/index.d.ts.map +1 -0
- package/dist/native/index.js +2 -0
- package/dist/native/index.js.map +1 -0
- package/dist/native/native.d.ts +22 -0
- package/dist/native/native.d.ts.map +1 -0
- package/dist/native/native.js +88 -0
- package/dist/native/native.js.map +1 -0
- package/dist/types/api.d.ts +166 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +3 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/config.d.ts +17 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/payment.d.ts +353 -0
- package/dist/types/payment.d.ts.map +1 -0
- package/dist/types/payment.js +3 -0
- package/dist/types/payment.js.map +1 -0
- package/dist/types/webhook.d.ts +16 -0
- package/dist/types/webhook.d.ts.map +1 -0
- package/dist/types/webhook.js +2 -0
- package/dist/types/webhook.js.map +1 -0
- package/dist/webhook/index.d.ts +2 -0
- package/dist/webhook/index.d.ts.map +1 -0
- package/dist/webhook/index.js +2 -0
- package/dist/webhook/index.js.map +1 -0
- package/dist/webhook/webhook.d.ts +11 -0
- package/dist/webhook/webhook.d.ts.map +1 -0
- package/dist/webhook/webhook.js +35 -0
- package/dist/webhook/webhook.js.map +1 -0
- 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
|
+
}
|