node-easywechat 3.6.3 → 3.7.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 (77) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/README.md +25 -0
  3. package/dist/Channel/AccessToken.d.ts +8 -0
  4. package/dist/Channel/AccessToken.js +15 -0
  5. package/dist/Channel/Account.d.ts +4 -0
  6. package/dist/Channel/Account.js +8 -0
  7. package/dist/Channel/Application.d.ts +60 -0
  8. package/dist/Channel/Application.js +125 -0
  9. package/dist/Channel/Contracts/AccountInterface.d.ts +23 -0
  10. package/dist/Channel/Contracts/AccountInterface.js +25 -0
  11. package/dist/Channel/Contracts/ApplicationInterface.d.ts +62 -0
  12. package/dist/Channel/Contracts/ApplicationInterface.js +55 -0
  13. package/dist/Channel/Message.d.ts +542 -0
  14. package/dist/Channel/Message.js +9 -0
  15. package/dist/Channel/Server.d.ts +91 -0
  16. package/dist/Channel/Server.js +16 -0
  17. package/dist/Core/Cache/FileCache.js +46 -63
  18. package/dist/Core/Contracts/AccessTokenInterface.js +2 -15
  19. package/dist/Core/Contracts/CacheInterface.js +4 -21
  20. package/dist/Core/Contracts/RefreshableAccessTokenInterface.js +1 -12
  21. package/dist/Core/Contracts/ServerInterface.d.ts +3 -3
  22. package/dist/Core/Contracts/ServerInterface.js +4 -15
  23. package/dist/Core/Http/ServerRequest.js +34 -49
  24. package/dist/Core/HttpClient/AccessTokenAwareClient.js +6 -17
  25. package/dist/Core/HttpClient/Contracts/HttpClientInterface.js +1 -12
  26. package/dist/Core/HttpClient/HttpClient.js +74 -85
  27. package/dist/Core/HttpClient/HttpClientResponse.js +35 -50
  28. package/dist/Core/HttpClient/Mixins/HttpClientMethodsMixin.js +34 -59
  29. package/dist/Core/HttpClient/Mixins/PresetMixin.js +8 -11
  30. package/dist/Core/Message.js +20 -31
  31. package/dist/Core/Mixins/{DecryptXmlMessageMixin.d.ts → DecryptMessageMixin.d.ts} +2 -2
  32. package/dist/Core/Mixins/DecryptMessageMixin.js +34 -0
  33. package/dist/Core/Mixins/HandlersMixin.d.ts +8 -8
  34. package/dist/Core/Mixins/HandlersMixin.js +26 -39
  35. package/dist/Core/Mixins/{ResponseXmlMessageMixin.d.ts → ResponseMessageMixin.d.ts} +4 -3
  36. package/dist/Core/Mixins/ResponseMessageMixin.js +61 -0
  37. package/dist/Core/Support/Utils.js +8 -19
  38. package/dist/MiniApp/Application.js +1 -1
  39. package/dist/MiniApp/Utils.js +13 -24
  40. package/dist/OfficialAccount/AccessToken.js +42 -59
  41. package/dist/OfficialAccount/Application.js +1 -1
  42. package/dist/OfficialAccount/JsApiTicket.js +31 -44
  43. package/dist/OfficialAccount/Server.d.ts +24 -0
  44. package/dist/OfficialAccount/Server.js +25 -37
  45. package/dist/OfficialAccount/Utils.js +6 -17
  46. package/dist/OpenPlatform/Application.js +62 -86
  47. package/dist/OpenPlatform/Authorizer/MiniApp/Utils.js +14 -25
  48. package/dist/OpenPlatform/AuthorizerAccessToken.js +6 -19
  49. package/dist/OpenPlatform/ComponentAccessToken.js +27 -42
  50. package/dist/OpenPlatform/Server.js +31 -54
  51. package/dist/OpenPlatform/VerifyTicket.js +14 -27
  52. package/dist/OpenWork/Application.js +61 -84
  53. package/dist/OpenWork/AuthorizerAccessToken.js +32 -47
  54. package/dist/OpenWork/JsApiTicket.js +64 -81
  55. package/dist/OpenWork/ProviderAccessToken.js +26 -41
  56. package/dist/OpenWork/Server.js +50 -94
  57. package/dist/OpenWork/SuiteAccessToken.js +27 -42
  58. package/dist/OpenWork/SuiteTicket.js +14 -27
  59. package/dist/Pay/Application.js +1 -2
  60. package/dist/Pay/Client.js +63 -77
  61. package/dist/Pay/LegacySignature.js +2 -3
  62. package/dist/Pay/Merchant.js +36 -52
  63. package/dist/Pay/Server.js +55 -70
  64. package/dist/Pay/Utils.js +13 -26
  65. package/dist/Pay/Validator.js +28 -39
  66. package/dist/Types/global.d.ts +31 -0
  67. package/dist/Work/AccessToken.js +26 -41
  68. package/dist/Work/Application.js +21 -32
  69. package/dist/Work/JsApiTicket.js +60 -77
  70. package/dist/Work/Server.js +47 -86
  71. package/dist/Work/Utils.js +12 -25
  72. package/dist/index.d.ts +14 -2
  73. package/dist/index.js +19 -1
  74. package/package.json +1 -1
  75. package/tsconfig.json +2 -2
  76. package/dist/Core/Mixins/DecryptXmlMessageMixin.js +0 -38
  77. package/dist/Core/Mixins/ResponseXmlMessageMixin.js +0 -63
