crh-jssdk 1.0.33 → 1.0.34

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.
@@ -1,4 +1,30 @@
1
1
  "use strict";
2
+ /**
3
+ * @description 诚通证券基础模块
4
+ * 基于WebViewJavascriptBridge实现基础功能
5
+ *
6
+ * 诚通证券 UA 识别标识:
7
+ * - LightOS/web : 诚通证券新 App WebView UA 标识
8
+ * - crhsdk : 通用财人汇SDK标识(兼容老版本)
9
+ * - ctgsc : 诚通证券标识(备用)
10
+ *
11
+ * 典型 UA 示例:
12
+ * Mozilla/5.0 (Linux; Android 16; ...) ... LightOS/web
13
+ *
14
+ * 版本号字段:fwv/1.0.0
15
+ * 设备号字段:did/xxx
16
+ */
17
+ var __assign = (this && this.__assign) || function () {
18
+ __assign = Object.assign || function(t) {
19
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
20
+ s = arguments[i];
21
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
+ t[p] = s[p];
23
+ }
24
+ return t;
25
+ };
26
+ return __assign.apply(this, arguments);
27
+ };
2
28
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
29
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
30
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -40,11 +66,25 @@ var utils_1 = require("../utils");
40
66
  // webview类型
41
67
  var webviewType = (function () {
42
68
  var ua = navigator.userAgent;
43
- return {};
69
+ return {
70
+ isCtGsc: true, // 诚通证券标识
71
+ isLightOS: ua.includes("LightOS"), // 新 App 标识
72
+ isIOS: utils_1.ios,
73
+ isAndroid: /Android/i.test(ua),
74
+ ua: ua,
75
+ };
44
76
  })();
