@tmsfe/tms-core 0.0.156 → 0.0.158

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tmsfe/tms-core",
3
- "version": "0.0.156",
3
+ "version": "0.0.158",
4
4
  "description": "tms运行时框架",
5
5
  "repository": {
6
6
  "type": "git",
@@ -149,6 +149,7 @@ const eccUtil = {
149
149
  return eccUtil._privateKeyInfo;
150
150
  },
151
151
  // 解析gwCode
152
+ /* eslint-disable complexity */
152
153
  resolveGwCode: async (codeStr: string): Promise<{ retry: boolean, success: boolean }> => {
153
154
  if (!codeStr) return { retry: false, success: true };
154
155
  const code = parseInt(codeStr, 10);
@@ -166,10 +167,17 @@ const eccUtil = {
166
167
  }
167
168
  case 11307: // 加密未开启
168
169
  return { retry: false, success: false };
169
- default:
170
+ case 11301:
171
+ case 11302:
172
+ case 11303:
173
+ case 11304:
174
+ case 11308:
170
175
  return { retry: false, success: false };
176
+ default: // 其他网关错误码
177
+ return { retry: false, success: true };
171
178
  }
172
179
  },
180
+ /* eslint-enable complexity */
173
181
  execEncrypt: (input: string, ignoreNull = false): BaseResp<{
174
182
  cryptoKeyInfo: CryptoKeyInfo,
175
183
  encryptedContent: any } | null> => {
@@ -380,7 +388,12 @@ const resDecrypt = async (header, data, cryptoKeyInfo: CryptoKeyInfo): Promise<B
380
388
  'content-type': contentType, // 响应内容类型
381
389
  } = formatHeader;
382
390
  if (!encryptResponseMode || encryptResponseMode === '0') { // 不需要解密,直接返回
383
- return new baseUtil.BaseRespFac({ header, data, retry: false });
391
+ const dataStr = base64Util.encodeUTF8(new Uint8Array(data));
392
+ return new baseUtil.BaseRespFac({
393
+ header,
394
+ data: JSON.parse(dataStr),
395
+ retry: false,
396
+ });
384
397
  }
385
398
  const { retry, success: gwSuccess } = await eccUtil.resolveGwCode(gatewayCode);
386
399
  if (!gwSuccess) {
@@ -87,7 +87,8 @@ function proxyWxRequest(): void {
87
87
  return;
88
88
  }
89
89
  // 加密请求数据
90
- const { data: formatData, header: formatHeader, msg, cryptoKeyInfo } = util.reqEncrypt({ url, method, data, header });
90
+ const { data: formatData, header: formatHeader, msg, cryptoKeyInfo } = util
91
+ .reqEncrypt({ url, method, data, header });
91
92
  if (!cryptoKeyInfo) {
92
93
  // 如果没有加密信息,则不走加密
93
94
  util.logInfo(url, traceparent, msg);
@@ -103,8 +104,9 @@ function proxyWxRequest(): void {
103
104
  }
104
105
 
105
106
  let completeResolver;
106
- const completePromp = new Promise(resolve => { completeResolver = resolve; });
107
-
107
+ const completePromp = new Promise((resolve) => {
108
+ completeResolver = resolve;
109
+ });
108
110
  originalRequestApi.call(this, {
109
111
  ...originalOptions,
110
112
  data: formatData,
@@ -116,6 +118,7 @@ function proxyWxRequest(): void {
116
118
  const { success: resSuccess, msg, res } = await encryptUtil.resDecrypt(resHeader, resData, cryptoKeyInfo);
117
119
  if (resSuccess) {
118
120
  util.logInfo(url, traceparent, '解密成功');
121
+ encryptUtil.dealEncryptionSwitch(url, resHeader);
119
122
  success?.call(this, res);
120
123
  const completeRes: any = await completePromp;
121
124
  completeRes.header = resHeader;