@@ -1,13 +1,4 @@
1
1
  'use strict';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -32,25 +23,23 @@ class JsApiTicket extends AccessToken_1.default {
32
23
  * 获取签名凭证jsapi_ticket
33
24
  * @returns
34
25
  */
35
- getTicket() {
36
- return __awaiter(this, void 0, void 0, function* () {
37
- let key = this.getKey();
38
- let ticket = '';
39
- if (this.cache) {
40
- ticket = yield this.cache.get(key);
41
- }
42
- if (!!ticket && typeof ticket === 'string') {
43
- return ticket;
44
- }
45
- let response = (yield this.httpClient.request('get', '/cgi-bin/get_jsapi_ticket', {})).toObject();
46
- if (!response['ticket']) {
47
- throw new Error('Failed to get jssdk_ticket: ' + JSON.stringify(response));
48
- }
49
- if (this.cache) {
50
- yield this.cache.set(key, response['ticket'], parseInt(response['expires_in']));
51
- }
52
- return response['ticket'];
53
- });
26
+ async getTicket() {
27
+ let key = this.getKey();
28
+ let ticket = '';
29
+ if (this.cache) {
30
+ ticket = await this.cache.get(key);
31
+ }
32
+ if (!!ticket && typeof ticket === 'string') {
33
+ return ticket;
34
+ }
35
+ let response = (await this.httpClient.request('get', '/cgi-bin/get_jsapi_ticket', {})).toObject();
36
+ if (!response['ticket']) {
37
+ throw new Error('Failed to get jssdk_ticket: ' + JSON.stringify(response));
38
+ }
39
+ if (this.cache) {
40
+ await this.cache.set(key, response['ticket'], parseInt(response['expires_in']));
41
+ }
42
+ return response['ticket'];
54
43
  }
55
44
  /**
56
45
  * 获取签名配置
@@ -59,19 +48,17 @@ class JsApiTicket extends AccessToken_1.default {
59
48
  * @param timestamp 时间长,默认:当前时间
60
49
  * @returns
61
50
  */
62
- createConfigSignature(url_1) {
63
- return __awaiter(this, arguments, void 0, function* (url, nonce = null, timestamp = null) {
64
- nonce = nonce || (0, Utils_1.randomString)(10);
65
- timestamp = timestamp || (0, Utils_1.getTimestamp)();
66
- let ticket = yield this.getTicket();
67
- return {
68
- url,
69
- nonceStr: nonce,
70
- timestamp,
71
- appId: this.corpId,
72
- signature: this.getTicketSignature(ticket, nonce, timestamp, url),
73
- };
74
- });
51
+ async createConfigSignature(url, nonce = null, timestamp = null) {
52
+ nonce = nonce || (0, Utils_1.randomString)(10);
53
+ timestamp = timestamp || (0, Utils_1.getTimestamp)();
54
+ let ticket = await this.getTicket();
55
+ return {
56
+ url,
57
+ nonceStr: nonce,
58
+ timestamp,
59
+ appId: this.corpId,
60
+ signature: this.getTicketSignature(ticket, nonce, timestamp, url),
61
+ };
75
62
  }
76
63
  getTicketSignature(ticket, nonce, timestamp, url) {
77
64
  return (0, Utils_1.createHash)(`jsapi_ticket=${ticket}&noncestr=${nonce}&timestamp=${timestamp}&url=${url}`, 'sha1');
@@ -84,49 +71,45 @@ class JsApiTicket extends AccessToken_1.default {
84
71
  * @param timestamp 时间长,默认:当前时间
85
72
  * @returns
86
73
  */
87
- createAgentConfigSignature(agentId_1, url_1) {
88
- return __awaiter(this, arguments, void 0, function* (agentId, url, nonce = null, timestamp = null) {
89
- nonce = nonce || (0, Utils_1.randomString)(10);
90
- timestamp = timestamp || (0, Utils_1.getTimestamp)();
91
- let ticket = yield this.getTicket();
92
- return {
93
- corpid: this.corpId,
94
- agentid: agentId,
95
- url,
96
- nonceStr: nonce,
97
- timestamp,
98
- signature: this.getTicketSignature(ticket, nonce, timestamp, url),
99
- };
100
- });
74
+ async createAgentConfigSignature(agentId, url, nonce = null, timestamp = null) {
75
+ nonce = nonce || (0, Utils_1.randomString)(10);
76
+ timestamp = timestamp || (0, Utils_1.getTimestamp)();
77
+ let ticket = await this.getTicket();
78
+ return {
79
+ corpid: this.corpId,
80
+ agentid: agentId,
81
+ url,
82
+ nonceStr: nonce,
83
+ timestamp,
84
+ signature: this.getTicketSignature(ticket, nonce, timestamp, url),
85
+ };
101
86
  }
102
87
  /**
103
88
  * 获取代理应用的签名凭证jsapi_ticket
104
89
  * @param agentId 代理应用的id
105
90
  * @returns
106
91
  */
107
- getAgentTicket(agentId) {
108
- return __awaiter(this, void 0, void 0, function* () {
109
- let key = this.getAgentKey(agentId);
110
- let ticket = '';
111
- if (this.cache) {
112
- ticket = yield this.cache.get(key);
113
- }
114
- if (!!ticket && typeof ticket === 'string') {
115
- return ticket;
116
- }
117
- let response = (yield this.httpClient.request('get', '/cgi-bin/ticket/get', {
118
- params: {
119
- type: 'agent_config',
120
- }
121
- })).toObject();
122
- if (!response['ticket']) {
123
- throw new Error('Failed to get jssdk agentTicket: ' + JSON.stringify(response));
124
- }
125
- if (this.cache) {
126
- yield this.cache.set(key, response['ticket'], parseInt(response['expires_in']));
92
+ async getAgentTicket(agentId) {
93
+ let key = this.getAgentKey(agentId);
94
+ let ticket = '';
95
+ if (this.cache) {
96
+ ticket = await this.cache.get(key);
97
+ }
98
+ if (!!ticket && typeof ticket === 'string') {
99
+ return ticket;
100
+ }
101
+ let response = (await this.httpClient.request('get', '/cgi-bin/ticket/get', {
102
+ params: {
103
+ type: 'agent_config',
127
104
  }
128
- return response['ticket'];
129
- });
105
+ })).toObject();
106
+ if (!response['ticket']) {
107
+ throw new Error('Failed to get jssdk agentTicket: ' + JSON.stringify(response));
108
+ }
109
+ if (this.cache) {
110
+ await this.cache.set(key, response['ticket'], parseInt(response['expires_in']));
111
+ }
112
+ return response['ticket'];
130
113
  }
131
114
  /**
132
115
  * 获取代理应用的jsapi_ticket的缓存名称
@@ -1,13 +1,4 @@
1
1
  'use strict';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -24,32 +15,27 @@ class Server extends ServerInterface_1.default {
24
15
  * 服务端消息处理
25
16
  * @returns
26
17
  */
27
- serve() {
28
- return __awaiter(this, void 0, void 0, function* () {
29
- var _a, _b, _c;
30
- let query = this.request.getQueryParams();
31
- if (!!query['echostr']) {
32
- let echostr = this.encryptor.decrypt(query['echostr'], (_a = query['msg_signature']) !== null && _a !== void 0 ? _a : '', (_b = query['nonce']) !== null && _b !== void 0 ? _b : '', (_c = query['timestamp']) !== null && _c !== void 0 ? _c : '');
33
- return new Response_1.default(200, { 'Content-Type': 'text/html' }, echostr);
34
- }
35
- let message = yield this.getRequestMessage(this.request);
36
- this.prepend(this.decryptRequestMessage(query));
37
- let response = yield this.handle(new Response_1.default(200, {}, 'SUCCESS'), message);
38
- if (!(response instanceof Response_1.default)) {
39
- response = yield this.transformToReply(response, message, this.encryptor);
40
- }
41
- return response;
42
- });
18
+ async serve() {
19
+ let query = this.request.getQueryParams();
20
+ if (!!query['echostr']) {
21
+ let echostr = this.encryptor.decrypt(query['echostr'], query['msg_signature'] ?? '', query['nonce'] ?? '', query['timestamp'] ?? '');
22
+ return new Response_1.default(200, { 'Content-Type': 'text/html' }, echostr);
23
+ }
24
+ let message = await this.getRequestMessage(this.request);
25
+ this.prepend(this.decryptRequestMessage(query));
26
+ let response = await this.handle(new Response_1.default(200, {}, 'SUCCESS'), message);
27
+ if (!(response instanceof Response_1.default)) {
28
+ response = await this.transformToReply(response, message, this.encryptor);
29
+ }
30
+ return response;
43
31
  }
44
32
  /**
45
33
  * 设置联系人变化的消息处理器
46
34
  * @param handler
47
35
  */
48
36
  handleContactChanged(handler) {
49
- return this.with(function (message, next) {
50
- return __awaiter(this, void 0, void 0, function* () {
51
- return message.Event === 'change_contact' ? handler(message, next) : next(message);
52
- });
37
+ return this.with(async function (message, next) {
38
+ return message.Event === 'change_contact' ? handler(message, next) : next(message);
53
39
  });
54
40
  }
55
41
  /**
@@ -57,10 +43,8 @@ class Server extends ServerInterface_1.default {
57
43
  * @param handler
58
44
  */
59
45
  handleUserTagUpdated(handler) {
60
- return this.with(function (message, next) {
61
- return __awaiter(this, void 0, void 0, function* () {
62
- return message.Event === 'change_contact' && message.ChangeType === 'update_tag' ? handler(message, next) : next(message);
63
- });
46
+ return this.with(async function (message, next) {
47
+ return message.Event === 'change_contact' && message.ChangeType === 'update_tag' ? handler(message, next) : next(message);
64
48
  });
65
49
  }
66
50
  /**
@@ -68,10 +52,8 @@ class Server extends ServerInterface_1.default {
68
52
  * @param handler
69
53
  */
70
54
  handleUserCreated(handler) {
71
- return this.with(function (message, next) {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- return message.Event === 'change_contact' && message.ChangeType === 'create_user' ? handler(message, next) : next(message);
74
- });
55
+ return this.with(async function (message, next) {
56
+ return message.Event === 'change_contact' && message.ChangeType === 'create_user' ? handler(message, next) : next(message);
75
57
  });
76
58
  }
77
59
  /**
@@ -79,10 +61,8 @@ class Server extends ServerInterface_1.default {
79
61
  * @param handler
80
62
  */
81
63
  handleUserUpdated(handler) {
82
- return this.with(function (message, next) {
83
- return __awaiter(this, void 0, void 0, function* () {
84
- return message.Event === 'change_contact' && message.ChangeType === 'update_user' ? handler(message, next) : next(message);
85
- });
64
+ return this.with(async function (message, next) {
65
+ return message.Event === 'change_contact' && message.ChangeType === 'update_user' ? handler(message, next) : next(message);
86
66
  });
87
67
  }
88
68
  /**
@@ -90,10 +70,8 @@ class Server extends ServerInterface_1.default {
90
70
  * @param handler
91
71
  */
92
72
  handleUserDeleted(handler) {
93
- return this.with(function (message, next) {
94
- return __awaiter(this, void 0, void 0, function* () {
95
- return message.Event === 'change_contact' && message.ChangeType === 'delete_user' ? handler(message, next) : next(message);
96
- });
73
+ return this.with(async function (message, next) {
74
+ return message.Event === 'change_contact' && message.ChangeType === 'delete_user' ? handler(message, next) : next(message);
97
75
  });
98
76
  }
99
77
  /**
@@ -101,10 +79,8 @@ class Server extends ServerInterface_1.default {
101
79
  * @param handler
102
80
  */
103
81
  handlePartyCreated(handler) {
104
- return this.with(function (message, next) {
105
- return __awaiter(this, void 0, void 0, function* () {
106
- return message.Event === 'change_contact' && message.ChangeType === 'create_party' ? handler(message, next) : next(message);
107
- });
82
+ return this.with(async function (message, next) {
83
+ return message.Event === 'change_contact' && message.ChangeType === 'create_party' ? handler(message, next) : next(message);
108
84
  });
109
85
  }
110
86
  /**
@@ -112,10 +88,8 @@ class Server extends ServerInterface_1.default {
112
88
  * @param handler
113
89
  */
114
90
  handlePartyUpdated(handler) {
115
- return this.with(function (message, next) {
116
- return __awaiter(this, void 0, void 0, function* () {
117
- return message.Event === 'change_contact' && message.ChangeType === 'update_party' ? handler(message, next) : next(message);
118
- });
91
+ return this.with(async function (message, next) {
92
+ return message.Event === 'change_contact' && message.ChangeType === 'update_party' ? handler(message, next) : next(message);
119
93
  });
120
94
  }
121
95
  /**
@@ -123,10 +97,8 @@ class Server extends ServerInterface_1.default {
123
97
  * @param handler
124
98
  */
125
99
  handlePartyDeleted(handler) {
126
- return this.with(function (message, next) {
127
- return __awaiter(this, void 0, void 0, function* () {
128
- return message.Event === 'change_contact' && message.ChangeType === 'delete_party' ? handler(message, next) : next(message);
129
- });
100
+ return this.with(async function (message, next) {
101
+ return message.Event === 'change_contact' && message.ChangeType === 'delete_party' ? handler(message, next) : next(message);
130
102
  });
131
103
  }
132
104
  /**
@@ -134,10 +106,8 @@ class Server extends ServerInterface_1.default {
134
106
  * @param handler
135
107
  */
136
108
  handleBatchJobsFinished(handler) {
137
- return this.with(function (message, next) {
138
- return __awaiter(this, void 0, void 0, function* () {
139
- return message.Event === 'batch_job_result' ? handler(message, next) : next(message);
140
- });
109
+ return this.with(async function (message, next) {
110
+ return message.Event === 'batch_job_result' ? handler(message, next) : next(message);
141
111
  });
142
112
  }
143
113
  /**
@@ -147,10 +117,8 @@ class Server extends ServerInterface_1.default {
147
117
  * @returns
148
118
  */
149
119
  addMessageListener(type, handler) {
150
- return this.withHandler(function (message, next) {
151
- return __awaiter(this, void 0, void 0, function* () {
152
- return message.MsgType === type ? handler(message, next) : next(message);
153
- });
120
+ return this.withHandler(async function (message, next) {
121
+ return message.MsgType === type ? handler(message, next) : next(message);
154
122
  });
155
123
  }
156
124
  /**
@@ -160,10 +128,8 @@ class Server extends ServerInterface_1.default {
160
128
  * @returns
161
129
  */
162
130
  addEventListener(event, handler) {
163
- return this.withHandler(function (message, next) {
164
- return __awaiter(this, void 0, void 0, function* () {
165
- return message.Event === event ? handler(message, next) : next(message);
166
- });
131
+ return this.withHandler(async function (message, next) {
132
+ return message.Event === event ? handler(message, next) : next(message);
167
133
  });
168
134
  }
169
135
  /**
@@ -172,40 +138,35 @@ class Server extends ServerInterface_1.default {
172
138
  * @returns
173
139
  */
174
140
  getRequestMessage(request = null) {
175
- return Message_1.default.createFromRequest(request !== null && request !== void 0 ? request : this.request);
141
+ return Message_1.default.createFromRequest(request ?? this.request);
176
142
  }
177
143
  validateUrl() {
178
- return (message, next) => __awaiter(this, void 0, void 0, function* () {
179
- var _a, _b, _c;
144
+ return async (message, next) => {
180
145
  let query = this.request.getQueryParams();
181
146
  if (!this.encryptor)
182
147
  return null;
183
- let echostr = this.encryptor.decrypt(query['echostr'], (_a = query['msg_signature']) !== null && _a !== void 0 ? _a : '', (_b = query['timestamp']) !== null && _b !== void 0 ? _b : '', (_c = query['nonce']) !== null && _c !== void 0 ? _c : '');
148
+ let echostr = this.encryptor.decrypt(query['echostr'], query['msg_signature'] ?? '', query['timestamp'] ?? '', query['nonce'] ?? '');
184
149
  return new Response_1.default(200, { 'Content-Type': 'text/html' }, echostr);
185
- });
150
+ };
186
151
  }
187
152
  decryptRequestMessage(query) {
188
- return (message, next) => __awaiter(this, void 0, void 0, function* () {
189
- var _a, _b, _c;
153
+ return async (message, next) => {
190
154
  if (!this.encryptor)
191
155
  return null;
192
- yield this.decryptMessage(message, this.encryptor, (_a = query['msg_signature']) !== null && _a !== void 0 ? _a : '', (_b = query['timestamp']) !== null && _b !== void 0 ? _b : '', (_c = query['nonce']) !== null && _c !== void 0 ? _c : '');
156
+ await this.decryptMessage(message, this.encryptor, query['msg_signature'] ?? '', query['timestamp'] ?? '', query['nonce'] ?? '');
193
157
  return next(message);
194
- });
158
+ };
195
159
  }
196
160
  /**
197
161
  * 获取解密后的消息
198
162
  * @param request 未设置该参数时,则从当前服务端收到的请求中获取
199
163
  * @returns
200
164
  */
201
- getDecryptedMessage() {
202
- return __awaiter(this, arguments, void 0, function* (request = null) {
203
- var _a, _b, _c;
204
- request = request !== null && request !== void 0 ? request : this.request;
205
- let message = yield this.getRequestMessage(request);
206
- let query = request.getQueryParams();
207
- return yield this.decryptMessage(message, this.encryptor, (_a = query['msg_signature']) !== null && _a !== void 0 ? _a : '', (_b = query['timestamp']) !== null && _b !== void 0 ? _b : '', (_c = query['nonce']) !== null && _c !== void 0 ? _c : '');
208
- });
165
+ async getDecryptedMessage(request = null) {
166
+ request = request ?? this.request;
167
+ let message = await this.getRequestMessage(request);
168
+ let query = request.getQueryParams();
169
+ return await this.decryptMessage(message, this.encryptor, query['msg_signature'] ?? '', query['timestamp'] ?? '', query['nonce'] ?? '');
209
170
  }
210
171
  }
211
172
  ;
@@ -1,13 +1,4 @@
1
1
  'use strict';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -24,14 +15,12 @@ class Utils {
24
15
  * @param debug 是否开启调试模式,默认:false
25
16
  * @returns
26
17
  */
27
- buildJsSdkConfig(url_1) {
28
- return __awaiter(this, arguments, void 0, function* (url, jsApiList = [], openTagList = [], debug = false) {
29
- return (0, merge_1.default)({
30
- jsApiList,
31
- openTagList,
32
- debug,
33
- }, yield this.app.getTicket().createConfigSignature(url));
34
- });
18
+ async buildJsSdkConfig(url, jsApiList = [], openTagList = [], debug = false) {
19
+ return (0, merge_1.default)({
20
+ jsApiList,
21
+ openTagList,
22
+ debug,
23
+ }, await this.app.getTicket().createConfigSignature(url));
35
24
  }
36
25
  /**
37
26
  * 构建代理应用的jssdk配置
@@ -42,14 +31,12 @@ class Utils {
42
31
  * @param debug 是否开启调试模式,默认:false
43
32
  * @returns
44
33
  */
45
- buildJsSdkAgentConfig(agentId_1, url_1) {
46
- return __awaiter(this, arguments, void 0, function* (agentId, url, jsApiList = [], openTagList = [], debug = false) {
47
- return (0, merge_1.default)({
48
- jsApiList,
49
- openTagList,
50
- debug,
51
- }, yield this.app.getTicket().createAgentConfigSignature(agentId, url));
52
- });
34
+ async buildJsSdkAgentConfig(agentId, url, jsApiList = [], openTagList = [], debug = false) {
35
+ return (0, merge_1.default)({
36
+ jsApiList,
37
+ openTagList,
38
+ debug,
39
+ }, await this.app.getTicket().createAgentConfigSignature(agentId, url));
53
40
  }
54
41
  }
55
42
  ;
package/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
- import { OfficialAccountConfig, MiniAppConfig, LogHandler, ServerEventType, ServerHandlerClosure, PayConfig, OpenPlatformConfig, WorkConfig, OpenWorkConfig, HttpClientFailureJudgeClosure, PaymentFailHandler, PaymentAlertHandler, PaymentPaidHandler, PaymentRefundedHandler, PaymentScannedHandler } from './Types/global';
1
+ import { OfficialAccountConfig, MiniAppConfig, LogHandler, ServerEventType, ServerHandlerClosure, PayConfig, OpenPlatformConfig, WorkConfig, OpenWorkConfig, ChannelConfig, HttpClientFailureJudgeClosure, PaymentFailHandler, PaymentAlertHandler, PaymentPaidHandler, PaymentRefundedHandler, PaymentScannedHandler } from './Types/global';
2
2
  import OfficialAccount from './OfficialAccount/Application';
3
3
  import MiniApp from './MiniApp/Application';
4
4
  import Pay from './Pay/Application';
5
5
  import OpenPlatform from './OpenPlatform/Application';
6
6
  import Work from './Work/Application';
7
7
  import OpenWork from './OpenWork/Application';
8
+ import Channel from './Channel/Application';
8
9
  import CacheInterface from './Core/Contracts/CacheInterface';
9
10
  import ServerRequest from './Core/Http/ServerRequest';
10
11
  import FormData from 'form-data';
@@ -12,9 +13,10 @@ import OfficialAccountMessage from './OfficialAccount/Message';
12
13
  import WorkMessage from './Work/Message';
13
14
  import OpenPlatformMessage from './OpenPlatform/Message';
14
15
  import OpenWorkMessage from './OpenWork/Message';
16
+ import ChannelMessage from './Channel/Message';
15
17
  import { PublicKey } from './Core/Support/PublicKey';
16
18
  import { PrivateKey } from './Core/Support/PrivateKey';
17
- export { OfficialAccount, OfficialAccountConfig, MiniApp, MiniAppConfig, Pay, PayConfig, OpenPlatform, OpenPlatformConfig, Work, WorkConfig, OpenWork, OpenWorkConfig, CacheInterface, ServerRequest, LogHandler, ServerEventType, ServerHandlerClosure, PublicKey, PrivateKey,
19
+ export { OfficialAccount, OfficialAccountConfig, MiniApp, MiniAppConfig, Pay, PayConfig, OpenPlatform, OpenPlatformConfig, Work, WorkConfig, OpenWork, OpenWorkConfig, Channel, ChannelConfig, CacheInterface, ServerRequest, LogHandler, ServerEventType, ServerHandlerClosure, PublicKey, PrivateKey,
18
20
  /**
19
21
  * 表单对象
20
22
  * @see https://github.com/axios/axios#formdata
@@ -51,6 +53,11 @@ export declare function defineWorkConfig(config: WorkConfig): WorkConfig;
51
53
  * @param config
52
54
  */
53
55
  export declare function defineOpenWorkConfig(config: OpenWorkConfig): OpenWorkConfig;
56
+ /**
57
+ * 定义视频号配置
58
+ * @param config
59
+ */
60
+ export declare function defineChannelConfig(config: ChannelConfig): ChannelConfig;
54
61
  /**
55
62
  * 定义日志处理函数
56
63
  * @param func
@@ -81,6 +88,11 @@ export declare function defineOpenPlatformServerHandler(func: ServerHandlerClosu
81
88
  * @param func
82
89
  */
83
90
  export declare function defineOpenWorkServerHandler(func: ServerHandlerClosure<OpenWorkMessage>): ServerHandlerClosure<OpenWorkMessage>;
91
+ /**
92
+ * 定义视频号服务端消息处理函数
93
+ * @param func
94
+ */
95
+ export declare function defineChannelServerHandler(func: ServerHandlerClosure<ChannelMessage>): ServerHandlerClosure<ChannelMessage>;
84
96
  /**
85
97
  * 定义HttpClient错误判定回调
86
98
  * @param func
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.definePaymentScannedHandler = exports.definePaymentRefundedHandler = exports.definePaymentPaidHandler = exports.definePaymentAlertHandler = exports.definePaymentFailHandler = exports.defineHttpClientFailureJudgeClosure = exports.defineOpenWorkServerHandler = exports.defineOpenPlatformServerHandler = exports.defineWorkServerHandler = exports.defineMiniAppServerHandler = exports.defineOfficeAccountServerHandler = exports.defineLogHandler = exports.defineOpenWorkConfig = exports.defineWorkConfig = exports.defineOpenPlatformConfig = exports.definePayConfig = exports.defineMiniAppConfig = exports.defineOfficialAccountConfig = exports.FormData = exports.PrivateKey = exports.PublicKey = exports.ServerRequest = exports.CacheInterface = exports.OpenWork = exports.Work = exports.OpenPlatform = exports.Pay = exports.MiniApp = exports.OfficialAccount = void 0;
6
+ exports.definePaymentScannedHandler = exports.definePaymentRefundedHandler = exports.definePaymentPaidHandler = exports.definePaymentAlertHandler = exports.definePaymentFailHandler = exports.defineHttpClientFailureJudgeClosure = exports.defineChannelServerHandler = exports.defineOpenWorkServerHandler = exports.defineOpenPlatformServerHandler = exports.defineWorkServerHandler = exports.defineMiniAppServerHandler = exports.defineOfficeAccountServerHandler = exports.defineLogHandler = exports.defineChannelConfig = exports.defineOpenWorkConfig = exports.defineWorkConfig = exports.defineOpenPlatformConfig = exports.definePayConfig = exports.defineMiniAppConfig = exports.defineOfficialAccountConfig = exports.FormData = exports.PrivateKey = exports.PublicKey = exports.ServerRequest = exports.CacheInterface = exports.Channel = exports.OpenWork = exports.Work = exports.OpenPlatform = exports.Pay = exports.MiniApp = exports.OfficialAccount = void 0;
7
7
  const Application_1 = __importDefault(require("./OfficialAccount/Application"));
8
8
  exports.OfficialAccount = Application_1.default;
9
9
  const Application_2 = __importDefault(require("./MiniApp/Application"));
@@ -16,6 +16,8 @@ const Application_5 = __importDefault(require("./Work/Application"));
16
16
  exports.Work = Application_5.default;
17
17
  const Application_6 = __importDefault(require("./OpenWork/Application"));
18
18
  exports.OpenWork = Application_6.default;
19
+ const Application_7 = __importDefault(require("./Channel/Application"));
20
+ exports.Channel = Application_7.default;
19
21
  const CacheInterface_1 = __importDefault(require("./Core/Contracts/CacheInterface"));
20
22
  exports.CacheInterface = CacheInterface_1.default;
21
23
  const ServerRequest_1 = __importDefault(require("./Core/Http/ServerRequest"));
@@ -74,6 +76,14 @@ function defineOpenWorkConfig(config) {
74
76
  return config;
75
77
  }
76
78
  exports.defineOpenWorkConfig = defineOpenWorkConfig;
79
+ /**
80
+ * 定义视频号配置
81
+ * @param config
82
+ */
83
+ function defineChannelConfig(config) {
84
+ return config;
85
+ }
86
+ exports.defineChannelConfig = defineChannelConfig;
77
87
  /**
78
88
  * 定义日志处理函数
79
89
  * @param func
@@ -122,6 +132,14 @@ function defineOpenWorkServerHandler(func) {
122
132
  return func;
123
133
  }
124
134
  exports.defineOpenWorkServerHandler = defineOpenWorkServerHandler;
135
+ /**
136
+ * 定义视频号服务端消息处理函数
137
+ * @param func
138
+ */
139
+ function defineChannelServerHandler(func) {
140
+ return func;
141
+ }
142
+ exports.defineChannelServerHandler = defineChannelServerHandler;
125
143
  /**
126
144
  * 定义HttpClient错误判定回调
127
145
  * @param func
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-easywechat",
3
- "version": "3.6.3",
3
+ "version": "3.7.1",
4
4
  "description": "EasyWechat SDK for Node.js (NOT OFFICIAL)",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
package/tsconfig.json CHANGED
@@ -3,8 +3,8 @@
3
3
  /* Visit https://aka.ms/tsconfig.json to read more about this file */
4
4
  /* Basic Options */
5
5
  // "incremental": true, /* Enable incremental compilation */
6
- "target": "es6", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
7
- "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
6
+ "target": "ES2020", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */
7
+ "module": "node16", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */
8
8
  // "lib": [], /* Specify library files to be included in the compilation. */
9
9
  "allowJs": true, /* Allow javascript files to be compiled. */
10
10
  // "checkJs": true, /* Report errors in .js files. */
@@ -1,38 +0,0 @@
1
- 'use strict';
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- const Utils_1 = require("../Support/Utils");
12
- class DecryptXmlMessageMixin {
13
- /**
14
- * 解密消息
15
- * @returns
16
- */
17
- decryptMessage(message, encryptor, signature, timestamp, nonce) {
18
- return __awaiter(this, void 0, void 0, function* () {
19
- let ciphertext = message['Encrypt'];
20
- this.validateSignature(encryptor.getToken(), ciphertext, signature, timestamp, nonce);
21
- let attributes = yield (0, Utils_1.parseXml)(encryptor.decrypt(ciphertext, signature, nonce, timestamp));
22
- message.merge(attributes);
23
- return message;
24
- });
25
- }
26
- validateSignature(token, ciphertext, signature, timestamp, nonce) {
27
- if (!signature) {
28
- throw new Error('Request signature must not be empty.');
29
- }
30
- let params = [token, timestamp, nonce, ciphertext];
31
- params.sort();
32
- if (signature !== (0, Utils_1.createHash)(params.join(''), 'sha1')) {
33
- throw new Error('Invalid request signature.');
34
- }
35
- }
36
- }
37
- ;
38
- module.exports = DecryptXmlMessageMixin;