77
+ /**
78
+ * 解析诚通证券版本号
79
+ * 从 UA 中提取 fwv/1.0.0 中的 1.0.0
80
+ */
81
+ var parseCtGscVersion = function (ua) {
82
+ var match = ua.match(/fwv\/([\d.]+)/);
83
+ return match ? match[1] : "0.0.0";
84
+ };
45
85
  var actionMap = {
46
86
  /**
47
- * iOS客户端方法加载函数(老乐赚老聚财)
87
+ * iOS客户端方法加载函数(诚通证券)
48
88
  * @param {string} url
49
89
  */
50
90
  loadIOSNative: function (url) {
@@ -68,27 +108,85 @@ exports.default = {
68
108
  //是否在app内
69
109
  isApp: function () {
70
110
  var ua = navigator.userAgent;
111
+ // 诚通证券 App 环境标识(按优先级匹配)
71
112
  var isAppFlags = [
72
- "crhsdk",
113
+ "LightOS", // 诚通证券新 App 标识(最优先)
114
+ "ctgsc", // 诚通证券标识
115
+ "crhsdk", // 通用财人汇SDK标识(兼容老版本)
73
116
  ];
74
117
  return isAppFlags.some(function (flag) { return ua.includes(flag); });
75
118
  },
119
+ /**
120
+ * 获取客户端版本号
121
+ * 解析 UA 中的 fwv/1.0.0 字段
122
+ */
123
+ getVersion: function () {
124
+ return parseCtGscVersion(navigator.userAgent);
125
+ },
126
+ // 返回到App
127
+ goBack: function () {
128
+ return __awaiter(this, arguments, void 0, function (params) {
129
+ var backParams, error_1;
130
+ if (params === void 0) { params = {}; }
131
+ return __generator(this, function (_a) {
132
+ switch (_a.label) {
133
+ case 0:
134
+ _a.trys.push([0, 2, , 3]);
135
+ backParams = __assign({ type: "webpage" }, params);
136
+ console.log("诚通证券调用goBack,参数:", backParams);
137
+ return [4 /*yield*/, utils_1.ctBridge.bridgeCallHandler("Promise", "goback", backParams)];
138
+ case 1:
139
+ _a.sent();
140
+ console.log("诚通证券返回App成功");
141
+ return [3 /*break*/, 3];
142
+ case 2:
143
+ error_1 = _a.sent();
144
+ console.error("诚通证券返回App失败:", error_1);
145
+ throw error_1;
146
+ case 3: return [2 /*return*/];
147
+ }
148
+ });
149
+ });
150
+ },
151
+ // 关闭页面 closeSJKH
152
+ closeSJKH: function () {
153
+ return __awaiter(this, void 0, void 0, function () {
154
+ var error_2;
155
+ return __generator(this, function (_a) {
156
+ switch (_a.label) {
157
+ case 0:
158
+ _a.trys.push([0, 2, , 3]);
159
+ return [4 /*yield*/, this.goBack({ type: "component" })];
160
+ case 1:
161
+ _a.sent();
162
+ return [3 /*break*/, 3];
163
+ case 2:
164
+ error_2 = _a.sent();
165
+ console.error("诚通证券关闭页面失败:", error_2);
166
+ // 降级方案:使用 iframe 关闭
167
+ if (utils_1.ios) {
168
+ actionMap.loadIOSNative("objc://callIOSQuit/");
169
+ }
170
+ else if (window.jtoJHandle) {
171
+ window.jtoJHandle.closeSJKH();
172
+ }
173
+ return [3 /*break*/, 3];
174
+ case 3: return [2 /*return*/];
175
+ }
176
+ });
177
+ });
178
+ },
76
179
  // 拦截Android物理返回键事件,并回调给前端 --- 仅安卓
77
180
  interceptBack: function (callback) {
78
- window.jtoJHandle.interceptBack("interceptBackCallBack");
181
+ var _a;
182
+ (_a = window.jtoJHandle) === null || _a === void 0 ? void 0 : _a.interceptBack("interceptBackCallBack");
79
183
  window.interceptBackCallBack = function (e) {
80
184
  callback && callback(e);
81
185
  };
82
- },
83
- // 关闭页面 closeSJKH
84
- closeSJKH: function () {
85
- if (utils_1.ios) {
86
- // iphone
87
- window.location.href = "objc://callIOSQuit/";
88
- }
89
- else {
90
- window.jtoJHandle.closeSJKH();
91
- }
186
+ // 同时注册 Bridge 方式的回调
187
+ utils_1.ctBridge.registerHandler("interceptBack", function (data) {
188
+ callback && callback(data);
189
+ });
92
190
  },
93
191
  /**
94
192
  * 通过pageId打开新的webview打开外部链接
@@ -101,14 +199,13 @@ exports.default = {
101
199
  cookieDomain: "",
102
200
  closeBusiness: "closeCallBack",
103
201
  module: "",
104
- identifier: "zt",
202
+ identifier: "ctgsc",
105
203
  };
106
204
  var jsonStr = JSON.stringify(jsonObj);
107
205
  if (utils_1.ios) {
108
- // iphone
109
206
  actionMap.loadIOSNative("objc://openNewBusiness/$?".concat(jsonStr));
110
207
  }
111
- else {
208
+ else if (window.jtoJHandle) {
112
209
  window.jtoJHandle.openNewBusiness(jsonStr);
113
210
  }
114
211
  },
@@ -127,26 +224,218 @@ exports.default = {
127
224
  if (utils_1.ios) {
128
225
  actionMap.loadIOSNative("objc://openNewBusiness/$?".concat(paramsObj));
129
226
  }
130
- else {
227
+ else if (window.jtoJHandle) {
131
228
  (_b = window.jtoJHandle) === null || _b === void 0 ? void 0 : _b.openNewBusiness(paramsObj);
132
229
  }
133
230
  },
134
231
  /**
232
+ * 设置原生状态栏颜色
135
233
  * @param {object} params
136
234
  * @param {string} params.color 状态栏背景颜色,如#ff0000
137
235
  * @param {string} params.wordColorStyle 状态栏文字颜色,0 白色,1 黑色
138
236
  */
139
237
  setStatusBar: function (params) {
140
238
  return __awaiter(this, void 0, void 0, function () {
239
+ var error_3;
141
240
  return __generator(this, function (_a) {
142
- if (utils_1.ios) {
143
- actionMap.loadIOSNative("objc://setAppBackgroundColor/$?".concat(params.color));
241
+ switch (_a.label) {
242
+ case 0:
243
+ console.log("诚通证券设置状态栏参数:", params);
244
+ _a.label = 1;
245
+ case 1:
246
+ _a.trys.push([1, 3, , 4]);
247
+ if (utils_1.ios) {
248
+ actionMap.loadIOSNative("objc://setAppBackgroundColor/$?".concat(params.color));
249
+ }
250
+ else if (window.jtoJHandle) {
251
+ window.jtoJHandle.setAppBackgroundColor(params.color);
252
+ }
253
+ // 同时尝试 Bridge 方式
254
+ return [4 /*yield*/, utils_1.ctBridge.bridgeCallHandler("", "modifyStatusColor", {
255
+ statusColor: params.color,
256
+ })];
257
+ case 2:
258
+ // 同时尝试 Bridge 方式
259
+ _a.sent();
260
+ console.log("诚通证券设置状态栏颜色成功");
261
+ return [2 /*return*/, { success: true }];
262
+ case 3:
263
+ error_3 = _a.sent();
264
+ console.error("诚通证券设置状态栏颜色失败:", error_3);
265
+ return [2 /*return*/, { success: false, error: error_3 }];
266
+ case 4: return [2 /*return*/];
144
267
  }
145
- else if (window.jtoJHandle) {
146
- window.jtoJHandle.setAppBackgroundColor(params.color);
268
+ });
269
+ });
270
+ },
271
+ /**
272
+ * 获取状态栏颜色(老代码:getNavbar/getStatusBarColor)
273
+ * - iOS: objc://getStatusBarColor/$?setNavbar
274
+ * - Android: jtoJHandle.getStatusBarColor("setNavbar")
275
+ * - App 回调: setNavbar(colorStr)
276
+ */
277
+ getStatusBarColor: function () {
278
+ return new Promise(function (resolve) {
279
+ window.setNavbar = function (color) {
280
+ console.log("诚通证券获取状态栏颜色:", color);
281
+ resolve({ color: color });
282
+ };
283
+ if (utils_1.ios) {
284
+ actionMap.loadIOSNative("objc://getStatusBarColor/$?setNavbar");
285
+ }
286
+ else if (window.jtoJHandle) {
287
+ window.jtoJHandle.getStatusBarColor("setNavbar");
288
+ }
289
+ else {
290
+ resolve({ color: "" });
291
+ }
292
+ });
293
+ },
294
+ /**
295
+ * 调起 App 内部模块(老代码:openExtraModule)
296
+ * @param json JSON字符串 或 对象
297
+ * - iOS: objc://openExtraModule/? + json
298
+ * - Android: jtoJHandle.openExtraModule(json)
299
+ */
300
+ openExtraModule: function (json) {
301
+ var jsonStr = typeof json === "string" ? json : JSON.stringify(json);
302
+ console.log("诚通证券 openExtraModule:", jsonStr);
303
+ if (utils_1.ios) {
304
+ actionMap.loadIOSNative("objc://openExtraModule/?".concat(jsonStr));
305
+ }
306
+ else if (window.jtoJHandle) {
307
+ window.jtoJHandle.openExtraModule(jsonStr);
308
+ }
309
+ },
310
+ /**
311
+ * App 内打开 URL(老代码:openUrl/openSDURL)
312
+ * - iOS: objc://openSDURL/$?url&sdkfrom=crh
313
+ * - Android: jtoJHandle.openSDURL(url + "&sdkfrom=crh")
314
+ */
315
+ openSDURL: function (url, sdkfrom) {
316
+ if (sdkfrom === void 0) { sdkfrom = "crh"; }
317
+ var finalUrl = "".concat(url, "&sdkfrom=").concat(sdkfrom);
318
+ console.log("诚通证券 openSDURL:", finalUrl);
319
+ if (utils_1.ios) {
320
+ actionMap.loadIOSNative("objc://openSDURL/$?".concat(finalUrl));
321
+ }
322
+ else if (window.jtoJHandle) {
323
+ window.jtoJHandle.openSDURL(finalUrl);
324
+ }
325
+ },
326
+ /**
327
+ * 跳转 App 交易页面(老代码:jumpSD)— 仅 Android
328
+ * - Android: jtoJHandle.jumpSD(url, '1')
329
+ */
330
+ jumpSD: function (url, flag) {
331
+ if (flag === void 0) { flag = "1"; }
332
+ console.log("诚通证券 jumpSD:", url, flag);
333
+ if (window.jtoJHandle) {
334
+ window.jtoJHandle.jumpSD(url, flag);
335
+ }
336
+ },
337
+ /**
338
+ * 跳转银行卡管理页(老代码:bankCardManagement)
339
+ * - iOS: objc://bankCardManagement/
340
+ * - Android: jtoJHandle.bankCardManagement()
341
+ */
342
+ bankCardManagement: function () {
343
+ console.log("诚通证券 bankCardManagement");
344
+ if (utils_1.ios) {
345
+ actionMap.loadIOSNative("objc://bankCardManagement/");
346
+ }
347
+ else if (window.jtoJHandle) {
348
+ window.jtoJHandle.bankCardManagement();
349
+ }
350
+ },
351
+ /**
352
+ * 事件埋点(老代码:onEvent/dataOnEvent)
353
+ * - iOS: objc://setCount/? + eventId
354
+ * - Android: jtoJHandle.onEvent(eventId, ext)
355
+ */
356
+ onEvent: function (eventId, ext) {
357
+ console.log("诚通证券 onEvent:", eventId, ext);
358
+ if (utils_1.ios) {
359
+ actionMap.loadIOSNative("objc://setCount/?".concat(eventId));
360
+ }
361
+ else if (window.jtoJHandle) {
362
+ window.jtoJHandle.onEvent(eventId, ext);
363
+ }
364
+ },
365
+ /**
366
+ * 注册 JS 事件监听(老代码:registerJsEventTag)
367
+ * - iOS: objc://registerJsEventTag/$? + jsonStr
368
+ * - Android: jtoJHandle.registerJsEventTag(jsonStr)
369
+ */
370
+ registerJsEventTag: function (jsonStr) {
371
+ console.log("诚通证券 registerJsEventTag:", jsonStr);
372
+ if (utils_1.ios) {
373
+ actionMap.loadIOSNative("objc://registerJsEventTag/$?".concat(jsonStr));
374
+ }
375
+ else if (window.jtoJHandle) {
376
+ window.jtoJHandle.registerJsEventTag(jsonStr);
377
+ }
378
+ },
379
+ /**
380
+ * 清除 App Session(老代码:exit/clearSessionCookie)— 仅 Android
381
+ * - Android: jtoJHandle.clearSessionCookie()
382
+ */
383
+ clearSessionCookie: function () {
384
+ console.log("诚通证券 clearSessionCookie");
385
+ if (window.jtoJHandle) {
386
+ window.jtoJHandle.clearSessionCookie();
387
+ }
388
+ },
389
+ /**
390
+ * 获取本机手机号(老代码:getRegistMobileNo)
391
+ * - iOS: objc://callIOSGetRegistMobileNo/
392
+ * - Android: jtoJHandle.getRegistMobileNo()
393
+ * - App 回调: getRegistMobileNoCallback(errorNo, mobileNo, channel)
394
+ */
395
+ getRegistMobileNo: function () {
396
+ return new Promise(function (resolve) {
397
+ window.getRegistMobileNoCallback = function (errorNo, mobileNo, channel) {
398
+ console.log("诚通证券 getRegistMobileNo 回调:", errorNo, mobileNo, channel);
399
+ resolve({ errorNo: errorNo, mobileNo: mobileNo || "", channel: channel });
400
+ };
401
+ if (utils_1.ios) {
402
+ actionMap.loadIOSNative("objc://callIOSGetRegistMobileNo/");
403
+ }
404
+ else if (window.jtoJHandle) {
405
+ window.jtoJHandle.getRegistMobileNo();
406
+ }
407
+ else {
408
+ resolve({ errorNo: -1, mobileNo: "", channel: "" });
409
+ }
410
+ });
411
+ },
412
+ /**
413
+ * 退出登录(老代码:exit)
414
+ * - iOS: 无操作
415
+ * - Android: jtoJHandle.clearSessionCookie()
416
+ */
417
+ exit: function () {
418
+ return __awaiter(this, void 0, void 0, function () {
419
+ return __generator(this, function (_a) {
420
+ try {
421
+ if (window.jtoJHandle) {
422
+ window.jtoJHandle.clearSessionCookie();
423
+ }
424
+ console.log("诚通证券退出登录成功");
425
+ return [2 /*return*/, { success: true }];
426
+ }
427
+ catch (error) {
428
+ console.error("诚通证券退出登录失败:", error);
429
+ return [2 /*return*/, { success: false, error: error }];
147
430
  }
148
431
  return [2 /*return*/];
149
432
  });
150
433
  });
151
434
  },
435
+ /**
436
+ * 获取Bridge实例(供其他模块使用)
437
+ */
438
+ getBridge: function () {
439
+ return utils_1.ctBridge;
440
+ },
152
441
  };
@@ -84,8 +84,8 @@ var user_1 = __importDefault(require("./user")); // 用户
84
84
  var BUSINESS = /** @class */ (function () {
85
85
  function BUSINESS(sdkType) {
86
86
  this.isApp = false; //是否是app
87
- this.sdkType = sdkType; // 1 财人汇 2 财信 3 新意 4 联储 5 金圆
88
- this.bridge = sdkType === 2 ? utils_1.cxBridge : utils_1.globalBridge; // 初始化Bridge实例
87
+ this.sdkType = sdkType; // 1 财人汇 2 财信 3 新意 4 联储 5 金圆 6 诚通
88
+ this.bridge = sdkType === 2 ? utils_1.cxBridge : sdkType === 6 ? utils_1.ctBridge : utils_1.globalBridge; // 初始化Bridge实例
89
89
  }
90
90
  BUSINESS.prototype.initSdk = function () {
91
91
  return __awaiter(this, void 0, void 0, function () {
@@ -198,6 +198,7 @@ var BUSINESS = /** @class */ (function () {
198
198
  _q.sdkObj = __assign.apply(void 0, _t.concat([(_w.sent()).default]));
199
199
  console.log("sdkObj---jssdk(诚通证券)", this.sdkObj);
200
200
  this.isApp = this.sdkObj.isApp();
201
+ this.webviewType = this.sdkObj.webviewType();
201
202
  _w.label = 23;
202
203
  case 23:
203
204
  // 设置Bridge实例到sdkObj中,供各模块使用
@@ -385,11 +386,11 @@ var BUSINESS = /** @class */ (function () {
385
386
  }
386
387
  return this.sdkObj.doOpenCRHSDK(params);
387
388
  };
388
- //获取Bridge实例(仅限联储证券lczq和金圆统一jy使用)
389
+ //获取Bridge实例(仅限联储证券lczq、金圆统一jy和诚通证券ctgsc使用)
389
390
  BUSINESS.prototype.getBridge = function () {
390
- // 只允许 sdkType === 4 (联储证券)sdkType === 5 (金圆统一) 使用 getBridge 方法
391
- if (+this.sdkType !== 4 && +this.sdkType !== 5) {
392
- console.warn("getBridge method is only available for lczq (sdkType: 4) or jy (sdkType: 5)");
391
+ // 只允许 sdkType === 4 (联储证券)sdkType === 5 (金圆统一)、sdkType === 6 (诚通证券) 使用 getBridge 方法
392
+ if (+this.sdkType !== 4 && +this.sdkType !== 5 && +this.sdkType !== 6) {
393
+ console.warn("getBridge method is only available for lczq (sdkType: 4), jy (sdkType: 5) or ctgsc (sdkType: 6)");
393
394
  return null;
394
395
  }
395
396
  if (!this.sdkObj.getBridge) {