node-easywechat 2.12.6 → 2.13.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/CHANGELOG.md +5 -0
- package/README.md +63 -0
- package/dist/Core/BaseAccessToken.js +2 -1
- package/dist/Core/BaseClient.d.ts +33 -1
- package/dist/Core/BaseClient.js +50 -3
- package/dist/Core/Http/Response.d.ts +4 -1
- package/dist/Core/Http/Response.js +9 -1
- package/dist/MicroMerchant/Application.d.ts +12 -0
- package/dist/MicroMerchant/Application.js +17 -0
- package/dist/MicroMerchant/Core/BaseClient.d.ts +3 -1
- package/dist/MicroMerchant/Core/BaseClient.js +3 -0
- package/dist/MiniProgram/Application.d.ts +12 -0
- package/dist/MiniProgram/Application.js +17 -0
- package/dist/OfficialAccount/Application.d.ts +12 -0
- package/dist/OfficialAccount/Application.js +17 -0
- package/dist/OpenPlatform/Application.d.ts +12 -0
- package/dist/OpenPlatform/Application.js +17 -0
- package/dist/OpenWork/Application.d.ts +12 -0
- package/dist/OpenWork/Application.js +17 -0
- package/dist/Payment/Application.d.ts +9 -0
- package/dist/Payment/Application.js +13 -0
- package/dist/Payment/Core/BaseClient.d.ts +4 -4
- package/dist/Payment/Core/BaseClient.js +16 -1
- package/dist/Work/Application.d.ts +12 -0
- package/dist/Work/Application.js +17 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/README.md
CHANGED
|
@@ -63,6 +63,69 @@ let app = EasyWechat.Factory.getInstance('OficialAccount', {
|
|
|
63
63
|
});
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
+
### 发起请求
|
|
67
|
+
|
|
68
|
+
本工具包封装了大部分常用的微信api,您可以直接使用,而不用考虑具体的接口地址。
|
|
69
|
+
|
|
70
|
+
以公众号获取用户信息为例:
|
|
71
|
+
|
|
72
|
+
```js
|
|
73
|
+
// 1. 创建公众号应用
|
|
74
|
+
let officialAccount = new EasyWechat.Factory.OfficialAccount({
|
|
75
|
+
// ...
|
|
76
|
+
});
|
|
77
|
+
// 2. 获取用户信息
|
|
78
|
+
let user = await officialAccount.user.get('user_openid');
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
但是,微信的api实在太多,有时可能不能及时更新,因此,自`2.13.0`版本开始,本工具提供通用的发送请求的客户端(感谢`ValueLan`的建议),具体使用方法如下:
|
|
82
|
+
|
|
83
|
+
```js
|
|
84
|
+
// 1. 创建公众号应用
|
|
85
|
+
let officialAccount = new EasyWechat.Factory.OfficialAccount({
|
|
86
|
+
// ...
|
|
87
|
+
});
|
|
88
|
+
// 2. 获取客户端实例
|
|
89
|
+
let client = officialAccount.getClient();
|
|
90
|
+
// 3. 发送请求
|
|
91
|
+
// get
|
|
92
|
+
let querystring = { foo: 'bar' };
|
|
93
|
+
let data = client.httpGet('/example-url', querystring);
|
|
94
|
+
|
|
95
|
+
// post
|
|
96
|
+
let data = { foo: 'bar' };
|
|
97
|
+
let data = client.httpPost('/example-url', data);
|
|
98
|
+
|
|
99
|
+
// 上传文件
|
|
100
|
+
let files = { file1: '/path/to/file1', file2: fs.createReadStream('/path/to/file2') };
|
|
101
|
+
let data = { foo: 'bar' };
|
|
102
|
+
let querystring = { foo: 'bar' };
|
|
103
|
+
let data = client.httpUpload('/example-url', files, data, querystring);
|
|
104
|
+
|
|
105
|
+
// 通用请求
|
|
106
|
+
let payload = { url: '/example-url', method: 'post', data: { foo: 'bar' } };
|
|
107
|
+
let data = client.request(payload); // 参数为 axios 的请求参数
|
|
108
|
+
|
|
109
|
+
// 通用请求(返回原始数据,可用于下载文件等)
|
|
110
|
+
let payload = { url: '/example-url', method: 'post', data: { foo: 'bar' } };
|
|
111
|
+
let data = client.requestRaw(payload); // 参数为 axios 的请求参数
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**注意**:如果是 `Payment` 支付应用,则只有 `request`、`requestRaw` 方法,以及 `safeRequest` 方法(该方法请求时会携带支付证书),切请求参数也不一样
|
|
115
|
+
|
|
116
|
+
```js
|
|
117
|
+
// 1. 创建公众号应用
|
|
118
|
+
let payment = new EasyWechat.Factory.Payment({
|
|
119
|
+
// ...
|
|
120
|
+
});
|
|
121
|
+
// 2. 获取客户端实例
|
|
122
|
+
let client = payment.getClient();
|
|
123
|
+
// 3. 发送请求 request、safeRequest、requestRaw 三个方法参数一样
|
|
124
|
+
let data = { foo: 'bar' };
|
|
125
|
+
let payload = {}; // axios 的请求参数
|
|
126
|
+
let data = client.request('/example-url', data, 'post', payload);
|
|
127
|
+
```
|
|
128
|
+
|
|
66
129
|
### 配置项示例
|
|
67
130
|
|
|
68
131
|
``` js
|
|
@@ -205,7 +205,8 @@ class BaseAccessToken {
|
|
|
205
205
|
return __awaiter(this, void 0, void 0, function* () {
|
|
206
206
|
payload.params = payload.params || {};
|
|
207
207
|
if (!payload.params[this.queryName || this.tokenKey]) {
|
|
208
|
-
|
|
208
|
+
let token = yield this.getToken();
|
|
209
|
+
payload.params[this.queryName || this.tokenKey] = token[this.tokenKey];
|
|
209
210
|
}
|
|
210
211
|
return payload;
|
|
211
212
|
});
|
|
@@ -9,11 +9,43 @@ declare abstract class BaseClient implements HttpMixin {
|
|
|
9
9
|
constructor(app: BaseApplication, accessToken?: BaseAccessToken);
|
|
10
10
|
setAccessToken(accessToken: BaseAccessToken): this;
|
|
11
11
|
getAccessToken(): BaseAccessToken;
|
|
12
|
+
/**
|
|
13
|
+
* 发送请求
|
|
14
|
+
* @param payload axios请求参数
|
|
15
|
+
* @param returnResponse 是否返回axios响应对象,默认false表示直接返回数据
|
|
16
|
+
*/
|
|
12
17
|
request(payload: AxiosRequestConfig, returnResponse?: Boolean): Promise<AxiosResponse<any>>;
|
|
18
|
+
/**
|
|
19
|
+
* 上传文件请求
|
|
20
|
+
* @param url 地址
|
|
21
|
+
* @param files 文件键值对,键名为文件字段,键值为文件路径或可读流
|
|
22
|
+
* @param form 其它表单参数键值对
|
|
23
|
+
* @param query querystring参数键值对
|
|
24
|
+
*/
|
|
13
25
|
httpUpload(url: string, files?: object, form?: object, query?: object): Promise<any>;
|
|
26
|
+
/**
|
|
27
|
+
* Get请求
|
|
28
|
+
* @param url 地址
|
|
29
|
+
* @param query querystring参数键值对
|
|
30
|
+
*/
|
|
14
31
|
httpGet(url: string, query?: object): Promise<any>;
|
|
15
|
-
|
|
32
|
+
/**
|
|
33
|
+
* Post请求
|
|
34
|
+
* @param url 地址
|
|
35
|
+
* @param data body数据,详见 axios 请求配置的 data 参数
|
|
36
|
+
*/
|
|
37
|
+
httpPost(url: string, data?: object): Promise<any>;
|
|
38
|
+
/**
|
|
39
|
+
* Post请求(JSON数据)
|
|
40
|
+
* @param url 地址
|
|
41
|
+
* @param data body数据,详见 axios 请求配置的 data 参数
|
|
42
|
+
* @param query querystring参数键值对
|
|
43
|
+
*/
|
|
16
44
|
httpPostJson(url: string, data?: object, query?: object): Promise<any>;
|
|
45
|
+
/**
|
|
46
|
+
* 发送请求并返回原始数据,主要用于下载文件等。返回封装过的Response对象
|
|
47
|
+
* @param payload axios请求参数
|
|
48
|
+
*/
|
|
17
49
|
requestRaw(payload: AxiosRequestConfig): Promise<Response>;
|
|
18
50
|
doRequest(payload: AxiosRequestConfig): Promise<AxiosResponse<any>>;
|
|
19
51
|
}
|
package/dist/Core/BaseClient.js
CHANGED
|
@@ -31,6 +31,11 @@ class BaseClient {
|
|
|
31
31
|
getAccessToken() {
|
|
32
32
|
return this.accessToken;
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* 发送请求
|
|
36
|
+
* @param payload axios请求参数
|
|
37
|
+
* @param returnResponse 是否返回axios响应对象,默认false表示直接返回数据
|
|
38
|
+
*/
|
|
34
39
|
request(payload, returnResponse = false) {
|
|
35
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
36
41
|
payload = payload || {};
|
|
@@ -47,6 +52,13 @@ class BaseClient {
|
|
|
47
52
|
return returnResponse ? response : response.data;
|
|
48
53
|
});
|
|
49
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* 上传文件请求
|
|
57
|
+
* @param url 地址
|
|
58
|
+
* @param files 文件键值对,键名为文件字段,键值为文件路径或可读流
|
|
59
|
+
* @param form 其它表单参数键值对
|
|
60
|
+
* @param query querystring参数键值对
|
|
61
|
+
*/
|
|
50
62
|
httpUpload(url, files = {}, form = {}, query = {}) {
|
|
51
63
|
let formData = new form_data_1.default;
|
|
52
64
|
for (let name in files) {
|
|
@@ -67,6 +79,11 @@ class BaseClient {
|
|
|
67
79
|
params: query,
|
|
68
80
|
});
|
|
69
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Get请求
|
|
84
|
+
* @param url 地址
|
|
85
|
+
* @param query querystring参数键值对
|
|
86
|
+
*/
|
|
70
87
|
httpGet(url, query = {}) {
|
|
71
88
|
return this.request({
|
|
72
89
|
url,
|
|
@@ -74,13 +91,24 @@ class BaseClient {
|
|
|
74
91
|
params: query,
|
|
75
92
|
});
|
|
76
93
|
}
|
|
77
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Post请求
|
|
96
|
+
* @param url 地址
|
|
97
|
+
* @param data body数据,详见 axios 请求配置的 data 参数
|
|
98
|
+
*/
|
|
99
|
+
httpPost(url, data = {}) {
|
|
78
100
|
return this.request({
|
|
79
101
|
url,
|
|
80
102
|
method: 'POST',
|
|
81
|
-
data:
|
|
103
|
+
data: data,
|
|
82
104
|
});
|
|
83
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Post请求(JSON数据)
|
|
108
|
+
* @param url 地址
|
|
109
|
+
* @param data body数据,详见 axios 请求配置的 data 参数
|
|
110
|
+
* @param query querystring参数键值对
|
|
111
|
+
*/
|
|
84
112
|
httpPostJson(url, data = {}, query = {}) {
|
|
85
113
|
return this.request({
|
|
86
114
|
url,
|
|
@@ -89,12 +117,31 @@ class BaseClient {
|
|
|
89
117
|
params: query,
|
|
90
118
|
});
|
|
91
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* 发送请求并返回原始数据,主要用于下载文件等。返回封装过的Response对象
|
|
122
|
+
* @param payload axios请求参数
|
|
123
|
+
*/
|
|
92
124
|
requestRaw(payload) {
|
|
93
125
|
return __awaiter(this, void 0, void 0, function* () {
|
|
94
126
|
payload = payload || {};
|
|
95
127
|
payload.responseType = 'arraybuffer';
|
|
96
128
|
let res = yield this.request(payload, true);
|
|
97
|
-
|
|
129
|
+
let config = {};
|
|
130
|
+
let keys = ['url', 'baseURL', 'method', 'params', 'headers'];
|
|
131
|
+
keys.map(key => {
|
|
132
|
+
if (typeof payload[key] === 'string' || typeof payload[key] === 'number') {
|
|
133
|
+
config[key] = payload[key];
|
|
134
|
+
}
|
|
135
|
+
else if (typeof payload[key] === 'object') {
|
|
136
|
+
if (payload[key] === null) {
|
|
137
|
+
config[key] = null;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
config[key] = JSON.parse(JSON.stringify(payload[key]));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
return new Response_1.default(res.data, res.status, res.headers, config);
|
|
98
145
|
});
|
|
99
146
|
}
|
|
100
147
|
// Rewrite by HttpMixin
|
|
@@ -3,7 +3,8 @@ export default class Response {
|
|
|
3
3
|
protected content: Buffer;
|
|
4
4
|
protected statusCode: number;
|
|
5
5
|
protected headers: object;
|
|
6
|
-
|
|
6
|
+
protected config: object;
|
|
7
|
+
constructor(content: Buffer, statusCode?: number, headers?: object, config?: object);
|
|
7
8
|
setContent(content: Buffer): void;
|
|
8
9
|
getContent(): Buffer;
|
|
9
10
|
setStatusCode(statusCode: number): void;
|
|
@@ -12,4 +13,6 @@ export default class Response {
|
|
|
12
13
|
setHeaders(headers: object): void;
|
|
13
14
|
getHeaders(): object;
|
|
14
15
|
getHeader(key: string): string;
|
|
16
|
+
setConfig(config: object): void;
|
|
17
|
+
getConfig(): object;
|
|
15
18
|
}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
class Response {
|
|
4
|
-
constructor(content, statusCode = 200, headers = {}) {
|
|
4
|
+
constructor(content, statusCode = 200, headers = {}, config = {}) {
|
|
5
5
|
this.content = null;
|
|
6
6
|
this.statusCode = 200;
|
|
7
7
|
this.headers = {};
|
|
8
|
+
this.config = {};
|
|
8
9
|
this.content = content;
|
|
9
10
|
this.statusCode = statusCode;
|
|
10
11
|
this.headers = headers;
|
|
12
|
+
this.config = config;
|
|
11
13
|
}
|
|
12
14
|
setContent(content) {
|
|
13
15
|
this.content = content;
|
|
@@ -33,6 +35,12 @@ class Response {
|
|
|
33
35
|
getHeader(key) {
|
|
34
36
|
return this.headers[key] || '';
|
|
35
37
|
}
|
|
38
|
+
setConfig(config) {
|
|
39
|
+
this.config = config;
|
|
40
|
+
}
|
|
41
|
+
getConfig() {
|
|
42
|
+
return this.config;
|
|
43
|
+
}
|
|
36
44
|
}
|
|
37
45
|
exports.default = Response;
|
|
38
46
|
;
|
|
@@ -2,12 +2,19 @@ import BaseApplication from '../Core/BaseApplication';
|
|
|
2
2
|
import { EasyWechatConfig } from '../Core/Types';
|
|
3
3
|
import MicroMerchantBase from './Base/MicroMerchantBase';
|
|
4
4
|
import CertficatesClient from './Certficates/CertficatesClient';
|
|
5
|
+
import BaseClient from './Core/BaseClient';
|
|
5
6
|
import MediaClient from './Media/MediaClient';
|
|
6
7
|
import MerchantConfigClient from './MerchantConfig/MerchantConfigClient';
|
|
7
8
|
import MeterialClient from './Meterial/MeterialClient';
|
|
8
9
|
import WithdrawClient from './Withdraw/WithdrawClient';
|
|
10
|
+
declare class Client extends BaseClient {
|
|
11
|
+
}
|
|
9
12
|
export default class MicroMerchant extends BaseApplication {
|
|
10
13
|
protected defaultConfig: EasyWechatConfig;
|
|
14
|
+
/**
|
|
15
|
+
* 客户端实例
|
|
16
|
+
*/
|
|
17
|
+
client: Client;
|
|
11
18
|
base: MicroMerchantBase;
|
|
12
19
|
certficates: CertficatesClient;
|
|
13
20
|
media: MediaClient;
|
|
@@ -24,4 +31,9 @@ export default class MicroMerchant extends BaseApplication {
|
|
|
24
31
|
getStatus(): Promise<any>;
|
|
25
32
|
upgrade(): Promise<any>;
|
|
26
33
|
getUpgradeStatus(): Promise<any>;
|
|
34
|
+
/**
|
|
35
|
+
* 获取客户端实例
|
|
36
|
+
*/
|
|
37
|
+
getClient(): Client;
|
|
27
38
|
}
|
|
39
|
+
export {};
|
|
@@ -7,10 +7,14 @@ const BaseApplication_1 = __importDefault(require("../Core/BaseApplication"));
|
|
|
7
7
|
const Utils_1 = require("../Core/Utils");
|
|
8
8
|
const MicroMerchantBase_1 = __importDefault(require("./Base/MicroMerchantBase"));
|
|
9
9
|
const CertficatesClient_1 = __importDefault(require("./Certficates/CertficatesClient"));
|
|
10
|
+
const BaseClient_1 = __importDefault(require("./Core/BaseClient"));
|
|
10
11
|
const MediaClient_1 = __importDefault(require("./Media/MediaClient"));
|
|
11
12
|
const MerchantConfigClient_1 = __importDefault(require("./MerchantConfig/MerchantConfigClient"));
|
|
12
13
|
const MeterialClient_1 = __importDefault(require("./Meterial/MeterialClient"));
|
|
13
14
|
const WithdrawClient_1 = __importDefault(require("./Withdraw/WithdrawClient"));
|
|
15
|
+
class Client extends BaseClient_1.default {
|
|
16
|
+
}
|
|
17
|
+
;
|
|
14
18
|
class MicroMerchant extends BaseApplication_1.default {
|
|
15
19
|
constructor(config = {}, prepends = {}, id = null) {
|
|
16
20
|
super(config, prepends, id);
|
|
@@ -23,6 +27,10 @@ class MicroMerchant extends BaseApplication_1.default {
|
|
|
23
27
|
baseURL: 'https://api.mch.weixin.qq.com/',
|
|
24
28
|
},
|
|
25
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* 客户端实例
|
|
32
|
+
*/
|
|
33
|
+
this.client = null;
|
|
26
34
|
this.registerProviders();
|
|
27
35
|
}
|
|
28
36
|
registerProviders() {
|
|
@@ -94,6 +102,15 @@ class MicroMerchant extends BaseApplication_1.default {
|
|
|
94
102
|
getUpgradeStatus() {
|
|
95
103
|
return this.base.getUpgradeStatus.apply(this.base, arguments);
|
|
96
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* 获取客户端实例
|
|
107
|
+
*/
|
|
108
|
+
getClient() {
|
|
109
|
+
if (this.client) {
|
|
110
|
+
return this.client;
|
|
111
|
+
}
|
|
112
|
+
return this.client = new Client(this);
|
|
113
|
+
}
|
|
97
114
|
}
|
|
98
115
|
exports.default = MicroMerchant;
|
|
99
116
|
;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import BaseApplication from '../Application';
|
|
1
2
|
import PaymentBaseClient from '../../Payment/Core/BaseClient';
|
|
2
3
|
import { AxiosRequestConfig, AxiosResponse } from 'axios';
|
|
3
4
|
declare class BaseClient extends PaymentBaseClient {
|
|
5
|
+
constructor(app: BaseApplication);
|
|
4
6
|
httpUpload(url: string, files?: object, form?: object, query?: object, returnResponse?: boolean): Promise<any>;
|
|
5
|
-
|
|
7
|
+
request(endpoint: string, params?: object, method?: string, options?: AxiosRequestConfig, returnResponse?: boolean): Promise<AxiosResponse<any>>;
|
|
6
8
|
protected processParams(params: object): object;
|
|
7
9
|
protected getSensitiveFieldsName(): string[];
|
|
8
10
|
}
|
|
@@ -18,6 +18,9 @@ const RSA_1 = __importDefault(require("../../Core/RSA"));
|
|
|
18
18
|
const fs_1 = __importDefault(require("fs"));
|
|
19
19
|
const form_data_1 = __importDefault(require("form-data"));
|
|
20
20
|
class BaseClient extends BaseClient_1.default {
|
|
21
|
+
constructor(app) {
|
|
22
|
+
super(app);
|
|
23
|
+
}
|
|
21
24
|
httpUpload(url, files = {}, form = {}, query = {}, returnResponse = false) {
|
|
22
25
|
let formData = new form_data_1.default;
|
|
23
26
|
for (let name in files) {
|
|
@@ -38,7 +38,14 @@ import RiskControlClient from './RiskControl/RiskControlClient';
|
|
|
38
38
|
import LiveClient from './Live/LiveClient';
|
|
39
39
|
import BroadcastClient from './Broadcast/BroadcastClient';
|
|
40
40
|
import UnionClient from './Union/UnionClient';
|
|
41
|
+
import BaseClient from '../Core/BaseClient';
|
|
42
|
+
declare class Client extends BaseClient {
|
|
43
|
+
}
|
|
41
44
|
export default class MiniProgram extends BaseApplication {
|
|
45
|
+
/**
|
|
46
|
+
* 客户端实例
|
|
47
|
+
*/
|
|
48
|
+
client: Client;
|
|
42
49
|
access_token: AccessToken;
|
|
43
50
|
auth: AuthClient;
|
|
44
51
|
encryptor: Encryptor;
|
|
@@ -80,4 +87,9 @@ export default class MiniProgram extends BaseApplication {
|
|
|
80
87
|
constructor(config?: EasyWechatConfig, prepends?: Object, id?: String);
|
|
81
88
|
registerProviders(): void;
|
|
82
89
|
getPaidUnionid(): Promise<any>;
|
|
90
|
+
/**
|
|
91
|
+
* 获取客户端实例
|
|
92
|
+
*/
|
|
93
|
+
getClient(): Client;
|
|
83
94
|
}
|
|
95
|
+
export {};
|
|
@@ -51,9 +51,17 @@ const RiskControlClient_1 = __importDefault(require("./RiskControl/RiskControlCl
|
|
|
51
51
|
const LiveClient_1 = __importDefault(require("./Live/LiveClient"));
|
|
52
52
|
const BroadcastClient_1 = __importDefault(require("./Broadcast/BroadcastClient"));
|
|
53
53
|
const UnionClient_1 = __importDefault(require("./Union/UnionClient"));
|
|
54
|
+
const BaseClient_1 = __importDefault(require("../Core/BaseClient"));
|
|
55
|
+
class Client extends BaseClient_1.default {
|
|
56
|
+
}
|
|
57
|
+
;
|
|
54
58
|
class MiniProgram extends BaseApplication_1.default {
|
|
55
59
|
constructor(config = {}, prepends = {}, id = null) {
|
|
56
60
|
super(config, prepends, id);
|
|
61
|
+
/**
|
|
62
|
+
* 客户端实例
|
|
63
|
+
*/
|
|
64
|
+
this.client = null;
|
|
57
65
|
this.registerProviders();
|
|
58
66
|
}
|
|
59
67
|
registerProviders() {
|
|
@@ -195,6 +203,15 @@ class MiniProgram extends BaseApplication_1.default {
|
|
|
195
203
|
getPaidUnionid() {
|
|
196
204
|
return this.base.getPaidUnionid.apply(this.base, arguments);
|
|
197
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* 获取客户端实例
|
|
208
|
+
*/
|
|
209
|
+
getClient() {
|
|
210
|
+
if (this.client) {
|
|
211
|
+
return this.client;
|
|
212
|
+
}
|
|
213
|
+
return this.client = new Client(this);
|
|
214
|
+
}
|
|
198
215
|
}
|
|
199
216
|
exports.default = MiniProgram;
|
|
200
217
|
;
|
|
@@ -29,8 +29,15 @@ import QrcodeClient from '../BaseService/Qrcode/QrcodeClient';
|
|
|
29
29
|
import UrlClient from '../BaseService/Url/UrlClient';
|
|
30
30
|
import { EasyWechatConfig } from '../Core/Types';
|
|
31
31
|
import WeChat from 'node-socialite/dist/Providers/WeChat';
|
|
32
|
+
import BaseClient from '../Core/BaseClient';
|
|
33
|
+
declare class Client extends BaseClient {
|
|
34
|
+
}
|
|
32
35
|
export default class OfficialAccount extends BaseApplication {
|
|
33
36
|
protected defaultConfig: EasyWechatConfig;
|
|
37
|
+
/**
|
|
38
|
+
* 客户端实例
|
|
39
|
+
*/
|
|
40
|
+
client: Client;
|
|
34
41
|
access_token: AccessToken;
|
|
35
42
|
encryptor: Encryptor;
|
|
36
43
|
server: Guard;
|
|
@@ -65,4 +72,9 @@ export default class OfficialAccount extends BaseApplication {
|
|
|
65
72
|
clearQuota(): Promise<any>;
|
|
66
73
|
getValidIps(): Promise<any>;
|
|
67
74
|
checkCallbackUrl(): Promise<any>;
|
|
75
|
+
/**
|
|
76
|
+
* 获取客户端实例
|
|
77
|
+
*/
|
|
78
|
+
getClient(): Client;
|
|
68
79
|
}
|
|
80
|
+
export {};
|
|
@@ -43,6 +43,10 @@ const MediaClient_1 = __importDefault(require("../BaseService/Media/MediaClient"
|
|
|
43
43
|
const QrcodeClient_1 = __importDefault(require("../BaseService/Qrcode/QrcodeClient"));
|
|
44
44
|
const UrlClient_1 = __importDefault(require("../BaseService/Url/UrlClient"));
|
|
45
45
|
const node_socialite_1 = require("node-socialite");
|
|
46
|
+
const BaseClient_1 = __importDefault(require("../Core/BaseClient"));
|
|
47
|
+
class Client extends BaseClient_1.default {
|
|
48
|
+
}
|
|
49
|
+
;
|
|
46
50
|
class OfficialAccount extends BaseApplication_1.default {
|
|
47
51
|
constructor(config = {}, prepends = {}, id = null) {
|
|
48
52
|
super(config, prepends, id);
|
|
@@ -54,6 +58,10 @@ class OfficialAccount extends BaseApplication_1.default {
|
|
|
54
58
|
callback: '',
|
|
55
59
|
},
|
|
56
60
|
};
|
|
61
|
+
/**
|
|
62
|
+
* 客户端实例
|
|
63
|
+
*/
|
|
64
|
+
this.client = null;
|
|
57
65
|
this.registerProviders();
|
|
58
66
|
}
|
|
59
67
|
registerProviders() {
|
|
@@ -205,6 +213,15 @@ class OfficialAccount extends BaseApplication_1.default {
|
|
|
205
213
|
checkCallbackUrl() {
|
|
206
214
|
return this.base.checkCallbackUrl.apply(this.base, arguments);
|
|
207
215
|
}
|
|
216
|
+
/**
|
|
217
|
+
* 获取客户端实例
|
|
218
|
+
*/
|
|
219
|
+
getClient() {
|
|
220
|
+
if (this.client) {
|
|
221
|
+
return this.client;
|
|
222
|
+
}
|
|
223
|
+
return this.client = new Client(this);
|
|
224
|
+
}
|
|
208
225
|
}
|
|
209
226
|
exports.default = OfficialAccount;
|
|
210
227
|
;
|
|
@@ -10,7 +10,14 @@ import OpenPlatformGuard from './Server/OpenPlatformGuard';
|
|
|
10
10
|
import CodeTemplateClient from './CodeTemplate/CodeTemplateClient';
|
|
11
11
|
import ComponentClient from './Component/ComponentClient';
|
|
12
12
|
import { EasyWechatConfig } from '../Core/Types';
|
|
13
|
+
import BaseClient from '../Core/BaseClient';
|
|
14
|
+
declare class Client extends BaseClient {
|
|
15
|
+
}
|
|
13
16
|
export default class OpenPlatform extends BaseApplication {
|
|
17
|
+
/**
|
|
18
|
+
* 客户端实例
|
|
19
|
+
*/
|
|
20
|
+
client: Client;
|
|
14
21
|
verify_ticket: VerifyTicket;
|
|
15
22
|
access_token: AccessToken;
|
|
16
23
|
base: OpenPlatformBase;
|
|
@@ -85,4 +92,9 @@ export default class OpenPlatform extends BaseApplication {
|
|
|
85
92
|
* 清零调用次数
|
|
86
93
|
*/
|
|
87
94
|
clearQuota(...arg: any[]): Promise<any>;
|
|
95
|
+
/**
|
|
96
|
+
* 获取客户端实例
|
|
97
|
+
*/
|
|
98
|
+
getClient(): Client;
|
|
88
99
|
}
|
|
100
|
+
export {};
|
|
@@ -27,9 +27,17 @@ const Encryptor_1 = __importDefault(require("../Core/Encryptor"));
|
|
|
27
27
|
const OpenPlatformGuard_1 = __importDefault(require("./Server/OpenPlatformGuard"));
|
|
28
28
|
const CodeTemplateClient_1 = __importDefault(require("./CodeTemplate/CodeTemplateClient"));
|
|
29
29
|
const ComponentClient_1 = __importDefault(require("./Component/ComponentClient"));
|
|
30
|
+
const BaseClient_1 = __importDefault(require("../Core/BaseClient"));
|
|
31
|
+
class Client extends BaseClient_1.default {
|
|
32
|
+
}
|
|
33
|
+
;
|
|
30
34
|
class OpenPlatform extends BaseApplication_1.default {
|
|
31
35
|
constructor(config = {}, prepends = {}, id = null) {
|
|
32
36
|
super(config, prepends, id);
|
|
37
|
+
/**
|
|
38
|
+
* 客户端实例
|
|
39
|
+
*/
|
|
40
|
+
this.client = null;
|
|
33
41
|
this.registerProviders();
|
|
34
42
|
}
|
|
35
43
|
registerProviders() {
|
|
@@ -211,6 +219,15 @@ class OpenPlatform extends BaseApplication_1.default {
|
|
|
211
219
|
clearQuota(...arg) {
|
|
212
220
|
return this.base.clearQuota.apply(this.base, arg);
|
|
213
221
|
}
|
|
222
|
+
/**
|
|
223
|
+
* 获取客户端实例
|
|
224
|
+
*/
|
|
225
|
+
getClient() {
|
|
226
|
+
if (this.client) {
|
|
227
|
+
return this.client;
|
|
228
|
+
}
|
|
229
|
+
return this.client = new Client(this);
|
|
230
|
+
}
|
|
214
231
|
}
|
|
215
232
|
exports.default = OpenPlatform;
|
|
216
233
|
;
|
|
@@ -16,8 +16,15 @@ import LicenseAccountClient from './License/LicenseAccountClient';
|
|
|
16
16
|
import LicenseAppClient from './License/LicenseAppClient';
|
|
17
17
|
import LicenseAutoActiveClient from './License/LicenseAutoActiveClient';
|
|
18
18
|
import MediaClient from './Media/MediaClient';
|
|
19
|
+
import BaseClient from '../Core/BaseClient';
|
|
20
|
+
declare class Client extends BaseClient {
|
|
21
|
+
}
|
|
19
22
|
export default class OpenWork extends BaseApplication {
|
|
20
23
|
protected defaultConfig: EasyWechatConfig;
|
|
24
|
+
/**
|
|
25
|
+
* 客户端实例
|
|
26
|
+
*/
|
|
27
|
+
client: Client;
|
|
21
28
|
provider_access_token: ProviderAccessToken;
|
|
22
29
|
suite_access_token: SuiteAccessToken;
|
|
23
30
|
suite_ticket: SuiteTicket;
|
|
@@ -46,4 +53,9 @@ export default class OpenWork extends BaseApplication {
|
|
|
46
53
|
* @returns
|
|
47
54
|
*/
|
|
48
55
|
work(authCorpId: string, permanentCode: string): Work;
|
|
56
|
+
/**
|
|
57
|
+
* 获取客户端实例
|
|
58
|
+
*/
|
|
59
|
+
getClient(): Client;
|
|
49
60
|
}
|
|
61
|
+
export {};
|
|
@@ -30,6 +30,10 @@ const LicenseAccountClient_1 = __importDefault(require("./License/LicenseAccount
|
|
|
30
30
|
const LicenseAppClient_1 = __importDefault(require("./License/LicenseAppClient"));
|
|
31
31
|
const LicenseAutoActiveClient_1 = __importDefault(require("./License/LicenseAutoActiveClient"));
|
|
32
32
|
const MediaClient_1 = __importDefault(require("./Media/MediaClient"));
|
|
33
|
+
const BaseClient_1 = __importDefault(require("../Core/BaseClient"));
|
|
34
|
+
class Client extends BaseClient_1.default {
|
|
35
|
+
}
|
|
36
|
+
;
|
|
33
37
|
class OpenWork extends BaseApplication_1.default {
|
|
34
38
|
constructor(config = {}, prepends = {}, id = null) {
|
|
35
39
|
super(config, prepends, id);
|
|
@@ -41,6 +45,10 @@ class OpenWork extends BaseApplication_1.default {
|
|
|
41
45
|
baseURL: 'https://qyapi.weixin.qq.com/',
|
|
42
46
|
},
|
|
43
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* 客户端实例
|
|
50
|
+
*/
|
|
51
|
+
this.client = null;
|
|
44
52
|
this.registerProviders();
|
|
45
53
|
}
|
|
46
54
|
registerProviders() {
|
|
@@ -150,6 +158,15 @@ class OpenWork extends BaseApplication_1.default {
|
|
|
150
158
|
work(authCorpId, permanentCode) {
|
|
151
159
|
return new Application_2.default(authCorpId, permanentCode, this);
|
|
152
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* 获取客户端实例
|
|
163
|
+
*/
|
|
164
|
+
getClient() {
|
|
165
|
+
if (this.client) {
|
|
166
|
+
return this.client;
|
|
167
|
+
}
|
|
168
|
+
return this.client = new Client(this);
|
|
169
|
+
}
|
|
153
170
|
}
|
|
154
171
|
exports.default = OpenWork;
|
|
155
172
|
;
|
|
@@ -16,8 +16,12 @@ import TransferClient from './Transfer/TransferClient';
|
|
|
16
16
|
import SecurityClient from './Security/SecurityClient';
|
|
17
17
|
import ProfitSharingClient from './ProfitSharing/ProfitSharingClient';
|
|
18
18
|
import { EasyWechatConfig, PaymentPaidHandler, PaymentRefundedHandler, PaymentScannedHandler } from '../Core/Types';
|
|
19
|
+
import BaseClient from './Core/BaseClient';
|
|
20
|
+
declare class PaymentClient extends BaseClient {
|
|
21
|
+
}
|
|
19
22
|
export default class Payment extends BaseApplication {
|
|
20
23
|
protected defaultConfig: EasyWechatConfig;
|
|
24
|
+
client: PaymentClient;
|
|
21
25
|
base: PaymentBase;
|
|
22
26
|
bill: BillClient;
|
|
23
27
|
coupon: CouponClient;
|
|
@@ -73,4 +77,9 @@ export default class Payment extends BaseApplication {
|
|
|
73
77
|
* @param auth_code 扫码支付付款码
|
|
74
78
|
*/
|
|
75
79
|
authCodeToOpenid(): Promise<any>;
|
|
80
|
+
/**
|
|
81
|
+
* 获取客户端实例
|
|
82
|
+
*/
|
|
83
|
+
getClient(): PaymentClient;
|
|
76
84
|
}
|
|
85
|
+
export {};
|
|
@@ -32,6 +32,10 @@ const SandboxClient_1 = __importDefault(require("./Sandbox/SandboxClient"));
|
|
|
32
32
|
const TransferClient_1 = __importDefault(require("./Transfer/TransferClient"));
|
|
33
33
|
const SecurityClient_1 = __importDefault(require("./Security/SecurityClient"));
|
|
34
34
|
const ProfitSharingClient_1 = __importDefault(require("./ProfitSharing/ProfitSharingClient"));
|
|
35
|
+
const BaseClient_1 = __importDefault(require("./Core/BaseClient"));
|
|
36
|
+
class PaymentClient extends BaseClient_1.default {
|
|
37
|
+
}
|
|
38
|
+
;
|
|
35
39
|
class Payment extends BaseApplication_1.default {
|
|
36
40
|
constructor(config = {}, prepends = {}, id = null) {
|
|
37
41
|
super(config, prepends, id);
|
|
@@ -179,6 +183,15 @@ class Payment extends BaseApplication_1.default {
|
|
|
179
183
|
authCodeToOpenid() {
|
|
180
184
|
return this.base.authCodeToOpenid.apply(this.base, arguments);
|
|
181
185
|
}
|
|
186
|
+
/**
|
|
187
|
+
* 获取客户端实例
|
|
188
|
+
*/
|
|
189
|
+
getClient() {
|
|
190
|
+
if (this.client) {
|
|
191
|
+
return this.client;
|
|
192
|
+
}
|
|
193
|
+
return this.client = new PaymentClient(this);
|
|
194
|
+
}
|
|
182
195
|
}
|
|
183
196
|
exports.default = Payment;
|
|
184
197
|
;
|
|
@@ -6,10 +6,10 @@ declare class BaseClient implements HttpMixin {
|
|
|
6
6
|
protected serverIp: String;
|
|
7
7
|
constructor(app: BaseApplication);
|
|
8
8
|
protected prepends(): {};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
request(endpoint: string, params?: object, method?: string, options?: AxiosRequestConfig, returnResponse?: boolean): Promise<AxiosResponse<any>>;
|
|
10
|
+
safeRequest(endpoint: string, params?: object, method?: string, options?: AxiosRequestConfig): Promise<any>;
|
|
11
|
+
requestRaw(endpoint: string, params?: object, method?: string, options?: AxiosRequestConfig): Promise<any>;
|
|
12
|
+
wrap(endpoint: string): string;
|
|
13
13
|
getServerIp(): Promise<String>;
|
|
14
14
|
getClientIp(): string;
|
|
15
15
|
doRequest(payload: AxiosRequestConfig): Promise<AxiosResponse<any>>;
|
|
@@ -74,7 +74,22 @@ class BaseClient {
|
|
|
74
74
|
return __awaiter(this, void 0, void 0, function* () {
|
|
75
75
|
options.responseType = 'arraybuffer';
|
|
76
76
|
let res = yield this.request(endpoint, params, method, options, true);
|
|
77
|
-
|
|
77
|
+
let config = {};
|
|
78
|
+
let keys = ['url', 'baseURL', 'method', 'params', 'headers'];
|
|
79
|
+
keys.map(key => {
|
|
80
|
+
if (typeof options[key] === 'string' || typeof options[key] === 'number') {
|
|
81
|
+
config[key] = options[key];
|
|
82
|
+
}
|
|
83
|
+
else if (typeof options[key] === 'object') {
|
|
84
|
+
if (options[key] === null) {
|
|
85
|
+
config[key] = null;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
config[key] = JSON.parse(JSON.stringify(options[key]));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
return new Response_1.default(res.data, res.status, res.headers, config);
|
|
78
93
|
});
|
|
79
94
|
}
|
|
80
95
|
wrap(endpoint) {
|
|
@@ -38,8 +38,15 @@ import ExternalSchoolClient from './ExternalContact/SchoolClient';
|
|
|
38
38
|
import ExternalMomentClient from './ExternalContact/MomentClient';
|
|
39
39
|
import CorpGroupClient from './CorpGroup/CorpGroupClient';
|
|
40
40
|
import WeWork from 'node-socialite/dist/Providers/WeWork';
|
|
41
|
+
import BaseClient from '../Core/BaseClient';
|
|
42
|
+
declare class Client extends BaseClient {
|
|
43
|
+
}
|
|
41
44
|
export default class Work extends BaseApplication {
|
|
42
45
|
protected defaultConfig: EasyWechatConfig;
|
|
46
|
+
/**
|
|
47
|
+
* 客户端实例
|
|
48
|
+
*/
|
|
49
|
+
client: Client;
|
|
43
50
|
oa: OAClient;
|
|
44
51
|
access_token: AccessToken;
|
|
45
52
|
agent: AgentClient;
|
|
@@ -81,4 +88,9 @@ export default class Work extends BaseApplication {
|
|
|
81
88
|
registerProviders(): void;
|
|
82
89
|
miniProgram(): MiniProgram;
|
|
83
90
|
getCallbackIp(): Promise<any>;
|
|
91
|
+
/**
|
|
92
|
+
* 获取客户端实例
|
|
93
|
+
*/
|
|
94
|
+
getClient(): Client;
|
|
84
95
|
}
|
|
96
|
+
export {};
|
package/dist/Work/Application.js
CHANGED
|
@@ -52,6 +52,10 @@ const SchoolClient_1 = __importDefault(require("./ExternalContact/SchoolClient")
|
|
|
52
52
|
const MomentClient_1 = __importDefault(require("./ExternalContact/MomentClient"));
|
|
53
53
|
const CorpGroupClient_1 = __importDefault(require("./CorpGroup/CorpGroupClient"));
|
|
54
54
|
const node_socialite_1 = require("node-socialite");
|
|
55
|
+
const BaseClient_1 = __importDefault(require("../Core/BaseClient"));
|
|
56
|
+
class Client extends BaseClient_1.default {
|
|
57
|
+
}
|
|
58
|
+
;
|
|
55
59
|
class Work extends BaseApplication_1.default {
|
|
56
60
|
constructor(config = {}, prepends = {}, id = null) {
|
|
57
61
|
super(config, prepends, id);
|
|
@@ -60,6 +64,10 @@ class Work extends BaseApplication_1.default {
|
|
|
60
64
|
baseURL: 'https://qyapi.weixin.qq.com/',
|
|
61
65
|
},
|
|
62
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* 客户端实例
|
|
69
|
+
*/
|
|
70
|
+
this.client = null;
|
|
63
71
|
this.registerProviders();
|
|
64
72
|
}
|
|
65
73
|
registerProviders() {
|
|
@@ -231,6 +239,15 @@ class Work extends BaseApplication_1.default {
|
|
|
231
239
|
getCallbackIp() {
|
|
232
240
|
return this.base.getCallbackIp.apply(this.base, arguments);
|
|
233
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* 获取客户端实例
|
|
244
|
+
*/
|
|
245
|
+
getClient() {
|
|
246
|
+
if (this.client) {
|
|
247
|
+
return this.client;
|
|
248
|
+
}
|
|
249
|
+
return this.client = new Client(this);
|
|
250
|
+
}
|
|
234
251
|
}
|
|
235
252
|
exports.default = Work;
|
|
236
253
|
;
|