tencentcloud-sdk-python-essbasic 3.1.164__tar.gz → 3.1.169__tar.gz
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.
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/PKG-INFO +2 -2
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/setup.py +1 -1
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/__init__.py +1 -1
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20210526/essbasic_client.py +188 -63
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20210526/essbasic_client_async.py +183 -63
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20210526/models.py +202 -74
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud_sdk_python_essbasic.egg-info/PKG-INFO +2 -2
- tencentcloud_sdk_python_essbasic-3.1.169/tencentcloud_sdk_python_essbasic.egg-info/requires.txt +1 -0
- tencentcloud_sdk_python_essbasic-3.1.164/tencentcloud_sdk_python_essbasic.egg-info/requires.txt +0 -1
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/README.rst +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/setup.cfg +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/__init__.py +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20201222/__init__.py +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20201222/errorcodes.py +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20201222/essbasic_client.py +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20201222/essbasic_client_async.py +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20201222/models.py +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20210526/__init__.py +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20210526/errorcodes.py +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud_sdk_python_essbasic.egg-info/SOURCES.txt +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud_sdk_python_essbasic.egg-info/dependency_links.txt +0 -0
- {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud_sdk_python_essbasic.egg-info/top_level.txt +0 -0
{tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: tencentcloud-sdk-python-essbasic
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.169
|
|
4
4
|
Summary: Tencent Cloud Essbasic SDK for Python
|
|
5
5
|
Home-page: https://github.com/TencentCloud/tencentcloud-sdk-python
|
|
6
6
|
Author: Tencent Cloud
|
|
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 2.7
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.6
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.7
|
|
18
|
-
Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.
|
|
18
|
+
Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.169
|
|
19
19
|
|
|
20
20
|
============================
|
|
21
21
|
Tencent Cloud SDK for Python
|
{tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/setup.py
RENAMED
|
@@ -8,7 +8,7 @@ ROOT = os.path.dirname(__file__)
|
|
|
8
8
|
|
|
9
9
|
setup(
|
|
10
10
|
name='tencentcloud-sdk-python-essbasic',
|
|
11
|
-
install_requires=["tencentcloud-sdk-python-common>=3.1.
|
|
11
|
+
install_requires=["tencentcloud-sdk-python-common>=3.1.169,<4.0.0"],
|
|
12
12
|
|
|
13
13
|
version=tencentcloud.__version__,
|
|
14
14
|
description='Tencent Cloud Essbasic SDK for Python',
|
|
@@ -506,34 +506,33 @@ class EssbasicClient(AbstractClient):
|
|
|
506
506
|
|
|
507
507
|
|
|
508
508
|
def ChannelCreateFlowByFiles(self, request):
|
|
509
|
-
r"""
|
|
509
|
+
r"""本接口(ChannelCreateFlowByFiles)用于通过**已上传的 PDF 资源编号**创建待签署的合同流程。
|
|
510
510
|
|
|
511
|
-
|
|
511
|
+
**适用场景**:适用于非制式的合同文件签署。当开发者已拥有每个签署流程完整的 PDF 文件时,可通过本接口传入完整的 PDF 文件及流程信息,生成待签署的合同流程。
|
|
512
512
|
|
|
513
|
-
|
|
514
|
-
<ul>
|
|
515
|
-
<li>此接口静默签(企业自动签)能力为白名单功能,使用前请联系对接的客户经理沟通。</li>
|
|
516
|
-
<li>此接口需要依赖<a href="https://qian.tencent.com/developers/partnerApis/files/UploadFiles" target="_blank">文件上传接口</a>生成pdf资源编号(FileIds)进行使用。整体的逻辑如下图</li>
|
|
517
|
-
</ul>
|
|
513
|
+
### 1.1 调用依赖
|
|
518
514
|
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
**可以作为发起方和签署方的角色列表**
|
|
522
|
-
<table> <thead> <tr> <th>场景编号</th> <th>发起方</th> <th>签署方</th> <th>补充</th> </tr> </thead> <tbody> <tr> <td>场景一</td> <td>子企业A的员工</td> <td>子企业A的员工</td> <td>子企业是通过<a href="https://qian.tencent.com/developers/partnerApis/accounts/CreateConsoleLoginUrl" target="_blank">CreateConsoleLoginUrl</a>生成子客登录链接注册的企业</td> </tr> <tr> <td>场景二</td> <td>子企业A的员工</td> <td>子企业B(不指定经办人走领取逻辑)</td> <td>领取的逻辑可以参考文档<a href="https://qian.tencent.com/developers/partner/dynamic_signer" target="_blank">动态签署方</a> </td> </tr> <tr> <td>场景三</td> <td>子企业A的员工</td> <td>子企业B的员工</td> <td>-</td> </tr> <tr> <td>场景四</td> <td>子企业A的员工</td> <td>个人</td> <td>就是自然人,不是企业员工</td> </tr> <tr> <td>场景五</td> <td>子企业A的员工</td> <td>SaaS平台企业员工</td> <td>SaaS平台企业是通过<a href="https://qian.tencent.cn/console/company-register" target="_blank">https://qian.tencent.cn/console/company-register</a>链接注册的企业</td> </tr> </tbody> </table>
|
|
515
|
+
本接口需依赖[文件上传接口](https://qian.tencent.com/developers/partnerApis/files/UploadFiles)生成 PDF 资源编号(FileId)后使用,整体逻辑如下图:
|
|
523
516
|
|
|
517
|
+

|
|
524
518
|
|
|
525
|
-
|
|
526
|
-
|
|
519
|
+
### 1.2 发起方和签署方
|
|
520
|
+
<table> <thead> <tr> <th>场景编号</th> <th>发起方</th> <th>签署方</th> <th>补充</th> </tr> </thead> <tbody> <tr> <td>场景一</td> <td>子企业A的员工</td> <td>子企业A的员工</td> <td>子企业是通过<a href="https://qian.tencent.com/developers/partnerApis/accounts/CreateConsoleLoginUrl" target="_blank">CreateConsoleLoginUrl</a>生成子客登录链接注册的企业</td> </tr> <tr> <td>场景二</td> <td>子企业A的员工</td> <td>子企业B(不指定经办人走领取逻辑)</td> <td>领取的逻辑可以参考文档<a href="https://qian.tencent.com/developers/partner/dynamic_signer" target="_blank">动态签署方</a> </td> </tr> <tr> <td>场景三</td> <td>子企业A的员工</td> <td>子企业B的员工</td> <td>-</td> </tr> <tr> <td>场景四</td> <td>子企业A的员工</td> <td>个人</td> <td>就是自然人,不是企业员工</td> </tr> <tr> <td>场景五</td> <td>子企业A的员工</td> <td>SaaS平台企业员工</td> <td>SaaS平台企业是通过<a href="https://qian.tencent.cn/console/company-register" target="_blank">https://qian.tencent.cn/console/company-register</a>链接注册的企业</td> </tr> </tbody> </table>
|
|
527
521
|
|
|
528
|
-
`2. 不同类型的签署方传参不同, 可以参考开发者中心的FlowApproverInfo结构体说明`
|
|
529
522
|
|
|
530
|
-
|
|
523
|
+
<font color="red">发起方(第三方子企业 A 的企业与员工)必须完成实名</font>;作为 **签署方** 的第三方子企业 A 员工 / 个人自然人 / SaaS 平台企业员工 / 第三方子企业 B 员工等,其企业和个人可以未实名。
|
|
531
524
|
|
|
532
|
-
|
|
525
|
+
### 1.3 注意事项
|
|
526
|
+
- 合同<font color="red">发起后就会扣减合同的额度</font> , 只有撤销没有参与方签署过或只有自动签署签署过的合同,且<font color="red">有撤销合同额度</font>的情形下,才会返还合同额度。(**过期,拒签,签署完成,解除完成等状态不会返还额度**)。具体可以参考 [合同撤销返还额度说明](https://qian.tencent.com/developers/partner/contract_cancel_quota) 。
|
|
527
|
+
- <font color="red">支持的证件类型</font>可以参考 [支持的证件类型](https://qian.tencent.com/developers/partner/id_card_support) 。
|
|
528
|
+
- <font color="red">不同类型的签署方传参不同</font>,各类型签署方的信息传递方式详见 [签署方入参指引](https://qian.tencent.com/developers/partner/flow_approver) 。
|
|
529
|
+
- 如果合同正式发起前如需<font color="red">预览</font>效果,可参考 [使用文件发起的预览](https://qian.tencent.com/developers/partner/preview_guide#%E4%B8%80%E4%BD%BF%E7%94%A8%E6%96%87%E4%BB%B6%E5%8F%91%E8%B5%B7%E7%9A%84%E9%A2%84%E8%A7%88)
|
|
530
|
+
- 关于填写方与签署方的<font color="red">填写、签署先后顺序</font>设置,详见 [填写与签署顺序说明](https://qian.tencent.com/developers/partner/fill_sign_order)。
|
|
531
|
+
- 关于<font color="red">本企业自动签署与其他企业自动签署</font>的配置与使用,详见 [自动签署](https://qian.tencent.com/developers/partner/autosign_guide)。
|
|
533
532
|
|
|
534
|
-
|
|
535
|
-
1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-UploadFiles.mp4" target="_blank">【上传文件代码】编写示例</a
|
|
536
|
-
|
|
533
|
+
### 1.4 视频教程
|
|
534
|
+
1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-UploadFiles.mp4" target="_blank">【上传文件代码】编写示例</a>
|
|
535
|
+
2. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-ChannelCreateFlowByFiles.mp4" target="_blank">【用PDF文件创建签署流程】编写示例</a>
|
|
537
536
|
|
|
538
537
|
:param request: Request instance for ChannelCreateFlowByFiles.
|
|
539
538
|
:type request: :class:`tencentcloud.essbasic.v20210526.models.ChannelCreateFlowByFilesRequest`
|
|
@@ -2284,70 +2283,54 @@ class EssbasicClient(AbstractClient):
|
|
|
2284
2283
|
|
|
2285
2284
|
|
|
2286
2285
|
def CreateFlowsByTemplates(self, request):
|
|
2287
|
-
r"""
|
|
2288
|
-
|
|
2289
|
-
合同发起人必须在电子签已经进行实名。
|
|
2286
|
+
r"""本接口(CreateFlowsByTemplates)用于**使用模板批量创建签署流程**,当前单次可批量发起合同(签署流程)数量为 1~20 个。
|
|
2287
|
+
|
|
2290
2288
|
|
|
2291
|
-
###
|
|
2289
|
+
### 1.1 整体逻辑如下
|
|
2292
2290
|
|
|
2293
|
-

|
|
2294
2292
|
|
|
2295
|
-
###
|
|
2293
|
+
### 1.2 发起方和签署方
|
|
2296
2294
|
|
|
2297
2295
|
<table> <thead> <tr> <th>场景编号</th> <th>发起方</th> <th>签署方</th> <th>补充</th> </tr> </thead> <tbody> <tr> <td>场景一</td> <td>子企业A的员工</td> <td>子企业A的员工</td> <td>子企业是通过<a href="https://qian.tencent.com/developers/partnerApis/accounts/CreateConsoleLoginUrl" target="_blank">CreateConsoleLoginUrl</a>生成子客登录链接注册的企业</td> </tr> <tr> <td>场景二</td> <td>子企业A的员工</td> <td>子企业B(不指定经办人走领取逻辑)</td> <td>领取的逻辑可以参考文档<a href="https://qian.tencent.com/developers/partner/dynamic_signer" target="_blank">动态签署方</a> </td> </tr> <tr> <td>场景三</td> <td>子企业A的员工</td> <td>子企业B的员工</td> <td>-</td> </tr> <tr> <td>场景四</td> <td>子企业A的员工</td> <td>个人</td> <td>就是自然人,不是企业员工</td> </tr> <tr> <td>场景五</td> <td>子企业A的员工</td> <td>SaaS平台企业员工</td> <td>SaaS平台企业是通过<a href="https://qian.tencent.cn/console/company-register" target="_blank">https://qian.tencent.cn/console/company-register</a>链接注册的企业</td> </tr> </tbody> </table>
|
|
2298
2296
|
|
|
2297
|
+
<font color="red">发起方(第三方子企业 A 的企业与员工)必须完成实名</font>;作为 **签署方** 的第三方子企业 A 员工 / 个人自然人 / SaaS 平台企业员工 / 第三方子企业 B 员工等,其企业和个人可以未实名。
|
|
2299
2298
|
|
|
2300
2299
|
|
|
2300
|
+
### 1.3 填充模板中定义的发起人填写控件
|
|
2301
2301
|
|
|
2302
|
-
|
|
2303
|
-
模板中配置的<font color="red">发起人填充控件</font>可以通过本接口的**FormFields数组**字段填充
|
|
2302
|
+
模板中配置的 **发起人填充控件** 可以通过本接口的 **FormFields 数组** 字段填充。<font color="red">只能填充分配给发起方的填写控件,不能填充分配给签署方的签署控件</font> ,分配给签署方的签署控件需要签署方在签署环节填充。
|
|
2304
2303
|
|
|
2305
2304
|

|
|
2306
2305
|
填充的传参示例如下
|
|
2307
2306
|
|
|
2308
2307
|
```
|
|
2309
|
-
request.FormFields = [
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
"ComponentValue": "凤凰山至107国道",
|
|
2318
|
-
}, {
|
|
2319
|
-
"ComponentName": "面积",
|
|
2320
|
-
"ComponentValue": "100亩",
|
|
2321
|
-
}, {
|
|
2322
|
-
"ComponentName": "基本情况",
|
|
2323
|
-
"ComponentValue": "完好",
|
|
2324
|
-
}, , {
|
|
2325
|
-
"ComponentName": "用途",
|
|
2326
|
-
"ComponentValue": "经营农家乐",
|
|
2327
|
-
}
|
|
2328
|
-
]
|
|
2308
|
+
request.FormFields = [
|
|
2309
|
+
{ "ComponentName": "项目的名字", "ComponentValue": "休闲山庄" },
|
|
2310
|
+
{ "ComponentName": "项目的地址", "ComponentValue": "凤凰山北侧" },
|
|
2311
|
+
{ "ComponentName": "范围", "ComponentValue": "凤凰山至107国道" },
|
|
2312
|
+
{ "ComponentName": "面积", "ComponentValue": "100亩" },
|
|
2313
|
+
{ "ComponentName": "基本情况", "ComponentValue": "完好" },
|
|
2314
|
+
{ "ComponentName": "用途", "ComponentValue": "经营农家乐" }
|
|
2315
|
+
]
|
|
2329
2316
|
```
|
|
2330
|
-
|
|
2317
|
+
合成后合同样子
|
|
2331
2318
|
|
|
2332
2319
|

|
|
2333
2320
|
|
|
2321
|
+
### 1.4 注意事项
|
|
2322
|
+
- 合同<font color="red">发起后就会扣减合同的额度</font> , 只有撤销没有参与方签署过或只有自动签署签署过的合同,且<font color="red">有撤销合同额度</font>的情形下,才会返还合同额度。(**过期,拒签,签署完成,解除完成等状态不会返还额度**)。具体可以参考 [合同撤销返还额度说明](https://qian.tencent.com/developers/partner/contract_cancel_quota) 。
|
|
2323
|
+
- <font color="red">支持的证件类型</font>可以参考 [支持的证件类型](https://qian.tencent.com/developers/partner/id_card_support) 。
|
|
2324
|
+
- <font color="red">不同类型的签署方传参不同</font>,各类型签署方的信息传递方式详见 [签署方入参指引](https://qian.tencent.com/developers/partner/flow_approver) 。
|
|
2325
|
+
- 如果合同正式发起前如需<font color="red">预览</font>效果,可参考 [使用模板发起的预览](https://qian.tencent.com/developers/partner/preview_guide/#%E4%BA%8C%E4%BD%BF%E7%94%A8%E6%A8%A1%E6%9D%BF%E5%8F%91%E8%B5%B7%E7%9A%84%E9%A2%84%E8%A7%88)
|
|
2326
|
+
- 关于填写方与签署方的<font color="red">填写、签署先后顺序</font>设置,详见 [填写与签署顺序说明](https://qian.tencent.com/developers/partner/fill_sign_order)。
|
|
2327
|
+
- 关于<font color="red">本企业自动签署与其他企业自动签署</font>的配置与使用,详见 [自动签署](https://qian.tencent.com/developers/partner/autosign_guide)。
|
|
2328
|
+
- 如若在模板中配置了[动态表格](https://qian.tencent.com/developers/partner/dynamic_table), 如果模板中配有附件控件,上传的附件必须为A4尺寸的PDF。
|
|
2334
2329
|
|
|
2330
|
+
### 1.5 视频教程
|
|
2335
2331
|
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
2. 不同类型的签署方传参不同, 可以参考开发者中心的FlowApproverInfo结构体说明
|
|
2340
|
-
|
|
2341
|
-
3. <font color="red">调用接口发起合同成功就会扣减合同的额度</font>, 只有撤销没有参与方签署过或只有自动签署签署过的合同,才会返还合同额度。(过期,拒签,签署完成,解除完成等状态不会返还额度)
|
|
2342
|
-
|
|
2343
|
-
4. <font color="red">静默(自动)签署不支持合同签署方存在填写</font>
|
|
2344
|
-
|
|
2345
|
-
5. <font color="red">在下一步创建签署链接前,建议等待DocumentFill </font> <a href="https://qian.tencent.com/developers/partner/callback_types_file_resources">PDF合成完成的回调</a>或者睡眠几秒,尤其是当模板中存在动态表格等复杂填写控件时,因为合成过程可能会耗费秒级别的时间。
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
<font color="red">相关视频指引</font> <br>
|
|
2349
|
-
1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-CreateTemplates.mp4" target="_blank">创建模板&设置成本企业自动签署</a><br>
|
|
2350
|
-
2. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-CreateFlowsByTemplates.mp4" target="_blank">【用模板创建签署流程】编写示例视频教程</a><br>
|
|
2332
|
+
1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-CreateTemplates.mp4" target="_blank">创建模板 & 设置成本企业自动签署</a>
|
|
2333
|
+
2. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-CreateFlowsByTemplates.mp4" target="_blank">【用模板创建签署流程】编写示例视频教程</a>
|
|
2351
2334
|
|
|
2352
2335
|
:param request: Request instance for CreateFlowsByTemplates.
|
|
2353
2336
|
:type request: :class:`tencentcloud.essbasic.v20210526.models.CreateFlowsByTemplatesRequest`
|
|
@@ -2522,6 +2505,148 @@ class EssbasicClient(AbstractClient):
|
|
|
2522
2505
|
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
2523
2506
|
|
|
2524
2507
|
|
|
2508
|
+
def CreateRequestWithEncryption(self, request):
|
|
2509
|
+
r"""该接口支持对请求内容进行加密传输。调用方需使用约定的 AES-CBC 或 SM4-CBC 算法对请求内容进行加密,并使用 HMAC-SHA256 或 HMAC-SM3 算法对 IV 和加密后的数据进行完整性校验,防止请求内容被篡改。
|
|
2510
|
+
|
|
2511
|
+

|
|
2512
|
+
|
|
2513
|
+
**请求端加密流程**
|
|
2514
|
+
1. 每次请求使用密码学安全的随机源生成 16 字节 的 IV。每次请求必须重新生成,严禁复用。
|
|
2515
|
+
2. 使用约定的 AES-CBC 或 SM4-CBC 算法对原始请求体进行加密,使用 PKCS#7 Padding。
|
|
2516
|
+
3. 将加密后的密文原始字节进行标准 Base64 编码,作为 EncryptedData 参数。
|
|
2517
|
+
4. 将 IV 原始字节进行标准 Base64 编码,作为 IV 参数。
|
|
2518
|
+
5. 对 IV 原始字节和密文原始字节直接拼接(不添加分隔符),计算 HMAC-SHA256 或 HMAC-SM4:HMAC(Key, IVBytes || CiphertextBytes)
|
|
2519
|
+
6. 将 HMAC 的结果进行 标准 Base64 编码,作为 EncryptionSignature 参数。
|
|
2520
|
+
|
|
2521
|
+
**响应端解密流程**
|
|
2522
|
+
1. 先判断本接口自身是否返回外层错误,此时错误为明文(标准腾讯云错误体),有则直接失败处理。
|
|
2523
|
+
2. 分别对 IV、EncryptedData、EncryptionSignature 做标准 Base64 解码,得到原始字节。
|
|
2524
|
+
3. 将 IV 与密文原始字节直接拼接(无分隔符),计算 HMAC-SHA256 或 HMAC-SM4:HMAC(Key, IVBytes || CiphertextBytes)。
|
|
2525
|
+
4. 与响应中 EncryptionSignature 解码后的字节做恒定时间比较,不一致立即失败,不得继续解密。
|
|
2526
|
+
5. 使用约定的 AES-CBC 或 SM4-CBC,以 IV 和密钥解密 EncryptedData,去除 PKCS#7 Padding 得到明文。
|
|
2527
|
+
6. 先用腾讯云标准错误体反序列化明文,判断被加密业务接口是否返回 Error。
|
|
2528
|
+
7. 无业务错误时,再用目标业务接口的响应结构体反序列化明文,取出实际业务参数。
|
|
2529
|
+
|
|
2530
|
+
**响应端错误处理**
|
|
2531
|
+
1. 外层错误(本接口本身调用失败):返回标准腾讯云错误 JSON(含 Error.Code / Error.Message),无 EncryptedData,不需要解密即可处理。
|
|
2532
|
+
2. 内层错误(业务接口执行失败):外层成功,但解密后的明文里包含 Error.Code / Error.Message,按目标业务接口的错误规范处理。
|
|
2533
|
+
|
|
2534
|
+
**处理过程示例**
|
|
2535
|
+
```
|
|
2536
|
+
# ========== 前置约定 ==========
|
|
2537
|
+
AESKey : 加密 密钥(AES 32 字节,SM4 16 字节)
|
|
2538
|
+
HMACKey : HMAC 密钥(与加密密钥需要不同)
|
|
2539
|
+
ALGO : AES-CBC 或 SM4-CBC,双方约定
|
|
2540
|
+
HMAC : ALGO == AES-CBC ? HMAC-SHA256 : HMAC-SM3
|
|
2541
|
+
|
|
2542
|
+
# ========== 请求端:加密并调用 ==========
|
|
2543
|
+
function CallWithEncryption(bizAction, bizApplicationId, bizRequestObj):
|
|
2544
|
+
# 1. 序列化业务请求
|
|
2545
|
+
plaintext = JSON.stringify(bizRequestObj)
|
|
2546
|
+
# 2. 生成 16 字节随机 IV(每次新生成,禁止复用)
|
|
2547
|
+
iv = SecureRandom(16)
|
|
2548
|
+
# 3. 对称加密(PKCS#7 Padding)
|
|
2549
|
+
ciphertext = SymmetricEncrypt(ALGO, AESKey, iv, plaintext)
|
|
2550
|
+
# 4. 计算完整性签名:HMAC(Key, IV || Ciphertext)
|
|
2551
|
+
signature = HMAC(HMACKey, concat(iv, ciphertext))
|
|
2552
|
+
# 5. 组装外层请求参数
|
|
2553
|
+
encReq = {
|
|
2554
|
+
RequestAction: bizAction,
|
|
2555
|
+
ApplicationId: bizApplicationId,
|
|
2556
|
+
IV: Base64(iv),
|
|
2557
|
+
EncryptedData: Base64(ciphertext),
|
|
2558
|
+
EncryptionSignature: Base64(signature),
|
|
2559
|
+
}
|
|
2560
|
+
# 6. 调用 CreateRequestWithEncryption
|
|
2561
|
+
# TC3-HMAC-SHA256 鉴权由官方 SDK 自动完成
|
|
2562
|
+
encResp = CloudAPI.CreateRequestWithEncryption(encReq)
|
|
2563
|
+
# 7. 外层错误:明文,直接抛出
|
|
2564
|
+
if encResp.Error != nil:
|
|
2565
|
+
raise OuterError(encResp.Error)
|
|
2566
|
+
# 8. 解密并返回业务响应
|
|
2567
|
+
return DecryptResponse(encResp.Response)
|
|
2568
|
+
|
|
2569
|
+
# ========== 响应端:校验并解密 ==========
|
|
2570
|
+
function DecryptResponse(resp):
|
|
2571
|
+
# 1. Base64 解码
|
|
2572
|
+
ivBytes = Base64Decode(resp.IV)
|
|
2573
|
+
ctBytes = Base64Decode(resp.EncryptedData)
|
|
2574
|
+
sigBytes = Base64Decode(resp.EncryptionSignature)
|
|
2575
|
+
# 2. 重新计算 HMAC
|
|
2576
|
+
expected = HMAC(HMACKey, concat(ivBytes, ctBytes))
|
|
2577
|
+
# 3. 恒定时间比较,失败立即终止(不得继续解密)
|
|
2578
|
+
if not ConstantTimeEqual(expected, sigBytes):
|
|
2579
|
+
raise SignatureMismatch
|
|
2580
|
+
# 4. 对称解密,去除 PKCS#7 Padding
|
|
2581
|
+
plaintext = SymmetricDecrypt(ALGO, AESKey, ivBytes, ctBytes)
|
|
2582
|
+
# 5. 先按腾讯云错误体解析,判断业务是否失败
|
|
2583
|
+
bizErr = TryParseTencentCloudError(plaintext)
|
|
2584
|
+
if bizErr != nil:
|
|
2585
|
+
raise BusinessError(bizErr)
|
|
2586
|
+
# 6. 按目标业务接口的响应结构反序列化
|
|
2587
|
+
return JSON.parse(plaintext, BizResponseSchema)
|
|
2588
|
+
```
|
|
2589
|
+
|
|
2590
|
+
**AES-CBC 示例**
|
|
2591
|
+
|
|
2592
|
+
以下示例参数及结果可用于验证 AES-CBC 加密和 HMAC-SHA256 签名算法的实现是否正确。
|
|
2593
|
+
|
|
2594
|
+
加密密钥:AES-CBC-Key-1234
|
|
2595
|
+
签名密钥:AES-HMAC-Key-123
|
|
2596
|
+
IV:1234567890abcdef
|
|
2597
|
+
请求内容:{"Request": "This is a test."}
|
|
2598
|
+
|
|
2599
|
+
最终请求参数:
|
|
2600
|
+
```
|
|
2601
|
+
{
|
|
2602
|
+
"RequestAction": "ChannelDescribeFlowComponents",
|
|
2603
|
+
"ApplicationId: "yD******************************,
|
|
2604
|
+
"IV": "MTIzNDU2Nzg5MGFiY2RlZg==",
|
|
2605
|
+
"EncryptedData": "Iqp2W1jislwMNmE7bH9dKZZiMQsfkAPyvAAqDFRnWLw=",
|
|
2606
|
+
"EncryptionSignature": "4TT3PUCZgZT7YmEPtXDm5PDcM6xT7FoYHfMW8xunB5I="
|
|
2607
|
+
}
|
|
2608
|
+
```
|
|
2609
|
+
|
|
2610
|
+
**SM4-CBC 示例**
|
|
2611
|
+
|
|
2612
|
+
以下示例参数及结果可用于验证 SM4-CBC 加密和 HMAC-SM4 签名算法的实现是否正确。
|
|
2613
|
+
|
|
2614
|
+
加密密钥:SM4-CBC-Key-1234
|
|
2615
|
+
签名密钥:SM4-HMAC-Key-123
|
|
2616
|
+
IV:fedcba0987654321
|
|
2617
|
+
请求内容:{"Request": "This is a test."}
|
|
2618
|
+
|
|
2619
|
+
最终请求参数:
|
|
2620
|
+
```
|
|
2621
|
+
{
|
|
2622
|
+
"RequestAction": "ChannelDescribeFlowComponents",
|
|
2623
|
+
"ApplicationId: "yD******************************,
|
|
2624
|
+
"IV": "ZmVkY2JhMDk4NzY1NDMyMQ==",
|
|
2625
|
+
"EncryptedData": "GwUovQhNUPaUnVM/UDXMtPOYTpTSi2B1oyZDFbyyvns=",
|
|
2626
|
+
"EncryptionSignature": "nHB/v/AvOaDCQ66esFNnp12lHKcGkwaLGid0Warl/KE="
|
|
2627
|
+
}
|
|
2628
|
+
```
|
|
2629
|
+
|
|
2630
|
+
:param request: Request instance for CreateRequestWithEncryption.
|
|
2631
|
+
:type request: :class:`tencentcloud.essbasic.v20210526.models.CreateRequestWithEncryptionRequest`
|
|
2632
|
+
:rtype: :class:`tencentcloud.essbasic.v20210526.models.CreateRequestWithEncryptionResponse`
|
|
2633
|
+
|
|
2634
|
+
"""
|
|
2635
|
+
try:
|
|
2636
|
+
params = request._serialize()
|
|
2637
|
+
headers = request.headers
|
|
2638
|
+
body = self.call("CreateRequestWithEncryption", params, headers=headers)
|
|
2639
|
+
response = json.loads(body)
|
|
2640
|
+
model = models.CreateRequestWithEncryptionResponse()
|
|
2641
|
+
model._deserialize(response["Response"])
|
|
2642
|
+
return model
|
|
2643
|
+
except Exception as e:
|
|
2644
|
+
if isinstance(e, TencentCloudSDKException):
|
|
2645
|
+
raise
|
|
2646
|
+
else:
|
|
2647
|
+
raise TencentCloudSDKException(type(e).__name__, str(e))
|
|
2648
|
+
|
|
2649
|
+
|
|
2525
2650
|
def CreateSealByImage(self, request):
|
|
2526
2651
|
r"""1. 可以**通过图片**为子客企业代创建印章,图片最大5MB
|
|
2527
2652
|
|
|
@@ -440,34 +440,33 @@ class EssbasicClient(AbstractClient):
|
|
|
440
440
|
opts: Dict = None,
|
|
441
441
|
) -> models.ChannelCreateFlowByFilesResponse:
|
|
442
442
|
"""
|
|
443
|
-
|
|
443
|
+
本接口(ChannelCreateFlowByFiles)用于通过**已上传的 PDF 资源编号**创建待签署的合同流程。
|
|
444
444
|
|
|
445
|
-
|
|
445
|
+
**适用场景**:适用于非制式的合同文件签署。当开发者已拥有每个签署流程完整的 PDF 文件时,可通过本接口传入完整的 PDF 文件及流程信息,生成待签署的合同流程。
|
|
446
446
|
|
|
447
|
-
|
|
448
|
-
<ul>
|
|
449
|
-
<li>此接口静默签(企业自动签)能力为白名单功能,使用前请联系对接的客户经理沟通。</li>
|
|
450
|
-
<li>此接口需要依赖<a href="https://qian.tencent.com/developers/partnerApis/files/UploadFiles" target="_blank">文件上传接口</a>生成pdf资源编号(FileIds)进行使用。整体的逻辑如下图</li>
|
|
451
|
-
</ul>
|
|
447
|
+
### 1.1 调用依赖
|
|
452
448
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
**可以作为发起方和签署方的角色列表**
|
|
456
|
-
<table> <thead> <tr> <th>场景编号</th> <th>发起方</th> <th>签署方</th> <th>补充</th> </tr> </thead> <tbody> <tr> <td>场景一</td> <td>子企业A的员工</td> <td>子企业A的员工</td> <td>子企业是通过<a href="https://qian.tencent.com/developers/partnerApis/accounts/CreateConsoleLoginUrl" target="_blank">CreateConsoleLoginUrl</a>生成子客登录链接注册的企业</td> </tr> <tr> <td>场景二</td> <td>子企业A的员工</td> <td>子企业B(不指定经办人走领取逻辑)</td> <td>领取的逻辑可以参考文档<a href="https://qian.tencent.com/developers/partner/dynamic_signer" target="_blank">动态签署方</a> </td> </tr> <tr> <td>场景三</td> <td>子企业A的员工</td> <td>子企业B的员工</td> <td>-</td> </tr> <tr> <td>场景四</td> <td>子企业A的员工</td> <td>个人</td> <td>就是自然人,不是企业员工</td> </tr> <tr> <td>场景五</td> <td>子企业A的员工</td> <td>SaaS平台企业员工</td> <td>SaaS平台企业是通过<a href="https://qian.tencent.cn/console/company-register" target="_blank">https://qian.tencent.cn/console/company-register</a>链接注册的企业</td> </tr> </tbody> </table>
|
|
449
|
+
本接口需依赖[文件上传接口](https://qian.tencent.com/developers/partnerApis/files/UploadFiles)生成 PDF 资源编号(FileId)后使用,整体逻辑如下图:
|
|
457
450
|
|
|
451
|
+

|
|
458
452
|
|
|
459
|
-
|
|
460
|
-
|
|
453
|
+
### 1.2 发起方和签署方
|
|
454
|
+
<table> <thead> <tr> <th>场景编号</th> <th>发起方</th> <th>签署方</th> <th>补充</th> </tr> </thead> <tbody> <tr> <td>场景一</td> <td>子企业A的员工</td> <td>子企业A的员工</td> <td>子企业是通过<a href="https://qian.tencent.com/developers/partnerApis/accounts/CreateConsoleLoginUrl" target="_blank">CreateConsoleLoginUrl</a>生成子客登录链接注册的企业</td> </tr> <tr> <td>场景二</td> <td>子企业A的员工</td> <td>子企业B(不指定经办人走领取逻辑)</td> <td>领取的逻辑可以参考文档<a href="https://qian.tencent.com/developers/partner/dynamic_signer" target="_blank">动态签署方</a> </td> </tr> <tr> <td>场景三</td> <td>子企业A的员工</td> <td>子企业B的员工</td> <td>-</td> </tr> <tr> <td>场景四</td> <td>子企业A的员工</td> <td>个人</td> <td>就是自然人,不是企业员工</td> </tr> <tr> <td>场景五</td> <td>子企业A的员工</td> <td>SaaS平台企业员工</td> <td>SaaS平台企业是通过<a href="https://qian.tencent.cn/console/company-register" target="_blank">https://qian.tencent.cn/console/company-register</a>链接注册的企业</td> </tr> </tbody> </table>
|
|
461
455
|
|
|
462
|
-
`2. 不同类型的签署方传参不同, 可以参考开发者中心的FlowApproverInfo结构体说明`
|
|
463
456
|
|
|
464
|
-
|
|
457
|
+
<font color="red">发起方(第三方子企业 A 的企业与员工)必须完成实名</font>;作为 **签署方** 的第三方子企业 A 员工 / 个人自然人 / SaaS 平台企业员工 / 第三方子企业 B 员工等,其企业和个人可以未实名。
|
|
465
458
|
|
|
466
|
-
|
|
459
|
+
### 1.3 注意事项
|
|
460
|
+
- 合同<font color="red">发起后就会扣减合同的额度</font> , 只有撤销没有参与方签署过或只有自动签署签署过的合同,且<font color="red">有撤销合同额度</font>的情形下,才会返还合同额度。(**过期,拒签,签署完成,解除完成等状态不会返还额度**)。具体可以参考 [合同撤销返还额度说明](https://qian.tencent.com/developers/partner/contract_cancel_quota) 。
|
|
461
|
+
- <font color="red">支持的证件类型</font>可以参考 [支持的证件类型](https://qian.tencent.com/developers/partner/id_card_support) 。
|
|
462
|
+
- <font color="red">不同类型的签署方传参不同</font>,各类型签署方的信息传递方式详见 [签署方入参指引](https://qian.tencent.com/developers/partner/flow_approver) 。
|
|
463
|
+
- 如果合同正式发起前如需<font color="red">预览</font>效果,可参考 [使用文件发起的预览](https://qian.tencent.com/developers/partner/preview_guide#%E4%B8%80%E4%BD%BF%E7%94%A8%E6%96%87%E4%BB%B6%E5%8F%91%E8%B5%B7%E7%9A%84%E9%A2%84%E8%A7%88)
|
|
464
|
+
- 关于填写方与签署方的<font color="red">填写、签署先后顺序</font>设置,详见 [填写与签署顺序说明](https://qian.tencent.com/developers/partner/fill_sign_order)。
|
|
465
|
+
- 关于<font color="red">本企业自动签署与其他企业自动签署</font>的配置与使用,详见 [自动签署](https://qian.tencent.com/developers/partner/autosign_guide)。
|
|
467
466
|
|
|
468
|
-
|
|
469
|
-
1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-UploadFiles.mp4" target="_blank">【上传文件代码】编写示例</a
|
|
470
|
-
|
|
467
|
+
### 1.4 视频教程
|
|
468
|
+
1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-UploadFiles.mp4" target="_blank">【上传文件代码】编写示例</a>
|
|
469
|
+
2. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-ChannelCreateFlowByFiles.mp4" target="_blank">【用PDF文件创建签署流程】编写示例</a>
|
|
471
470
|
"""
|
|
472
471
|
|
|
473
472
|
kwargs = {}
|
|
@@ -1958,70 +1957,54 @@ class EssbasicClient(AbstractClient):
|
|
|
1958
1957
|
opts: Dict = None,
|
|
1959
1958
|
) -> models.CreateFlowsByTemplatesResponse:
|
|
1960
1959
|
"""
|
|
1961
|
-
|
|
1962
|
-
如若在模板中配置了动态表格, 上传的附件必须为A4大小
|
|
1963
|
-
合同发起人必须在电子签已经进行实名。
|
|
1960
|
+
本接口(CreateFlowsByTemplates)用于**使用模板批量创建签署流程**,当前单次可批量发起合同(签署流程)数量为 1~20 个。
|
|
1964
1961
|
|
|
1965
|
-
### 一. 整体的逻辑如下
|
|
1966
1962
|
|
|
1967
|
-
|
|
1963
|
+
### 1.1 整体逻辑如下
|
|
1968
1964
|
|
|
1969
|
-
|
|
1965
|
+

|
|
1966
|
+
|
|
1967
|
+
### 1.2 发起方和签署方
|
|
1970
1968
|
|
|
1971
1969
|
<table> <thead> <tr> <th>场景编号</th> <th>发起方</th> <th>签署方</th> <th>补充</th> </tr> </thead> <tbody> <tr> <td>场景一</td> <td>子企业A的员工</td> <td>子企业A的员工</td> <td>子企业是通过<a href="https://qian.tencent.com/developers/partnerApis/accounts/CreateConsoleLoginUrl" target="_blank">CreateConsoleLoginUrl</a>生成子客登录链接注册的企业</td> </tr> <tr> <td>场景二</td> <td>子企业A的员工</td> <td>子企业B(不指定经办人走领取逻辑)</td> <td>领取的逻辑可以参考文档<a href="https://qian.tencent.com/developers/partner/dynamic_signer" target="_blank">动态签署方</a> </td> </tr> <tr> <td>场景三</td> <td>子企业A的员工</td> <td>子企业B的员工</td> <td>-</td> </tr> <tr> <td>场景四</td> <td>子企业A的员工</td> <td>个人</td> <td>就是自然人,不是企业员工</td> </tr> <tr> <td>场景五</td> <td>子企业A的员工</td> <td>SaaS平台企业员工</td> <td>SaaS平台企业是通过<a href="https://qian.tencent.cn/console/company-register" target="_blank">https://qian.tencent.cn/console/company-register</a>链接注册的企业</td> </tr> </tbody> </table>
|
|
1972
1970
|
|
|
1971
|
+
<font color="red">发起方(第三方子企业 A 的企业与员工)必须完成实名</font>;作为 **签署方** 的第三方子企业 A 员工 / 个人自然人 / SaaS 平台企业员工 / 第三方子企业 B 员工等,其企业和个人可以未实名。
|
|
1973
1972
|
|
|
1974
1973
|
|
|
1974
|
+
### 1.3 填充模板中定义的发起人填写控件
|
|
1975
1975
|
|
|
1976
|
-
|
|
1977
|
-
模板中配置的<font color="red">发起人填充控件</font>可以通过本接口的**FormFields数组**字段填充
|
|
1976
|
+
模板中配置的 **发起人填充控件** 可以通过本接口的 **FormFields 数组** 字段填充。<font color="red">只能填充分配给发起方的填写控件,不能填充分配给签署方的签署控件</font> ,分配给签署方的签署控件需要签署方在签署环节填充。
|
|
1978
1977
|
|
|
1979
1978
|

|
|
1980
1979
|
填充的传参示例如下
|
|
1981
1980
|
|
|
1982
1981
|
```
|
|
1983
|
-
request.FormFields = [
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
"ComponentValue": "凤凰山至107国道",
|
|
1992
|
-
}, {
|
|
1993
|
-
"ComponentName": "面积",
|
|
1994
|
-
"ComponentValue": "100亩",
|
|
1995
|
-
}, {
|
|
1996
|
-
"ComponentName": "基本情况",
|
|
1997
|
-
"ComponentValue": "完好",
|
|
1998
|
-
}, , {
|
|
1999
|
-
"ComponentName": "用途",
|
|
2000
|
-
"ComponentValue": "经营农家乐",
|
|
2001
|
-
}
|
|
2002
|
-
]
|
|
1982
|
+
request.FormFields = [
|
|
1983
|
+
{ "ComponentName": "项目的名字", "ComponentValue": "休闲山庄" },
|
|
1984
|
+
{ "ComponentName": "项目的地址", "ComponentValue": "凤凰山北侧" },
|
|
1985
|
+
{ "ComponentName": "范围", "ComponentValue": "凤凰山至107国道" },
|
|
1986
|
+
{ "ComponentName": "面积", "ComponentValue": "100亩" },
|
|
1987
|
+
{ "ComponentName": "基本情况", "ComponentValue": "完好" },
|
|
1988
|
+
{ "ComponentName": "用途", "ComponentValue": "经营农家乐" }
|
|
1989
|
+
]
|
|
2003
1990
|
```
|
|
2004
|
-
|
|
1991
|
+
合成后合同样子
|
|
2005
1992
|
|
|
2006
1993
|

|
|
2007
1994
|
|
|
1995
|
+
### 1.4 注意事项
|
|
1996
|
+
- 合同<font color="red">发起后就会扣减合同的额度</font> , 只有撤销没有参与方签署过或只有自动签署签署过的合同,且<font color="red">有撤销合同额度</font>的情形下,才会返还合同额度。(**过期,拒签,签署完成,解除完成等状态不会返还额度**)。具体可以参考 [合同撤销返还额度说明](https://qian.tencent.com/developers/partner/contract_cancel_quota) 。
|
|
1997
|
+
- <font color="red">支持的证件类型</font>可以参考 [支持的证件类型](https://qian.tencent.com/developers/partner/id_card_support) 。
|
|
1998
|
+
- <font color="red">不同类型的签署方传参不同</font>,各类型签署方的信息传递方式详见 [签署方入参指引](https://qian.tencent.com/developers/partner/flow_approver) 。
|
|
1999
|
+
- 如果合同正式发起前如需<font color="red">预览</font>效果,可参考 [使用模板发起的预览](https://qian.tencent.com/developers/partner/preview_guide/#%E4%BA%8C%E4%BD%BF%E7%94%A8%E6%A8%A1%E6%9D%BF%E5%8F%91%E8%B5%B7%E7%9A%84%E9%A2%84%E8%A7%88)
|
|
2000
|
+
- 关于填写方与签署方的<font color="red">填写、签署先后顺序</font>设置,详见 [填写与签署顺序说明](https://qian.tencent.com/developers/partner/fill_sign_order)。
|
|
2001
|
+
- 关于<font color="red">本企业自动签署与其他企业自动签署</font>的配置与使用,详见 [自动签署](https://qian.tencent.com/developers/partner/autosign_guide)。
|
|
2002
|
+
- 如若在模板中配置了[动态表格](https://qian.tencent.com/developers/partner/dynamic_table), 如果模板中配有附件控件,上传的附件必须为A4尺寸的PDF。
|
|
2008
2003
|
|
|
2004
|
+
### 1.5 视频教程
|
|
2009
2005
|
|
|
2010
|
-
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
2. 不同类型的签署方传参不同, 可以参考开发者中心的FlowApproverInfo结构体说明
|
|
2014
|
-
|
|
2015
|
-
3. <font color="red">调用接口发起合同成功就会扣减合同的额度</font>, 只有撤销没有参与方签署过或只有自动签署签署过的合同,才会返还合同额度。(过期,拒签,签署完成,解除完成等状态不会返还额度)
|
|
2016
|
-
|
|
2017
|
-
4. <font color="red">静默(自动)签署不支持合同签署方存在填写</font>
|
|
2018
|
-
|
|
2019
|
-
5. <font color="red">在下一步创建签署链接前,建议等待DocumentFill </font> <a href="https://qian.tencent.com/developers/partner/callback_types_file_resources">PDF合成完成的回调</a>或者睡眠几秒,尤其是当模板中存在动态表格等复杂填写控件时,因为合成过程可能会耗费秒级别的时间。
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
<font color="red">相关视频指引</font> <br>
|
|
2023
|
-
1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-CreateTemplates.mp4" target="_blank">创建模板&设置成本企业自动签署</a><br>
|
|
2024
|
-
2. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-CreateFlowsByTemplates.mp4" target="_blank">【用模板创建签署流程】编写示例视频教程</a><br>
|
|
2006
|
+
1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-CreateTemplates.mp4" target="_blank">创建模板 & 设置成本企业自动签署</a>
|
|
2007
|
+
2. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-CreateFlowsByTemplates.mp4" target="_blank">【用模板创建签署流程】编写示例视频教程</a>
|
|
2025
2008
|
"""
|
|
2026
2009
|
|
|
2027
2010
|
kwargs = {}
|
|
@@ -2161,6 +2144,143 @@ class EssbasicClient(AbstractClient):
|
|
|
2161
2144
|
|
|
2162
2145
|
return await self.call_and_deserialize(**kwargs)
|
|
2163
2146
|
|
|
2147
|
+
async def CreateRequestWithEncryption(
|
|
2148
|
+
self,
|
|
2149
|
+
request: models.CreateRequestWithEncryptionRequest,
|
|
2150
|
+
opts: Dict = None,
|
|
2151
|
+
) -> models.CreateRequestWithEncryptionResponse:
|
|
2152
|
+
"""
|
|
2153
|
+
该接口支持对请求内容进行加密传输。调用方需使用约定的 AES-CBC 或 SM4-CBC 算法对请求内容进行加密,并使用 HMAC-SHA256 或 HMAC-SM3 算法对 IV 和加密后的数据进行完整性校验,防止请求内容被篡改。
|
|
2154
|
+
|
|
2155
|
+

|
|
2156
|
+
|
|
2157
|
+
**请求端加密流程**
|
|
2158
|
+
1. 每次请求使用密码学安全的随机源生成 16 字节 的 IV。每次请求必须重新生成,严禁复用。
|
|
2159
|
+
2. 使用约定的 AES-CBC 或 SM4-CBC 算法对原始请求体进行加密,使用 PKCS#7 Padding。
|
|
2160
|
+
3. 将加密后的密文原始字节进行标准 Base64 编码,作为 EncryptedData 参数。
|
|
2161
|
+
4. 将 IV 原始字节进行标准 Base64 编码,作为 IV 参数。
|
|
2162
|
+
5. 对 IV 原始字节和密文原始字节直接拼接(不添加分隔符),计算 HMAC-SHA256 或 HMAC-SM4:HMAC(Key, IVBytes || CiphertextBytes)
|
|
2163
|
+
6. 将 HMAC 的结果进行 标准 Base64 编码,作为 EncryptionSignature 参数。
|
|
2164
|
+
|
|
2165
|
+
**响应端解密流程**
|
|
2166
|
+
1. 先判断本接口自身是否返回外层错误,此时错误为明文(标准腾讯云错误体),有则直接失败处理。
|
|
2167
|
+
2. 分别对 IV、EncryptedData、EncryptionSignature 做标准 Base64 解码,得到原始字节。
|
|
2168
|
+
3. 将 IV 与密文原始字节直接拼接(无分隔符),计算 HMAC-SHA256 或 HMAC-SM4:HMAC(Key, IVBytes || CiphertextBytes)。
|
|
2169
|
+
4. 与响应中 EncryptionSignature 解码后的字节做恒定时间比较,不一致立即失败,不得继续解密。
|
|
2170
|
+
5. 使用约定的 AES-CBC 或 SM4-CBC,以 IV 和密钥解密 EncryptedData,去除 PKCS#7 Padding 得到明文。
|
|
2171
|
+
6. 先用腾讯云标准错误体反序列化明文,判断被加密业务接口是否返回 Error。
|
|
2172
|
+
7. 无业务错误时,再用目标业务接口的响应结构体反序列化明文,取出实际业务参数。
|
|
2173
|
+
|
|
2174
|
+
**响应端错误处理**
|
|
2175
|
+
1. 外层错误(本接口本身调用失败):返回标准腾讯云错误 JSON(含 Error.Code / Error.Message),无 EncryptedData,不需要解密即可处理。
|
|
2176
|
+
2. 内层错误(业务接口执行失败):外层成功,但解密后的明文里包含 Error.Code / Error.Message,按目标业务接口的错误规范处理。
|
|
2177
|
+
|
|
2178
|
+
**处理过程示例**
|
|
2179
|
+
```
|
|
2180
|
+
# ========== 前置约定 ==========
|
|
2181
|
+
AESKey : 加密 密钥(AES 32 字节,SM4 16 字节)
|
|
2182
|
+
HMACKey : HMAC 密钥(与加密密钥需要不同)
|
|
2183
|
+
ALGO : AES-CBC 或 SM4-CBC,双方约定
|
|
2184
|
+
HMAC : ALGO == AES-CBC ? HMAC-SHA256 : HMAC-SM3
|
|
2185
|
+
|
|
2186
|
+
# ========== 请求端:加密并调用 ==========
|
|
2187
|
+
function CallWithEncryption(bizAction, bizApplicationId, bizRequestObj):
|
|
2188
|
+
# 1. 序列化业务请求
|
|
2189
|
+
plaintext = JSON.stringify(bizRequestObj)
|
|
2190
|
+
# 2. 生成 16 字节随机 IV(每次新生成,禁止复用)
|
|
2191
|
+
iv = SecureRandom(16)
|
|
2192
|
+
# 3. 对称加密(PKCS#7 Padding)
|
|
2193
|
+
ciphertext = SymmetricEncrypt(ALGO, AESKey, iv, plaintext)
|
|
2194
|
+
# 4. 计算完整性签名:HMAC(Key, IV || Ciphertext)
|
|
2195
|
+
signature = HMAC(HMACKey, concat(iv, ciphertext))
|
|
2196
|
+
# 5. 组装外层请求参数
|
|
2197
|
+
encReq = {
|
|
2198
|
+
RequestAction: bizAction,
|
|
2199
|
+
ApplicationId: bizApplicationId,
|
|
2200
|
+
IV: Base64(iv),
|
|
2201
|
+
EncryptedData: Base64(ciphertext),
|
|
2202
|
+
EncryptionSignature: Base64(signature),
|
|
2203
|
+
}
|
|
2204
|
+
# 6. 调用 CreateRequestWithEncryption
|
|
2205
|
+
# TC3-HMAC-SHA256 鉴权由官方 SDK 自动完成
|
|
2206
|
+
encResp = CloudAPI.CreateRequestWithEncryption(encReq)
|
|
2207
|
+
# 7. 外层错误:明文,直接抛出
|
|
2208
|
+
if encResp.Error != nil:
|
|
2209
|
+
raise OuterError(encResp.Error)
|
|
2210
|
+
# 8. 解密并返回业务响应
|
|
2211
|
+
return DecryptResponse(encResp.Response)
|
|
2212
|
+
|
|
2213
|
+
# ========== 响应端:校验并解密 ==========
|
|
2214
|
+
function DecryptResponse(resp):
|
|
2215
|
+
# 1. Base64 解码
|
|
2216
|
+
ivBytes = Base64Decode(resp.IV)
|
|
2217
|
+
ctBytes = Base64Decode(resp.EncryptedData)
|
|
2218
|
+
sigBytes = Base64Decode(resp.EncryptionSignature)
|
|
2219
|
+
# 2. 重新计算 HMAC
|
|
2220
|
+
expected = HMAC(HMACKey, concat(ivBytes, ctBytes))
|
|
2221
|
+
# 3. 恒定时间比较,失败立即终止(不得继续解密)
|
|
2222
|
+
if not ConstantTimeEqual(expected, sigBytes):
|
|
2223
|
+
raise SignatureMismatch
|
|
2224
|
+
# 4. 对称解密,去除 PKCS#7 Padding
|
|
2225
|
+
plaintext = SymmetricDecrypt(ALGO, AESKey, ivBytes, ctBytes)
|
|
2226
|
+
# 5. 先按腾讯云错误体解析,判断业务是否失败
|
|
2227
|
+
bizErr = TryParseTencentCloudError(plaintext)
|
|
2228
|
+
if bizErr != nil:
|
|
2229
|
+
raise BusinessError(bizErr)
|
|
2230
|
+
# 6. 按目标业务接口的响应结构反序列化
|
|
2231
|
+
return JSON.parse(plaintext, BizResponseSchema)
|
|
2232
|
+
```
|
|
2233
|
+
|
|
2234
|
+
**AES-CBC 示例**
|
|
2235
|
+
|
|
2236
|
+
以下示例参数及结果可用于验证 AES-CBC 加密和 HMAC-SHA256 签名算法的实现是否正确。
|
|
2237
|
+
|
|
2238
|
+
加密密钥:AES-CBC-Key-1234
|
|
2239
|
+
签名密钥:AES-HMAC-Key-123
|
|
2240
|
+
IV:1234567890abcdef
|
|
2241
|
+
请求内容:{"Request": "This is a test."}
|
|
2242
|
+
|
|
2243
|
+
最终请求参数:
|
|
2244
|
+
```
|
|
2245
|
+
{
|
|
2246
|
+
"RequestAction": "ChannelDescribeFlowComponents",
|
|
2247
|
+
"ApplicationId: "yD******************************,
|
|
2248
|
+
"IV": "MTIzNDU2Nzg5MGFiY2RlZg==",
|
|
2249
|
+
"EncryptedData": "Iqp2W1jislwMNmE7bH9dKZZiMQsfkAPyvAAqDFRnWLw=",
|
|
2250
|
+
"EncryptionSignature": "4TT3PUCZgZT7YmEPtXDm5PDcM6xT7FoYHfMW8xunB5I="
|
|
2251
|
+
}
|
|
2252
|
+
```
|
|
2253
|
+
|
|
2254
|
+
**SM4-CBC 示例**
|
|
2255
|
+
|
|
2256
|
+
以下示例参数及结果可用于验证 SM4-CBC 加密和 HMAC-SM4 签名算法的实现是否正确。
|
|
2257
|
+
|
|
2258
|
+
加密密钥:SM4-CBC-Key-1234
|
|
2259
|
+
签名密钥:SM4-HMAC-Key-123
|
|
2260
|
+
IV:fedcba0987654321
|
|
2261
|
+
请求内容:{"Request": "This is a test."}
|
|
2262
|
+
|
|
2263
|
+
最终请求参数:
|
|
2264
|
+
```
|
|
2265
|
+
{
|
|
2266
|
+
"RequestAction": "ChannelDescribeFlowComponents",
|
|
2267
|
+
"ApplicationId: "yD******************************,
|
|
2268
|
+
"IV": "ZmVkY2JhMDk4NzY1NDMyMQ==",
|
|
2269
|
+
"EncryptedData": "GwUovQhNUPaUnVM/UDXMtPOYTpTSi2B1oyZDFbyyvns=",
|
|
2270
|
+
"EncryptionSignature": "nHB/v/AvOaDCQ66esFNnp12lHKcGkwaLGid0Warl/KE="
|
|
2271
|
+
}
|
|
2272
|
+
```
|
|
2273
|
+
"""
|
|
2274
|
+
|
|
2275
|
+
kwargs = {}
|
|
2276
|
+
kwargs["action"] = "CreateRequestWithEncryption"
|
|
2277
|
+
kwargs["params"] = request._serialize()
|
|
2278
|
+
kwargs["resp_cls"] = models.CreateRequestWithEncryptionResponse
|
|
2279
|
+
kwargs["headers"] = request.headers
|
|
2280
|
+
kwargs["opts"] = opts or {}
|
|
2281
|
+
|
|
2282
|
+
return await self.call_and_deserialize(**kwargs)
|
|
2283
|
+
|
|
2164
2284
|
async def CreateSealByImage(
|
|
2165
2285
|
self,
|
|
2166
2286
|
request: models.CreateSealByImageRequest,
|
|
@@ -430,6 +430,8 @@ class ApproverOption(AbstractModel):
|
|
|
430
430
|
:type ForbidAddSignDate: bool
|
|
431
431
|
:param _ApproverMobileMode: <p>签署人手机号传参模式</p><p>枚举值:</p><ul><li>REPLACE: 接受已有认证手机号并替换</li><li>GIVEN: 以客户入参输入手机号为主</li><li>VALIDATE: 若与认证手机号不一致则报错</li><li>"": 不走手机号传参模式</li></ul><p>默认值:""</p><p>会触发手机号传参模式的前提是:签署人是指定了具体身份信息的</p><ul><li>渠道方签署人不会触发</li><li>非渠道方签署人在指定签署人姓名,证件号的情况下会触发</li></ul>
|
|
432
432
|
:type ApproverMobileMode: str
|
|
433
|
+
:param _AddSignComponentUseSealSize: <p>【仅 SignBeanTag=1 时有效】 签署方自行添加签署印章类控件(SIGN_SEAL、SIGN_PAGING_SEAL、SIGN_LEGAL_PERSON_SEAL)时,「盖章区适配签署方印章尺寸」开关的控制策略</p><p>枚举值:</p><ul><li>0: 默认关闭,可开启。与现网一致</li><li>1: 关闭且置灰——按控件默认的4.2cm尺寸盖章,签署方无法开启开关</li><li>2: 默认开启且可修改——默认按印章实际尺寸盖章,签署方可手动关闭</li><li>3: 开启且置灰——强制按印章实际尺寸盖章,签署方不可修改</li></ul>
|
|
434
|
+
:type AddSignComponentUseSealSize: int
|
|
433
435
|
"""
|
|
434
436
|
self._NoRefuse = None
|
|
435
437
|
self._NoTransfer = None
|
|
@@ -438,6 +440,7 @@ class ApproverOption(AbstractModel):
|
|
|
438
440
|
self._FlowReadLimit = None
|
|
439
441
|
self._ForbidAddSignDate = None
|
|
440
442
|
self._ApproverMobileMode = None
|
|
443
|
+
self._AddSignComponentUseSealSize = None
|
|
441
444
|
|
|
442
445
|
@property
|
|
443
446
|
def NoRefuse(self):
|
|
@@ -516,6 +519,17 @@ class ApproverOption(AbstractModel):
|
|
|
516
519
|
def ApproverMobileMode(self, ApproverMobileMode):
|
|
517
520
|
self._ApproverMobileMode = ApproverMobileMode
|
|
518
521
|
|
|
522
|
+
@property
|
|
523
|
+
def AddSignComponentUseSealSize(self):
|
|
524
|
+
r"""<p>【仅 SignBeanTag=1 时有效】 签署方自行添加签署印章类控件(SIGN_SEAL、SIGN_PAGING_SEAL、SIGN_LEGAL_PERSON_SEAL)时,「盖章区适配签署方印章尺寸」开关的控制策略</p><p>枚举值:</p><ul><li>0: 默认关闭,可开启。与现网一致</li><li>1: 关闭且置灰——按控件默认的4.2cm尺寸盖章,签署方无法开启开关</li><li>2: 默认开启且可修改——默认按印章实际尺寸盖章,签署方可手动关闭</li><li>3: 开启且置灰——强制按印章实际尺寸盖章,签署方不可修改</li></ul>
|
|
525
|
+
:rtype: int
|
|
526
|
+
"""
|
|
527
|
+
return self._AddSignComponentUseSealSize
|
|
528
|
+
|
|
529
|
+
@AddSignComponentUseSealSize.setter
|
|
530
|
+
def AddSignComponentUseSealSize(self, AddSignComponentUseSealSize):
|
|
531
|
+
self._AddSignComponentUseSealSize = AddSignComponentUseSealSize
|
|
532
|
+
|
|
519
533
|
|
|
520
534
|
def _deserialize(self, params):
|
|
521
535
|
self._NoRefuse = params.get("NoRefuse")
|
|
@@ -525,6 +539,7 @@ class ApproverOption(AbstractModel):
|
|
|
525
539
|
self._FlowReadLimit = params.get("FlowReadLimit")
|
|
526
540
|
self._ForbidAddSignDate = params.get("ForbidAddSignDate")
|
|
527
541
|
self._ApproverMobileMode = params.get("ApproverMobileMode")
|
|
542
|
+
self._AddSignComponentUseSealSize = params.get("AddSignComponentUseSealSize")
|
|
528
543
|
memeber_set = set(params.keys())
|
|
529
544
|
for name, value in vars(self).items():
|
|
530
545
|
property_name = name[1:]
|
|
@@ -967,49 +982,21 @@ class AutoSignConfig(AbstractModel):
|
|
|
967
982
|
|
|
968
983
|
def __init__(self):
|
|
969
984
|
r"""
|
|
970
|
-
:param _UserInfo:
|
|
985
|
+
:param _UserInfo: <p>自动签开通个人用户信息, 包括名字,身份证等</p>
|
|
971
986
|
:type UserInfo: :class:`tencentcloud.essbasic.v20210526.models.UserThreeFactor`
|
|
972
|
-
:param _CertInfoCallback:
|
|
973
|
-
<ul><li>**false**: 不需要(默认)</li>
|
|
974
|
-
<li>**true**:需要</li></ul>
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
注:`该字段已经失效,请勿设置此参数。`
|
|
987
|
+
:param _CertInfoCallback: <p>是否回调证书信息:</p><ul><li>**false**: 不需要(默认)</li><li>**true**:需要</li></ul><p>注:<code>该字段已经失效,请勿设置此参数。</code></p>
|
|
978
988
|
:type CertInfoCallback: bool
|
|
979
|
-
:param _UserDefineSeal:
|
|
980
|
-
<ul><li>**false**: 不能自己定义(默认)</li>
|
|
981
|
-
<li>**true**: 可以自己定义</li></ul>
|
|
989
|
+
:param _UserDefineSeal: <p>是否支持用户自定义签名印章:</p><ul><li>**false**: 不能自己定义(默认)</li><li>**true**: 可以自己定义</li></ul>
|
|
982
990
|
:type UserDefineSeal: bool
|
|
983
|
-
:param _SealImgCallback:
|
|
984
|
-
<ul><li>**false**: 不需要(默认)</li>
|
|
985
|
-
<li>**true**: 需要</li></ul>
|
|
991
|
+
:param _SealImgCallback: <p>回调中是否需要自动签将要使用的印章(签名)图片的 base64:</p><ul><li>**false**: 不需要(默认)</li><li>**true**: 需要</li></ul>
|
|
986
992
|
:type SealImgCallback: bool
|
|
987
|
-
:param _CallbackUrl:
|
|
993
|
+
:param _CallbackUrl: <p>该字段已废弃,请使用【应用号配置】中的回调地址统一接口消息</p>
|
|
988
994
|
:type CallbackUrl: str
|
|
989
|
-
:param _VerifyChannels:
|
|
990
|
-
<ul><li>**WEIXINAPP** : 微信人脸识别</li>
|
|
991
|
-
<li>**INSIGHT** : 慧眼人脸识别</li>
|
|
992
|
-
<li>**TELECOM** : 运营商三要素验证</li></ul>
|
|
993
|
-
注:
|
|
994
|
-
<ul><li>如果是小程序开通链接,仅支持传 WEIXINAPP。为空默认 WEIXINAPP</li>
|
|
995
|
-
<li>如果是 H5 开通链接,支持传 INSIGHT / TELECOM。为空默认 INSIGHT </li></ul>
|
|
995
|
+
:param _VerifyChannels: <p>开通时候的身份验证方式, 取值为:</p><ul><li>**WEIXINAPP** : 微信人脸识别</li><li>**INSIGHT** : 慧眼人脸识别</li><li>**TELECOM** : 运营商三要素验证</li></ul>注:<ul><li>如果是小程序开通链接,仅支持传 WEIXINAPP。为空默认 WEIXINAPP</li><li>如果是 H5 开通链接,支持传 INSIGHT / TELECOM。为空默认 INSIGHT </li></ul>
|
|
996
996
|
:type VerifyChannels: list of str
|
|
997
|
-
:param _LicenseType:
|
|
998
|
-
|
|
999
|
-
<ul><li><b>1</b>: (默认)不绑定自动签账号许可开通,开通后一直有效, 后续使用合同份额进行合同发起</li></ul>
|
|
1000
|
-
|
|
1001
|
-
注:`该字段已经失效,请勿设置此参数。`
|
|
997
|
+
:param _LicenseType: <p>设置用户开通自动签时是否绑定个人自动签账号许可。</p><ul><li><b>1</b>: (默认)不绑定自动签账号许可开通,开通后一直有效, 后续使用合同份额进行合同发起</li></ul><p>注:<code>该字段已经失效,请勿设置此参数。</code></p>
|
|
1002
998
|
:type LicenseType: int
|
|
1003
|
-
:param _JumpUrl:
|
|
1004
|
-
|
|
1005
|
-
注:`仅支持H5开通场景`, `跳转链接仅支持 https:// , qianapp:// 开头`
|
|
1006
|
-
|
|
1007
|
-
跳转场景:
|
|
1008
|
-
<ul><li>**贵方H5 -> 腾讯电子签H5 -> 贵方H5** : JumpUrl格式: https://YOUR_CUSTOM_URL/xxxx,只需满足 https:// 开头的正确且合规的网址即可。</li>
|
|
1009
|
-
<li>**贵方原生App -> 腾讯电子签H5 -> 贵方原生App** : JumpUrl格式: qianapp://YOUR_CUSTOM_URL,只需满足 qianapp:// 开头的URL即可。`APP实现方,需要拦截Webview地址跳转,发现url是qianapp:// 开头时跳转到原生页面。`APP拦截地址跳转可参考:<a href='https://stackoverflow.com/questions/41693263/android-webview-err-unknown-url-scheme'>Android</a>,<a href='https://razorpay.com/docs/payments/payment-gateway/web-integration/standard/webview/upi-intent-ios/'>IOS</a> </li></ul>
|
|
1010
|
-
|
|
1011
|
-
成功结果返回:
|
|
1012
|
-
若贵方需要在跳转回时通过链接query参数提示开通成功,JumpUrl中的query应携带如下参数:`appendResult=qian`。这样腾讯电子签H5会在跳转回的url后面会添加query参数提示贵方签署成功,例如:qianapp://YOUR_CUSTOM_URL?action=sign&result=success&from=tencent_ess
|
|
999
|
+
:param _JumpUrl: <p>开通成功后前端页面跳转的url,此字段的用法场景请联系客户经理确认。</p><p>注:<code>仅支持H5开通场景</code>, <code>跳转链接仅支持 https:// , qianapp:// 开头</code></p><p>跳转场景:</p><ul><li>**贵方H5 -> 腾讯电子签H5 -> 贵方H5** : JumpUrl格式: https://YOUR_CUSTOM_URL/xxxx,只需满足 https:// 开头的正确且合规的网址即可。</li><li>**贵方原生App -> 腾讯电子签H5 -> 贵方原生App** : JumpUrl格式: qianapp://YOUR_CUSTOM_URL,只需满足 qianapp:// 开头的URL即可。<code>APP实现方,需要拦截Webview地址跳转,发现url是qianapp:// 开头时跳转到原生页面。</code>APP拦截地址跳转可参考:<a href="https://qian.tencent.com/developers/company/openqianh5/#3-%E8%BF%94%E5%9B%9E%E5%BA%94%E7%94%A8jumpurl%E6%A0%BC%E5%BC%8F">返回应用JumpUrl格式</a> </li></ul><p>成功结果返回:<br>若贵方需要在跳转回时通过链接query参数提示开通成功,JumpUrl中的query应携带如下参数:<code>appendResult=qian</code>。这样腾讯电子签H5会在跳转回的url后面会添加query参数提示贵方签署成功,例如:qianapp://YOUR_CUSTOM_URL?action=sign&result=success&from=tencent_ess</p>
|
|
1013
1000
|
:type JumpUrl: str
|
|
1014
1001
|
"""
|
|
1015
1002
|
self._UserInfo = None
|
|
@@ -1023,7 +1010,7 @@ class AutoSignConfig(AbstractModel):
|
|
|
1023
1010
|
|
|
1024
1011
|
@property
|
|
1025
1012
|
def UserInfo(self):
|
|
1026
|
-
r"""
|
|
1013
|
+
r"""<p>自动签开通个人用户信息, 包括名字,身份证等</p>
|
|
1027
1014
|
:rtype: :class:`tencentcloud.essbasic.v20210526.models.UserThreeFactor`
|
|
1028
1015
|
"""
|
|
1029
1016
|
return self._UserInfo
|
|
@@ -1034,12 +1021,7 @@ class AutoSignConfig(AbstractModel):
|
|
|
1034
1021
|
|
|
1035
1022
|
@property
|
|
1036
1023
|
def CertInfoCallback(self):
|
|
1037
|
-
r"""
|
|
1038
|
-
<ul><li>**false**: 不需要(默认)</li>
|
|
1039
|
-
<li>**true**:需要</li></ul>
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
注:`该字段已经失效,请勿设置此参数。`
|
|
1024
|
+
r"""<p>是否回调证书信息:</p><ul><li>**false**: 不需要(默认)</li><li>**true**:需要</li></ul><p>注:<code>该字段已经失效,请勿设置此参数。</code></p>
|
|
1043
1025
|
:rtype: bool
|
|
1044
1026
|
"""
|
|
1045
1027
|
return self._CertInfoCallback
|
|
@@ -1050,9 +1032,7 @@ class AutoSignConfig(AbstractModel):
|
|
|
1050
1032
|
|
|
1051
1033
|
@property
|
|
1052
1034
|
def UserDefineSeal(self):
|
|
1053
|
-
r"""
|
|
1054
|
-
<ul><li>**false**: 不能自己定义(默认)</li>
|
|
1055
|
-
<li>**true**: 可以自己定义</li></ul>
|
|
1035
|
+
r"""<p>是否支持用户自定义签名印章:</p><ul><li>**false**: 不能自己定义(默认)</li><li>**true**: 可以自己定义</li></ul>
|
|
1056
1036
|
:rtype: bool
|
|
1057
1037
|
"""
|
|
1058
1038
|
return self._UserDefineSeal
|
|
@@ -1063,9 +1043,7 @@ class AutoSignConfig(AbstractModel):
|
|
|
1063
1043
|
|
|
1064
1044
|
@property
|
|
1065
1045
|
def SealImgCallback(self):
|
|
1066
|
-
r"""
|
|
1067
|
-
<ul><li>**false**: 不需要(默认)</li>
|
|
1068
|
-
<li>**true**: 需要</li></ul>
|
|
1046
|
+
r"""<p>回调中是否需要自动签将要使用的印章(签名)图片的 base64:</p><ul><li>**false**: 不需要(默认)</li><li>**true**: 需要</li></ul>
|
|
1069
1047
|
:rtype: bool
|
|
1070
1048
|
"""
|
|
1071
1049
|
return self._SealImgCallback
|
|
@@ -1078,7 +1056,7 @@ class AutoSignConfig(AbstractModel):
|
|
|
1078
1056
|
def CallbackUrl(self):
|
|
1079
1057
|
warnings.warn("parameter `CallbackUrl` is deprecated", DeprecationWarning)
|
|
1080
1058
|
|
|
1081
|
-
r"""
|
|
1059
|
+
r"""<p>该字段已废弃,请使用【应用号配置】中的回调地址统一接口消息</p>
|
|
1082
1060
|
:rtype: str
|
|
1083
1061
|
"""
|
|
1084
1062
|
return self._CallbackUrl
|
|
@@ -1091,13 +1069,7 @@ class AutoSignConfig(AbstractModel):
|
|
|
1091
1069
|
|
|
1092
1070
|
@property
|
|
1093
1071
|
def VerifyChannels(self):
|
|
1094
|
-
r"""
|
|
1095
|
-
<ul><li>**WEIXINAPP** : 微信人脸识别</li>
|
|
1096
|
-
<li>**INSIGHT** : 慧眼人脸识别</li>
|
|
1097
|
-
<li>**TELECOM** : 运营商三要素验证</li></ul>
|
|
1098
|
-
注:
|
|
1099
|
-
<ul><li>如果是小程序开通链接,仅支持传 WEIXINAPP。为空默认 WEIXINAPP</li>
|
|
1100
|
-
<li>如果是 H5 开通链接,支持传 INSIGHT / TELECOM。为空默认 INSIGHT </li></ul>
|
|
1072
|
+
r"""<p>开通时候的身份验证方式, 取值为:</p><ul><li>**WEIXINAPP** : 微信人脸识别</li><li>**INSIGHT** : 慧眼人脸识别</li><li>**TELECOM** : 运营商三要素验证</li></ul>注:<ul><li>如果是小程序开通链接,仅支持传 WEIXINAPP。为空默认 WEIXINAPP</li><li>如果是 H5 开通链接,支持传 INSIGHT / TELECOM。为空默认 INSIGHT </li></ul>
|
|
1101
1073
|
:rtype: list of str
|
|
1102
1074
|
"""
|
|
1103
1075
|
return self._VerifyChannels
|
|
@@ -1108,11 +1080,7 @@ class AutoSignConfig(AbstractModel):
|
|
|
1108
1080
|
|
|
1109
1081
|
@property
|
|
1110
1082
|
def LicenseType(self):
|
|
1111
|
-
r"""
|
|
1112
|
-
|
|
1113
|
-
<ul><li><b>1</b>: (默认)不绑定自动签账号许可开通,开通后一直有效, 后续使用合同份额进行合同发起</li></ul>
|
|
1114
|
-
|
|
1115
|
-
注:`该字段已经失效,请勿设置此参数。`
|
|
1083
|
+
r"""<p>设置用户开通自动签时是否绑定个人自动签账号许可。</p><ul><li><b>1</b>: (默认)不绑定自动签账号许可开通,开通后一直有效, 后续使用合同份额进行合同发起</li></ul><p>注:<code>该字段已经失效,请勿设置此参数。</code></p>
|
|
1116
1084
|
:rtype: int
|
|
1117
1085
|
"""
|
|
1118
1086
|
return self._LicenseType
|
|
@@ -1123,16 +1091,7 @@ class AutoSignConfig(AbstractModel):
|
|
|
1123
1091
|
|
|
1124
1092
|
@property
|
|
1125
1093
|
def JumpUrl(self):
|
|
1126
|
-
r"""
|
|
1127
|
-
|
|
1128
|
-
注:`仅支持H5开通场景`, `跳转链接仅支持 https:// , qianapp:// 开头`
|
|
1129
|
-
|
|
1130
|
-
跳转场景:
|
|
1131
|
-
<ul><li>**贵方H5 -> 腾讯电子签H5 -> 贵方H5** : JumpUrl格式: https://YOUR_CUSTOM_URL/xxxx,只需满足 https:// 开头的正确且合规的网址即可。</li>
|
|
1132
|
-
<li>**贵方原生App -> 腾讯电子签H5 -> 贵方原生App** : JumpUrl格式: qianapp://YOUR_CUSTOM_URL,只需满足 qianapp:// 开头的URL即可。`APP实现方,需要拦截Webview地址跳转,发现url是qianapp:// 开头时跳转到原生页面。`APP拦截地址跳转可参考:<a href='https://stackoverflow.com/questions/41693263/android-webview-err-unknown-url-scheme'>Android</a>,<a href='https://razorpay.com/docs/payments/payment-gateway/web-integration/standard/webview/upi-intent-ios/'>IOS</a> </li></ul>
|
|
1133
|
-
|
|
1134
|
-
成功结果返回:
|
|
1135
|
-
若贵方需要在跳转回时通过链接query参数提示开通成功,JumpUrl中的query应携带如下参数:`appendResult=qian`。这样腾讯电子签H5会在跳转回的url后面会添加query参数提示贵方签署成功,例如:qianapp://YOUR_CUSTOM_URL?action=sign&result=success&from=tencent_ess
|
|
1094
|
+
r"""<p>开通成功后前端页面跳转的url,此字段的用法场景请联系客户经理确认。</p><p>注:<code>仅支持H5开通场景</code>, <code>跳转链接仅支持 https:// , qianapp:// 开头</code></p><p>跳转场景:</p><ul><li>**贵方H5 -> 腾讯电子签H5 -> 贵方H5** : JumpUrl格式: https://YOUR_CUSTOM_URL/xxxx,只需满足 https:// 开头的正确且合规的网址即可。</li><li>**贵方原生App -> 腾讯电子签H5 -> 贵方原生App** : JumpUrl格式: qianapp://YOUR_CUSTOM_URL,只需满足 qianapp:// 开头的URL即可。<code>APP实现方,需要拦截Webview地址跳转,发现url是qianapp:// 开头时跳转到原生页面。</code>APP拦截地址跳转可参考:<a href="https://qian.tencent.com/developers/company/openqianh5/#3-%E8%BF%94%E5%9B%9E%E5%BA%94%E7%94%A8jumpurl%E6%A0%BC%E5%BC%8F">返回应用JumpUrl格式</a> </li></ul><p>成功结果返回:<br>若贵方需要在跳转回时通过链接query参数提示开通成功,JumpUrl中的query应携带如下参数:<code>appendResult=qian</code>。这样腾讯电子签H5会在跳转回的url后面会添加query参数提示贵方签署成功,例如:qianapp://YOUR_CUSTOM_URL?action=sign&result=success&from=tencent_ess</p>
|
|
1136
1095
|
:rtype: str
|
|
1137
1096
|
"""
|
|
1138
1097
|
return self._JumpUrl
|
|
@@ -5723,7 +5682,7 @@ class ChannelCreateFlowSignUrlRequest(AbstractModel):
|
|
|
5723
5682
|
:type Agent: :class:`tencentcloud.essbasic.v20210526.models.Agent`
|
|
5724
5683
|
:param _FlowId: <p>合同流程ID,为32位字符串。<br>建议开发者妥善保存此流程ID,以便于顺利进行后续操作。<br>可登录腾讯电子签控制台,在 "合同"->"合同中心" 中查看某个合同的FlowId(在页面中展示为合同ID)。</p>
|
|
5725
5684
|
:type FlowId: str
|
|
5726
|
-
:param _FlowApproverInfos: <p>流程签署人列表,其中结构体的ApproverType必传。<br>若为个人签署方或saas企业签署方,则Name,Mobile必传。OrganizationName 传对应企业名称。<br>若为子客企业签署方则需传OpenId、OrganizationOpenId、OrganizationName, 其他可不传。(如果对应OrganizationOpenId 子客已经认证激活了,则可以省去OrganizationName)</p><p>此结构体和发起接口参与方结构体复用,除了上述参数外,可传递的参数有:</p><ol><li>RecipientId: 发起合同会返回,可以直接用于指定需要生成链接的签署方。</li><li>ApproverSignTypes: 指定签署方签署时候的认证方式,仅此链接生效。</li><li>SignTypeSelector: 可以指定签署方签署合同的认证校验方式的选择模式。</li><li>Intention: 指定H5签署视频核身的意图配置,仅视频签署需要使用。</li></ol><p
|
|
5685
|
+
:param _FlowApproverInfos: <p>流程签署人列表,其中结构体的ApproverType必传。<br>若为个人签署方或saas企业签署方,则Name,Mobile必传。OrganizationName 传对应企业名称。<br>若为子客企业签署方则需传OpenId、OrganizationOpenId、OrganizationName, 其他可不传。(如果对应OrganizationOpenId 子客已经认证激活了,则可以省去OrganizationName)</p><p>此结构体和发起接口参与方结构体复用,除了上述参数外,可传递的参数有:</p><ol><li>RecipientId: 发起合同会返回,可以直接用于指定需要生成链接的签署方。</li><li>ApproverSignTypes: 指定签署方签署时候的认证方式,仅此链接生效。</li><li>SignTypeSelector: 可以指定签署方签署合同的认证校验方式的选择模式。</li><li>Intention: 指定H5签署视频核身的意图配置,仅视频签署需要使用。</li></ol><p>注:</p><ol><li>签署人<b>只能使用签名类型、时间类型、印章类型、签批类型的签署控件和内容填写控件</b>,其他类型的签署控件暂时不支持。</li><li>对于签名控件类型,支持手写签名、系统签名、个人印章等类型的签名方式,取决于合同发起时的设定。另外,签署的时候不支持拉取个人签署方已有签名图片资产,且创建的签名图片为一次性使用,不会保存为签署方个人资产。</li><li>生成发起方预览链接时,该字段(FlowApproverInfos)可以传空或者不传。</li></ol>
|
|
5727
5686
|
:type FlowApproverInfos: list of FlowApproverInfo
|
|
5728
5687
|
:param _VideoVerifyTimesLimit: <p>用于指定进入视频签署的限制次数,次数取值范围:1 - 10,不设置则默认为5次,仅视频签署时生效。</p>
|
|
5729
5688
|
:type VideoVerifyTimesLimit: int
|
|
@@ -5772,7 +5731,7 @@ class ChannelCreateFlowSignUrlRequest(AbstractModel):
|
|
|
5772
5731
|
|
|
5773
5732
|
@property
|
|
5774
5733
|
def FlowApproverInfos(self):
|
|
5775
|
-
r"""<p>流程签署人列表,其中结构体的ApproverType必传。<br>若为个人签署方或saas企业签署方,则Name,Mobile必传。OrganizationName 传对应企业名称。<br>若为子客企业签署方则需传OpenId、OrganizationOpenId、OrganizationName, 其他可不传。(如果对应OrganizationOpenId 子客已经认证激活了,则可以省去OrganizationName)</p><p>此结构体和发起接口参与方结构体复用,除了上述参数外,可传递的参数有:</p><ol><li>RecipientId: 发起合同会返回,可以直接用于指定需要生成链接的签署方。</li><li>ApproverSignTypes: 指定签署方签署时候的认证方式,仅此链接生效。</li><li>SignTypeSelector: 可以指定签署方签署合同的认证校验方式的选择模式。</li><li>Intention: 指定H5签署视频核身的意图配置,仅视频签署需要使用。</li></ol><p
|
|
5734
|
+
r"""<p>流程签署人列表,其中结构体的ApproverType必传。<br>若为个人签署方或saas企业签署方,则Name,Mobile必传。OrganizationName 传对应企业名称。<br>若为子客企业签署方则需传OpenId、OrganizationOpenId、OrganizationName, 其他可不传。(如果对应OrganizationOpenId 子客已经认证激活了,则可以省去OrganizationName)</p><p>此结构体和发起接口参与方结构体复用,除了上述参数外,可传递的参数有:</p><ol><li>RecipientId: 发起合同会返回,可以直接用于指定需要生成链接的签署方。</li><li>ApproverSignTypes: 指定签署方签署时候的认证方式,仅此链接生效。</li><li>SignTypeSelector: 可以指定签署方签署合同的认证校验方式的选择模式。</li><li>Intention: 指定H5签署视频核身的意图配置,仅视频签署需要使用。</li></ol><p>注:</p><ol><li>签署人<b>只能使用签名类型、时间类型、印章类型、签批类型的签署控件和内容填写控件</b>,其他类型的签署控件暂时不支持。</li><li>对于签名控件类型,支持手写签名、系统签名、个人印章等类型的签名方式,取决于合同发起时的设定。另外,签署的时候不支持拉取个人签署方已有签名图片资产,且创建的签名图片为一次性使用,不会保存为签署方个人资产。</li><li>生成发起方预览链接时,该字段(FlowApproverInfos)可以传空或者不传。</li></ol>
|
|
5776
5735
|
:rtype: list of FlowApproverInfo
|
|
5777
5736
|
"""
|
|
5778
5737
|
return self._FlowApproverInfos
|
|
@@ -17355,6 +17314,175 @@ class CreatePersonAuthCertificateImageResponse(AbstractModel):
|
|
|
17355
17314
|
self._RequestId = params.get("RequestId")
|
|
17356
17315
|
|
|
17357
17316
|
|
|
17317
|
+
class CreateRequestWithEncryptionRequest(AbstractModel):
|
|
17318
|
+
r"""CreateRequestWithEncryption请求参数结构体
|
|
17319
|
+
|
|
17320
|
+
"""
|
|
17321
|
+
|
|
17322
|
+
def __init__(self):
|
|
17323
|
+
r"""
|
|
17324
|
+
:param _RequestAction: <p>操作的接口名称。取值参考接口文档输入参数章节关于公共参数 Action 的说明。</p>
|
|
17325
|
+
:type RequestAction: str
|
|
17326
|
+
:param _ApplicationId: <p>第三方应用的唯一标识,对应通用参数 Agent.AppId。</p>
|
|
17327
|
+
:type ApplicationId: str
|
|
17328
|
+
:param _IV: <p>加密算法使用的初始化向量。固定为 16 字节,将 IV 原始字节使用标准 Base64 编码后传入。</p>
|
|
17329
|
+
:type IV: str
|
|
17330
|
+
:param _EncryptedData: <p>使用 AES-CBC 或 SM4-CBC 加密请求内容得到的密文。加密前请求内容采用 PKCS#7 Padding;将密文原始字节使用标准 Base64 编码后传入。</p>
|
|
17331
|
+
:type EncryptedData: str
|
|
17332
|
+
:param _EncryptionSignature: <p>用于校验请求数据完整性。对 IV 原始字节和密文原始字节直接拼接(不加拼接符)后计算 HMAC-SHA256,再将计算结果使用标准 Base64 编码后传入。</p>
|
|
17333
|
+
:type EncryptionSignature: str
|
|
17334
|
+
"""
|
|
17335
|
+
self._RequestAction = None
|
|
17336
|
+
self._ApplicationId = None
|
|
17337
|
+
self._IV = None
|
|
17338
|
+
self._EncryptedData = None
|
|
17339
|
+
self._EncryptionSignature = None
|
|
17340
|
+
|
|
17341
|
+
@property
|
|
17342
|
+
def RequestAction(self):
|
|
17343
|
+
r"""<p>操作的接口名称。取值参考接口文档输入参数章节关于公共参数 Action 的说明。</p>
|
|
17344
|
+
:rtype: str
|
|
17345
|
+
"""
|
|
17346
|
+
return self._RequestAction
|
|
17347
|
+
|
|
17348
|
+
@RequestAction.setter
|
|
17349
|
+
def RequestAction(self, RequestAction):
|
|
17350
|
+
self._RequestAction = RequestAction
|
|
17351
|
+
|
|
17352
|
+
@property
|
|
17353
|
+
def ApplicationId(self):
|
|
17354
|
+
r"""<p>第三方应用的唯一标识,对应通用参数 Agent.AppId。</p>
|
|
17355
|
+
:rtype: str
|
|
17356
|
+
"""
|
|
17357
|
+
return self._ApplicationId
|
|
17358
|
+
|
|
17359
|
+
@ApplicationId.setter
|
|
17360
|
+
def ApplicationId(self, ApplicationId):
|
|
17361
|
+
self._ApplicationId = ApplicationId
|
|
17362
|
+
|
|
17363
|
+
@property
|
|
17364
|
+
def IV(self):
|
|
17365
|
+
r"""<p>加密算法使用的初始化向量。固定为 16 字节,将 IV 原始字节使用标准 Base64 编码后传入。</p>
|
|
17366
|
+
:rtype: str
|
|
17367
|
+
"""
|
|
17368
|
+
return self._IV
|
|
17369
|
+
|
|
17370
|
+
@IV.setter
|
|
17371
|
+
def IV(self, IV):
|
|
17372
|
+
self._IV = IV
|
|
17373
|
+
|
|
17374
|
+
@property
|
|
17375
|
+
def EncryptedData(self):
|
|
17376
|
+
r"""<p>使用 AES-CBC 或 SM4-CBC 加密请求内容得到的密文。加密前请求内容采用 PKCS#7 Padding;将密文原始字节使用标准 Base64 编码后传入。</p>
|
|
17377
|
+
:rtype: str
|
|
17378
|
+
"""
|
|
17379
|
+
return self._EncryptedData
|
|
17380
|
+
|
|
17381
|
+
@EncryptedData.setter
|
|
17382
|
+
def EncryptedData(self, EncryptedData):
|
|
17383
|
+
self._EncryptedData = EncryptedData
|
|
17384
|
+
|
|
17385
|
+
@property
|
|
17386
|
+
def EncryptionSignature(self):
|
|
17387
|
+
r"""<p>用于校验请求数据完整性。对 IV 原始字节和密文原始字节直接拼接(不加拼接符)后计算 HMAC-SHA256,再将计算结果使用标准 Base64 编码后传入。</p>
|
|
17388
|
+
:rtype: str
|
|
17389
|
+
"""
|
|
17390
|
+
return self._EncryptionSignature
|
|
17391
|
+
|
|
17392
|
+
@EncryptionSignature.setter
|
|
17393
|
+
def EncryptionSignature(self, EncryptionSignature):
|
|
17394
|
+
self._EncryptionSignature = EncryptionSignature
|
|
17395
|
+
|
|
17396
|
+
|
|
17397
|
+
def _deserialize(self, params):
|
|
17398
|
+
self._RequestAction = params.get("RequestAction")
|
|
17399
|
+
self._ApplicationId = params.get("ApplicationId")
|
|
17400
|
+
self._IV = params.get("IV")
|
|
17401
|
+
self._EncryptedData = params.get("EncryptedData")
|
|
17402
|
+
self._EncryptionSignature = params.get("EncryptionSignature")
|
|
17403
|
+
memeber_set = set(params.keys())
|
|
17404
|
+
for name, value in vars(self).items():
|
|
17405
|
+
property_name = name[1:]
|
|
17406
|
+
if property_name in memeber_set:
|
|
17407
|
+
memeber_set.remove(property_name)
|
|
17408
|
+
if len(memeber_set) > 0:
|
|
17409
|
+
warnings.warn("%s fileds are useless." % ",".join(memeber_set))
|
|
17410
|
+
|
|
17411
|
+
|
|
17412
|
+
|
|
17413
|
+
class CreateRequestWithEncryptionResponse(AbstractModel):
|
|
17414
|
+
r"""CreateRequestWithEncryption返回参数结构体
|
|
17415
|
+
|
|
17416
|
+
"""
|
|
17417
|
+
|
|
17418
|
+
def __init__(self):
|
|
17419
|
+
r"""
|
|
17420
|
+
:param _IV: <p>加密算法使用的初始化向量。固定为 16 字节,将 IV 原始字节使用标准 Base64 编码后传入。</p>
|
|
17421
|
+
:type IV: str
|
|
17422
|
+
:param _EncryptedData: <p>使用 AES-CBC 或 SM4-CBC 加密返回内容得到的密文。加密前返回内容采用 PKCS#7 Padding;将密文原始字节使用标准 Base64 编码后传入。</p>
|
|
17423
|
+
:type EncryptedData: str
|
|
17424
|
+
:param _EncryptionSignature: <p>用于校验请求数据完整性。对 IV 原始字节和密文原始字节直接拼接(不加拼接符)后计算 HMAC-SHA256,再将计算结果使用标准 Base64 编码后传入。</p>
|
|
17425
|
+
:type EncryptionSignature: str
|
|
17426
|
+
:param _RequestId: 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
|
|
17427
|
+
:type RequestId: str
|
|
17428
|
+
"""
|
|
17429
|
+
self._IV = None
|
|
17430
|
+
self._EncryptedData = None
|
|
17431
|
+
self._EncryptionSignature = None
|
|
17432
|
+
self._RequestId = None
|
|
17433
|
+
|
|
17434
|
+
@property
|
|
17435
|
+
def IV(self):
|
|
17436
|
+
r"""<p>加密算法使用的初始化向量。固定为 16 字节,将 IV 原始字节使用标准 Base64 编码后传入。</p>
|
|
17437
|
+
:rtype: str
|
|
17438
|
+
"""
|
|
17439
|
+
return self._IV
|
|
17440
|
+
|
|
17441
|
+
@IV.setter
|
|
17442
|
+
def IV(self, IV):
|
|
17443
|
+
self._IV = IV
|
|
17444
|
+
|
|
17445
|
+
@property
|
|
17446
|
+
def EncryptedData(self):
|
|
17447
|
+
r"""<p>使用 AES-CBC 或 SM4-CBC 加密返回内容得到的密文。加密前返回内容采用 PKCS#7 Padding;将密文原始字节使用标准 Base64 编码后传入。</p>
|
|
17448
|
+
:rtype: str
|
|
17449
|
+
"""
|
|
17450
|
+
return self._EncryptedData
|
|
17451
|
+
|
|
17452
|
+
@EncryptedData.setter
|
|
17453
|
+
def EncryptedData(self, EncryptedData):
|
|
17454
|
+
self._EncryptedData = EncryptedData
|
|
17455
|
+
|
|
17456
|
+
@property
|
|
17457
|
+
def EncryptionSignature(self):
|
|
17458
|
+
r"""<p>用于校验请求数据完整性。对 IV 原始字节和密文原始字节直接拼接(不加拼接符)后计算 HMAC-SHA256,再将计算结果使用标准 Base64 编码后传入。</p>
|
|
17459
|
+
:rtype: str
|
|
17460
|
+
"""
|
|
17461
|
+
return self._EncryptionSignature
|
|
17462
|
+
|
|
17463
|
+
@EncryptionSignature.setter
|
|
17464
|
+
def EncryptionSignature(self, EncryptionSignature):
|
|
17465
|
+
self._EncryptionSignature = EncryptionSignature
|
|
17466
|
+
|
|
17467
|
+
@property
|
|
17468
|
+
def RequestId(self):
|
|
17469
|
+
r"""唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。
|
|
17470
|
+
:rtype: str
|
|
17471
|
+
"""
|
|
17472
|
+
return self._RequestId
|
|
17473
|
+
|
|
17474
|
+
@RequestId.setter
|
|
17475
|
+
def RequestId(self, RequestId):
|
|
17476
|
+
self._RequestId = RequestId
|
|
17477
|
+
|
|
17478
|
+
|
|
17479
|
+
def _deserialize(self, params):
|
|
17480
|
+
self._IV = params.get("IV")
|
|
17481
|
+
self._EncryptedData = params.get("EncryptedData")
|
|
17482
|
+
self._EncryptionSignature = params.get("EncryptionSignature")
|
|
17483
|
+
self._RequestId = params.get("RequestId")
|
|
17484
|
+
|
|
17485
|
+
|
|
17358
17486
|
class CreateResultPageConfig(AbstractModel):
|
|
17359
17487
|
r"""发起流程的可嵌入页面操作结果页配置
|
|
17360
17488
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: tencentcloud-sdk-python-essbasic
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.169
|
|
4
4
|
Summary: Tencent Cloud Essbasic SDK for Python
|
|
5
5
|
Home-page: https://github.com/TencentCloud/tencentcloud-sdk-python
|
|
6
6
|
Author: Tencent Cloud
|
|
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 2.7
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.6
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.7
|
|
18
|
-
Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.
|
|
18
|
+
Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.169
|
|
19
19
|
|
|
20
20
|
============================
|
|
21
21
|
Tencent Cloud SDK for Python
|
tencentcloud_sdk_python_essbasic-3.1.169/tencentcloud_sdk_python_essbasic.egg-info/requires.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
tencentcloud-sdk-python-common<4.0.0,>=3.1.169
|
tencentcloud_sdk_python_essbasic-3.1.164/tencentcloud_sdk_python_essbasic.egg-info/requires.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
tencentcloud-sdk-python-common<4.0.0,>=3.1.164
|
{tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/README.rst
RENAMED
|
File without changes
|
{tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/setup.cfg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|