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.
Files changed (22) hide show
  1. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/PKG-INFO +2 -2
  2. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/setup.py +1 -1
  3. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/__init__.py +1 -1
  4. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20210526/essbasic_client.py +188 -63
  5. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20210526/essbasic_client_async.py +183 -63
  6. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20210526/models.py +202 -74
  7. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud_sdk_python_essbasic.egg-info/PKG-INFO +2 -2
  8. tencentcloud_sdk_python_essbasic-3.1.169/tencentcloud_sdk_python_essbasic.egg-info/requires.txt +1 -0
  9. tencentcloud_sdk_python_essbasic-3.1.164/tencentcloud_sdk_python_essbasic.egg-info/requires.txt +0 -1
  10. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/README.rst +0 -0
  11. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/setup.cfg +0 -0
  12. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/__init__.py +0 -0
  13. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20201222/__init__.py +0 -0
  14. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20201222/errorcodes.py +0 -0
  15. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20201222/essbasic_client.py +0 -0
  16. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20201222/essbasic_client_async.py +0 -0
  17. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20201222/models.py +0 -0
  18. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20210526/__init__.py +0 -0
  19. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud/essbasic/v20210526/errorcodes.py +0 -0
  20. {tencentcloud_sdk_python_essbasic-3.1.164 → tencentcloud_sdk_python_essbasic-3.1.169}/tencentcloud_sdk_python_essbasic.egg-info/SOURCES.txt +0 -0
  21. {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
  22. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: tencentcloud-sdk-python-essbasic
3
- Version: 3.1.164
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.164
18
+ Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.169
19
19
 
20
20
  ============================
21
21
  Tencent Cloud SDK for Python
@@ -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.164,<4.0.0"],
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',
@@ -14,4 +14,4 @@
14
14
  # limitations under the License.
15
15
 
16
16
 
17
- __version__ = '3.1.164'
17
+ __version__ = '3.1.169'
@@ -506,34 +506,33 @@ class EssbasicClient(AbstractClient):
506
506
 
507
507
 
508
508
  def ChannelCreateFlowByFiles(self, request):
509
- r"""接口(ChannelCreateFlowByFiles)用PDF文件创建签署流程。
509
+ r"""本接口(ChannelCreateFlowByFiles)用于通过**已上传的 PDF 资源编号**创建待签署的合同流程。
510
510
 
511
- 适用场景:适用非制式的合同文件签署,开发者有每个签署流程的PDF,可以通过该接口传入完整的PDF文件及流程信息生成待签署的合同流程。
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
- ![image](https://qcloudimg.tencent-cloud.cn/raw/bf86248a2c163228c4e894cf5926af69/ChannelCreateFlowByFiles.png)
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
+ ![image](https://qcloudimg.tencent-cloud.cn/raw/985b4bf10a40d65fe7b016bb2f82c3df.svg)
524
518
 
525
- **注**:
526
- `1. 发起合同时候, 作为发起方的第三方子企业A员工的企业和员工必须经过实名, 而作为签署方的第三方子企业A员工/个人/自然人/SaaS平台企业员工/第三方子企业B员工企业中的企业和个人/员工可以未实名`
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
- `3. 合同发起后就会扣减合同的额度, 只有撤销没有参与方签署过或只有自动签署签署过的合同,才会返还合同额度。(过期,拒签,签署完成,解除完成等状态不会返还额度)`
523
+ <font color="red">发起方(第三方子企业 A 的企业与员工)必须完成实名</font>;作为 **签署方** 的第三方子企业 A 员工 / 个人自然人 / SaaS 平台企业员工 / 第三方子企业 B 员工等,其企业和个人可以未实名。
531
524
 
532
- `4. 静默(自动)签署不支持合同签署方存在填写功能`
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
- <font color="red">相关视频指引</font> <br>
535
- 1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-UploadFiles.mp4" target="_blank">【上传文件代码】编写示例</a><br>
536
- 1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-ChannelCreateFlowByFiles.mp4" target="_blank">【用PDF文件创建签署流程】编写示例</a><br>
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"""接口(CreateFlowsByTemplates)用于使用模板批量创建签署流程。当前可批量发起合同(签署流程)数量为1-20个。
2288
- 如若在模板中配置了动态表格, 上传的附件必须为A4大小
2289
- 合同发起人必须在电子签已经进行实名。
2286
+ r"""本接口(CreateFlowsByTemplates)用于**使用模板批量创建签署流程**,当前单次可批量发起合同(签署流程)数量为 1~20 个。
2287
+
2290
2288
 
2291
- ### 一. 整体的逻辑如下
2289
+ ### 1.1 整体逻辑如下
2292
2290
 
2293
- ![image](https://qcloudimg.tencent-cloud.cn/raw/e193519d4383fa74782a9e19147ef01a/CreateFlowsByTemplates.png)
2291
+ ![image](https://qcloudimg.tencent-cloud.cn/raw/66f74308ca92590f5d96d9c4fed25563.svg)
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
  ![image](https://qcloudimg.tencent-cloud.cn/raw/37457e0e450fc221effddfcb8b1bad55.png)
2306
2305
  填充的传参示例如下
2307
2306
 
2308
2307
  ```
2309
- request.FormFields = [{
2310
- "ComponentName": "项目的名字",
2311
- "ComponentValue": "休闲山庄"
2312
- }, {
2313
- "ComponentName": "项目的地址",
2314
- "ComponentValue": "凤凰山北侧",
2315
- }, {
2316
- "ComponentName": "范围",
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
  ![image](https://qcloudimg.tencent-cloud.cn/raw/140a2fb771ac66a185d0a000d37485f6.png)
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
- 1. 发起合同时候, 作为<font color="red">发起方的第三方子企业A员工的企业和员工必须经过实名</font>, 而作为签署方的第三方子企业A员工/个人/自然人/SaaS平台企业员工/第三方子企业B员工企业中的企业和个人/员工可以未实名
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
+ ![image](https://qcloudimg.tencent-cloud.cn/raw/391df0a37c2b213445c4909ba98824ac.svg)
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
- 接口(ChannelCreateFlowByFiles)用PDF文件创建签署流程。
443
+ 本接口(ChannelCreateFlowByFiles)用于通过**已上传的 PDF 资源编号**创建待签署的合同流程。
444
444
 
445
- 适用场景:适用非制式的合同文件签署,开发者有每个签署流程的PDF,可以通过该接口传入完整的PDF文件及流程信息生成待签署的合同流程。
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
- ![image](https://qcloudimg.tencent-cloud.cn/raw/bf86248a2c163228c4e894cf5926af69/ChannelCreateFlowByFiles.png)
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
+ ![image](https://qcloudimg.tencent-cloud.cn/raw/985b4bf10a40d65fe7b016bb2f82c3df.svg)
458
452
 
459
- **注**:
460
- `1. 发起合同时候, 作为发起方的第三方子企业A员工的企业和员工必须经过实名, 而作为签署方的第三方子企业A员工/个人/自然人/SaaS平台企业员工/第三方子企业B员工企业中的企业和个人/员工可以未实名`
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
- `3. 合同发起后就会扣减合同的额度, 只有撤销没有参与方签署过或只有自动签署签署过的合同,才会返还合同额度。(过期,拒签,签署完成,解除完成等状态不会返还额度)`
457
+ <font color="red">发起方(第三方子企业 A 的企业与员工)必须完成实名</font>;作为 **签署方** 的第三方子企业 A 员工 / 个人自然人 / SaaS 平台企业员工 / 第三方子企业 B 员工等,其企业和个人可以未实名。
465
458
 
466
- `4. 静默(自动)签署不支持合同签署方存在填写功能`
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
- <font color="red">相关视频指引</font> <br>
469
- 1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-UploadFiles.mp4" target="_blank">【上传文件代码】编写示例</a><br>
470
- 1. <a href="https://dyn.ess.tencent.cn/guide/apivideo/essbasic-ChannelCreateFlowByFiles.mp4" target="_blank">【用PDF文件创建签署流程】编写示例</a><br>
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
- 接口(CreateFlowsByTemplates)用于使用模板批量创建签署流程。当前可批量发起合同(签署流程)数量为1-20个。
1962
- 如若在模板中配置了动态表格, 上传的附件必须为A4大小
1963
- 合同发起人必须在电子签已经进行实名。
1960
+ 本接口(CreateFlowsByTemplates)用于**使用模板批量创建签署流程**,当前单次可批量发起合同(签署流程)数量为 1~20 个。
1964
1961
 
1965
- ### 一. 整体的逻辑如下
1966
1962
 
1967
- ![image](https://qcloudimg.tencent-cloud.cn/raw/e193519d4383fa74782a9e19147ef01a/CreateFlowsByTemplates.png)
1963
+ ### 1.1 整体逻辑如下
1968
1964
 
1969
- ### 二. 可以作为发起方和签署方的角色列表
1965
+ ![image](https://qcloudimg.tencent-cloud.cn/raw/66f74308ca92590f5d96d9c4fed25563.svg)
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
  ![image](https://qcloudimg.tencent-cloud.cn/raw/37457e0e450fc221effddfcb8b1bad55.png)
1980
1979
  填充的传参示例如下
1981
1980
 
1982
1981
  ```
1983
- request.FormFields = [{
1984
- "ComponentName": "项目的名字",
1985
- "ComponentValue": "休闲山庄"
1986
- }, {
1987
- "ComponentName": "项目的地址",
1988
- "ComponentValue": "凤凰山北侧",
1989
- }, {
1990
- "ComponentName": "范围",
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
  ![image](https://qcloudimg.tencent-cloud.cn/raw/140a2fb771ac66a185d0a000d37485f6.png)
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
- 1. 发起合同时候, 作为<font color="red">发起方的第三方子企业A员工的企业和员工必须经过实名</font>, 而作为签署方的第三方子企业A员工/个人/自然人/SaaS平台企业员工/第三方子企业B员工企业中的企业和个人/员工可以未实名
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
+ ![image](https://qcloudimg.tencent-cloud.cn/raw/391df0a37c2b213445c4909ba98824ac.svg)
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>&quot;&quot;: 不走手机号传参模式</li></ul><p>默认值:&quot;&quot;</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: 回调中是否需要自动签将要使用的印章(签名)图片的 base64:
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: 开通成功后前端页面跳转的url,此字段的用法场景请联系客户经理确认。
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 -&gt; 腾讯电子签H5 -&gt; 贵方H5** : JumpUrl格式: https://YOUR_CUSTOM_URL/xxxx,只需满足 https:// 开头的正确且合规的网址即可。</li><li>**贵方原生App -&gt; 腾讯电子签H5 -&gt; 贵方原生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&amp;result=success&amp;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"""回调中是否需要自动签将要使用的印章(签名)图片的 base64:
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"""开通成功后前端页面跳转的url,此字段的用法场景请联系客户经理确认。
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 -&gt; 腾讯电子签H5 -&gt; 贵方H5** : JumpUrl格式: https://YOUR_CUSTOM_URL/xxxx,只需满足 https:// 开头的正确且合规的网址即可。</li><li>**贵方原生App -&gt; 腾讯电子签H5 -&gt; 贵方原生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&amp;result=success&amp;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>可登录腾讯电子签控制台,在 &quot;合同&quot;-&gt;&quot;合同中心&quot; 中查看某个合同的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>注:<br><code>1. 签署人只能有手写签名、时间类型、印章类型、签批类型的签署控件和内容填写控件,其他类型的签署控件暂时未支持。</code><br><code>2. 生成发起方预览链接时,该字段(FlowApproverInfos)传空或者不传</code></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>注:<br><code>1. 签署人只能有手写签名、时间类型、印章类型、签批类型的签署控件和内容填写控件,其他类型的签署控件暂时未支持。</code><br><code>2. 生成发起方预览链接时,该字段(FlowApproverInfos)传空或者不传</code></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.164
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.164
18
+ Requires-Dist: tencentcloud-sdk-python-common<4.0.0,>=3.1.169
19
19
 
20
20
  ============================
21
21
  Tencent Cloud SDK for Python
@@ -0,0 +1 @@
1
+ tencentcloud-sdk-python-common<4.0.0,>=3.1.169
@@ -1 +0,0 @@
1
- tencentcloud-sdk-python-common<4.0.0,>=3.1.164