集团账号
集团帐号介绍
集团帐号的作用是帮助集团总部(主企业)对其下属多家公司(成员子企业)的电子签章业务进行标准化、集中化的管理。 主要功能如下:
- 集中管理:集团主企业可以在一个平台上,统一管理所有成员子企业的如下资源
- 合同:查看、管理整个集团的合同。
- 合同模板:创建公共模板,确保各子公司合同格式规范统一。
- 印章:对子企业的印章进行管理和授权使用。
- 资源池共享:集团主企业可以将自己购买的合同签署份额共享给所有成员子企业使用,无需各子公司单独购买。
本教程的目标是指导搭建出下面的集团帐号

| 企业角色 | 公司名称 | 员工姓名 |
|---|---|---|
| 主企业 | 一马集团 | 刘波 |
| 子企业 | 深圳一马物流有限公司 | 周圣 |
| 子企业 | 深圳一马物流有限公司 | 猪猪侠 |
| 子企业 | 上海一马物流有限公司 | 王伟 |
第一步 注册企业
主企业与子企业需分别自主完成注册认证,具体流程可参考企业认证文档。电子签平台支持三种企业认证方式:
完成企业注册认证的员工将默认被赋予该企业的超级管理员身份,后续可根据需求进行变更,详情请参见变更企业超级管理员。
示例中,刘波完成了一马集团的注册认证,周圣完成了深圳一马物流有限公司的认证,王伟完成了上海一马物流有限公司的认证,整体架构关系如下:

第二步 企业添加员工(非必需步骤)
深圳一马物流有限公司还有一位员工猪猪侠尚未加入企业。为解决此问题,需要企业超级管理员周圣登录控制台,依次点击 更多 -> 企业组织 -> 新增员工 -> 手动添加,进入新增员工页面。
在页面中填写猪猪侠的手机号和姓名,点击 确定 后,猪猪侠将收到邀请加入企业的短信通知。猪猪侠点击短信中的链接,按照指引完成加入企业的申请。

猪猪侠收到的短信通知示例如下:

猪猪侠完成加入认证后,深圳一马物流有限公司将拥有周圣和猪猪侠两位员工。

截至目前,整体架构关系如下图所示:

第三步 主企业创建集团组织
一马集团的超级管理员刘波登录控制台,依次点击 更多 -> 企业组织 -> 集团组织信息 -> 立即创建,进入集团号创建页面。在页面输入集团名称,点击保存,即可完成创建。
创建页面示例如下,我们输入集团组织名称“一马”,然后点击保存:

创建成功后,重新通过 更多 -> 企业组织 -> 集团组织信息 进入该页面,即可查看集团组织的详细信息,如下图所示:

第四步 邀请子企业加入集团组织
在控制台依次进入 更多 -> 企业组织 -> 集团组织信息 页面,点击页面中的 添加成员企业 按钮,进入邀请子企业加入集团组织的界面。
在邀请页面,可根据需要勾选以下选项:
- 允许成员企业从主企业账户扣减套餐份额
- 允许成员企业账号到期后自动续期
完成设置后,点击下方的 生成邀请码 按钮,即可获得子企业加入集团组织的邀请二维码。请将该二维码发送给目标子企业,由子企业的超级管理员扫码授权加入即可。
添加成员企业按钮位置如下:

生成邀请按钮位置如下:

生成的邀请二维码示例如下:

第五步 子企业扫码邀请二维码并完成加入流程
深圳一马物流有限公司的超级管理员周圣和上海一马物流有限公司的超级管理员王伟,分别扫描前一步生成的邀请二维码,发起加入集团组织的申请。以下以周圣的操作流程为例进行演示。
周圣扫码后进入 集团组织加入邀请函 页面,界面显示“一马集团”邀请其加入集团组织,界面示例如下:

周圣点击 立即加入,跳转至 确认授权内容 页面,页面中详细展示了加入集团组织后,主企业将获得的相关权限:

若对授权内容无异议,勾选“我已知悉,确认授权”,并点击“签署授权协议”,系统将生成相应的授权协议。周圣需完成协议的签署,界面示例如下:

签署授权协议后,进入“授权成功,待集团主企业确认”页面,等待集团主企业审批,页面如下所示:

第六步 主企业激活子企业
子企业扫码完成加入流程后,状态会变为“已授权待激活”。此时,主企业超级管理员需要登录控制台,依次进入 更多 -> 企业组织 -> 集团组织信息 页面,对子企业进行激活操作,才算正式完成子企业加入集团组织的流程。
操作步骤如下:在列表中选中对应的子企业,点击“激活成员企业”按钮完成激活。激活时将消耗一个成员企业账号 License。如果当前成员企业账号 License 不足,可以联系对接的客服处理,也可前往费用管理购买成员企业账号。
激活流程示例如下图:

另一家公司上海一马物流有限公司的超级管理员王伟也扫描邀请二维码申请加入后,经主企业激活,当前集团组织已有两个已激活的子企业,界面显示如下:

第七步 授予主企业员工集团组织管理权限
若主企业员工需参与子企业的管理工作(如合同模板、印章管理等),或需以子企业名义发起和签署合同,必须先授予该员工集团组织管理权限。
主企业超级管理员可登录控制台,依次进入 更多 -> 企业组织 -> 集团角色管理 页面,选择相应的集团角色权限后,点击右侧 成员列表 中的 添加成员,将指定主企业员工赋予对应权限。操作示例如下图:

例如,我们给主企业员工王五授予了集团合同管理员的全局权限,赋权后他可以查看集团下所有子企业的合同,并能代表子企业发起和签署合同,界面示例如下:

第八步 管理子企业资源
主企业现在可以统一管理子企业的合同模板、印章等资源。以下以给子企业深圳一马物流有限公司创建一个合同专用章为例进行说明。
主企业超级管理员或拥有集团组织印章管理权限的员工,登录主企业控制台,依次点击 印章 -> 添加企业电子印章。与普通企业不同,主企业会先看到“请选择企业”的界面,如下图所示:

从列表中选择子企业“深圳一马物流有限公司”,点击 确定,进入为该子企业创建电子印章的页面。 在创建页面填写印章相关信息,确认无误后点击 提交审核,示例如下:

创建成功后,可通过依次点击 印章 -> 我持有的印章,选择对应子企业,即可查看刚创建的印章,界面如下:

第九步 配置与共享合同模板
主企业可通过两种方式为子企业提供合同模板:直接在子企业下创建,或将主企业的模板共享给子企业。下面分别说明两种场景的操作流程。
一、在子企业下创建模板
登录主企业控制台(需为超级管理员或拥有集团组织模板管理权限的员工)。
依次点击 模板 -> 创建模板 -> 选择对应的子企业 -> 点击确定,进入子企业的模板创建页面并完成配置。

二、将主企业的模板共享给子企业(推荐复用统一模板)
在主企业创建模板:
登录主企业控制台(需为超级管理员或拥有主企业模板管理权限的员工)。
依次点击 模板 -> 创建模板 -> 选择主企业 -> 点击确定,进入主企业的模板编辑页面并完成模板配置。
示例配置:两个签署方(本方企业 + 自然人),本方使用印章签署控件,自然人使用签名控件;发起方企业含三个填写控件(小狗的品种、售价、名字)。配置示意如下:

分享主模板给子企业:
在主企业控制台点击 模板,选择主企业,找到目标模板,点击更多->分享模板进入分享流程。

在分享界面选择要分享的子企业,确认模板无误后点击下一步开始执行分享动作。

分享成功后会看到成功提示页面:

子企业可以在自己的模板列表中查看到被分享的模板,之后即可使用该模板发起合同:

注意事项
- 分享后每个子企业获得的模板会生成独立的模板ID(templateId),与母模板不同。
- 子企业收到的共享模板不可编辑(只可使用)。
- 若母模板被编辑更新,变更会自动同步到所有被共享的子企业模板。
第十步 子企业使用分享得到的合同模板发起合同
下面以主企业代子企业(深圳一马物流有限公司)发起合同为例进行演示,发起人选为主公司员工刘波,子公司签署方为“猪猪侠”(企业签署方)和自然人“王五”。
登录主企业控制台(需为超级管理员或拥有主企业合同管理权限的员工)。
进入共享模板并开始发起:
依次点击模板 -> 选择子企业 -> 找到被分享的模板,点击使用进入发起流程。

填写发起信息:
在合同发起页面补全分配给发起方的填写控件
补充各签署方的联系方式(企业签署方和自然人签署方的联系人/手机号等)。

发起合同:
- 合同发起后,列表中会显示该合同。注意合同发起方会显示为子公司(例如“深圳一马物流有限公司 — 刘波”)。即便刘波未加入子公司,只要其具备集团组织权限,仍可代表子公司发起和参与签署。

子公司签署方签署:
- 子公司中的“猪猪侠”和自然人“王五”将在各自的合同列表看到该合同,按流程完成签署。
第十一步 主企业调用API操作子企业资源(印章示例)
子企业加入主企业后,主企业可使用自身的API密钥(SecretId 和 SecretKey)来管理子企业的各类资源。通过API操作子企业资源时,子企业无需单独购买专业版服务。
以下以通过API主企业为子企业“深圳一马物流有限公司”创建一个财务专用章为例进行说明。 创建印章需要调用创建企业电子印章接口。
注意:
- 主企业在调用该接口时,必须通过
Agent结构体的ProxyOrganizationId参数明确指定操作的目标子企业。 - 主企业的操作员
Operator结构体的UserId必须要集团组织的管理权限,如果没有可以参考第七步 授予主企业员工集团组织管理权限给此主企业的操作员授予集团组织的印章管理权限。
package main
import (
"fmt"
"log"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
ess "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ess/v20201111"
)
func main() {
credential := common.NewCredential(
"AKyDt21UUckpfp97v2Uy*********", // 主企业的API密钥SecretId
"SKPFZBVXfvPtqYXM*********", // 主企业的API密钥SecretKey
)
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "ess.test.ess.tencent.cn" // 指向测试环境
client, err := ess.NewClient(credential, "", cpf)
if err != nil {
log.Fatalf("创建ESS客户端失败: %v", err)
}
request := ess.NewCreateSealRequest()
// 设置操作者信息
request.Operator = &ess.UserInfo{
UserId: common.StringPtr("yDt21UUckpfpis5wUE4MeFyC6Z0zG8hf"), // 主企业操作员的用户ID
}
// 设置代理企业信息(子企业)
request.Agent = &ess.Agent{
ProxyOrganizationId: common.StringPtr("yDt21UUckpfpisldUE4MeFySBfyK9lP7"), // 子企业组织ID(深圳一马物流有限公司)
}
request.SealName = common.StringPtr("财务专用章") // 印章名称,支持1-50个中文字符
request.SealType = common.StringPtr("FINANCE") // 印章类型:FINANCE代表财务专用章
request.GenerateSource = common.StringPtr("SealGenerateSourceSystem") // 生成方式:代表系统自动生成
response, err := client.CreateSeal(request)
if err != nil {
log.Fatalf("创建印章失败: %v", err)
}
fmt.Printf("印章创建成功,响应信息: %s\n", response.ToJsonString())
}
调用成功后,可以在主企业控制台中看到子企业“深圳一马物流有限公司”已成功新增该财务专用章

第十二步 主企业调用API子企业创建合同 (方式一:用PDF文件创建合同)
系统提供了两种创建合同的方式:
- 通过上传PDF文件获取资源编号,进而创建待签署合同流程;
- 在控制台配置合同模板并发起合同流程。
前面我们已演示过通过控制台配置合同模板发起合同的操作,本节将演示通过API主企业如何通过上传PDF文件的方式为子企业创建合同。
一.主企业代子企业上传PDF文件
主企业需调用上传文件接口上传合同PDF。与其他主代子操作类似,主企业调用该接口时,必须在 Agent 结构体中通过 ProxyOrganizationId 参数明确指定目标子企业。
此外,主企业操作员对应的 Caller 结构体中的 OperatorId 必须具有集团组织合同管理权限。若尚未授予权限,请参考第七步 授予主企业员工集团组织管理权限,为操作员开通相应权限。
下面是主企业代子企业上传PDF文件调用 上传文件 接口的示例:
package main
import (
"encoding/base64"
"fmt"
"log"
"os"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
ess "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ess/v20201111"
)
func main() {
credential := common.NewCredential(
"AKyDt21UUckpfp97v2Uy*********", // 主企业的API密钥SecretId
"SKPFZBVXfvPtqYXM*********", // 主企业的API密钥SecretKey
)
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "file.test.ess.tencent.cn" //上传文件的测试环节
client, err := ess.NewClient(credential, "", cpf)
if err != nil {
log.Fatalf("创建ESS客户端失败: %v", err)
}
request := ess.NewUploadFilesRequest()
// 设置操作者信息(调用API的用户)
request.Caller = &ess.Caller{
OperatorId: common.StringPtr("yDt21UUckpfpis5wUE4MeFyC6Z0zG8hf"), // 主企业操作员的用户ID
}
// 设置代理企业信息
request.Agent = &ess.Agent{
ProxyOrganizationId: common.StringPtr("yDt21UUckpfpisldUE4MeFySBfyK9lP7"), // 子企业组织ID(深圳一马物流有限公司)
}
// 构建上传文件对象
uploadFile := &ess.UploadFile{
// 将PDF文件转换为Base64编码字符串
FileBody: common.StringPtr(getPdfBase64Content("/data/PDF/买卖合同.pdf")),
// 设置上传后的文件名(支持中文)
FileName: common.StringPtr("买卖合同.PDF"),
}
request.BusinessType = common.StringPtr("DOCUMENT") // 设置业务类型为文档类型 DOCUMENT用于发起合同
request.FileInfos = []*ess.UploadFile{uploadFile}
response, err := client.UploadFiles(request)
if err != nil {
log.Fatalf("文件上传失败: %v", err)
}
fmt.Printf("文件上传成功,响应结果: %s\n", response.ToJsonString())
}
// getPdfBase64Content 读取指定路径的PDF文件并转换为Base64编码字符串
// 参数:
// - pdfPath: PDF文件的完整路径
// 返回值:
// - string: Base64编码的文件内容
func getPdfBase64Content(pdfPath string) string {
// 读取PDF文件的二进制内容
bytes, err := os.ReadFile(pdfPath)
if err != nil {
log.Fatalf("读取PDF文件失败 [%s]: %v", pdfPath, err)
}
// 将二进制内容编码为Base64字符串
return base64.StdEncoding.EncodeToString(bytes)
}
接口调用返回的数据如下
{
"Response": {
"FileIds": ["yDt2wUUckpf0kxnwUyEchioC23R4V78T"],// 这个就是上传的PDF返回的资源ID,后序用于发起合同
"TotalCount": 1,
"RequestId": "d3c16e8b-2b64-4f53-a191-5c93eaa7b89f"
}
}
二. 主企业代子企业用PDF创建合同
主企业需调用用PDF文件创建签署流程接口来创建合同。与其他主代子操作一致,调用该接口时,必须在 Agent 结构体中通过 ProxyOrganizationId 参数明确指定目标子企业。
同时,主企业操作员对应的 Operator 结构体中的 UserId 必须具备集团组织合同管理权限。如未授予权限,请参考第七步 授予主企业员工集团组织管理权限,为操作员开通相应权限。
以下示例展示了主企业以员工刘波为发起人,代子企业“深圳一马物流有限公司”发起合同签署流程,签署方包括该子企业员工“猪猪侠”与自然人“王五”。
package main
import (
"fmt"
"log"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
ess "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ess/v20201111"
)
func main() {
credential := common.NewCredential(
"AKyDt21UUckpfp97v2Uy*********", // 主企业的API密钥SecretId
"SKPFZBVXfvPtqYXM*********", // 主企业的API密钥SecretKey
)
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "ess.test.ess.tencent.cn" // 指向测试环境
client, err := ess.NewClient(credential, "", cpf)
if err != nil {
log.Fatalf("创建ESS客户端失败: %v", err)
}
request := ess.NewCreateFlowByFilesRequest()
// 设置操作者信息(调用API的用户)
request.Operator = &ess.UserInfo{
UserId: common.StringPtr("yDt21UUckpfpis5wUE4MeFyC6Z0zG8hf"), // 主企业操作员刘波的用户ID
}
// 设置代理企业信息(子企业代理模式)
request.Agent = &ess.Agent{
ProxyOrganizationId: common.StringPtr("yDt21UUckpfpisldUE4MeFySBfyK9lP7"), // 子企业组织ID(深圳一马物流有限公司)
}
// 配置第一个签署方:企业签署方
approver1 := &ess.ApproverInfo{
ApproverType: common.Int64Ptr(0), // 签署方类型:0-企业签署方
OrganizationName: common.StringPtr("深圳一马物流有限公司(测试)"), // 企业名称
ApproverName: common.StringPtr("猪猪侠"), // 签署人姓名
ApproverMobile: common.StringPtr("185********"), // 签署人手机号,我这里演示传了*,实际情形不要传*,传真实的
SignComponents: []*ess.Component{ // 签名组件配置
{
ComponentPosX: common.Float64Ptr(82), // 企业印章组件X坐标
ComponentPosY: common.Float64Ptr(642), // 企业印章组件Y坐标
ComponentWidth: common.Float64Ptr(119), // 企业印章组件宽度
ComponentHeight: common.Float64Ptr(119), // 企业印章组件高度
ComponentPage: common.Int64Ptr(1), // 企业印章组件所在页码
ComponentType: common.StringPtr("SIGN_SEAL"), // 组件类型:企业印章
},
},
}
// 配置第二个签署方:个人签署方
approver2 := &ess.ApproverInfo{
ApproverType: common.Int64Ptr(1), // 签署方类型:1-个人签署方
ApproverName: common.StringPtr("王五"), // 个人签署者姓名
ApproverMobile: common.StringPtr("15600000000"), // 个人签署者手机号
SignComponents: []*ess.Component{ // 签名组件配置
{
ComponentPosX: common.Float64Ptr(199), // 个人签名X坐标
ComponentPosY: common.Float64Ptr(500), // 个人签名Y坐标
ComponentWidth: common.Float64Ptr(119), // 个人签名宽度
ComponentHeight: common.Float64Ptr(43), // 个人签名高度(通常比印章矮)
ComponentPage: common.Int64Ptr(1), // 签名所在页码
ComponentType: common.StringPtr("SIGN_SIGNATURE"), // 组件类型:个人签名
},
},
}
request.FlowName = common.StringPtr("小狗买卖合同") // 合同流程名称,将显示在签署页面
// 设置签署方列表
request.Approvers = []*ess.ApproverInfo{approver1, approver2}
// 设置合同文件ID列表(需要预先通过UploadFiles接口上传文件)
request.FileIds = []*string{
common.StringPtr("yDt2wUUckpf0kxnwUyEchioC23R4V78T"), // 已上传的PDF文件ID
}
// 设置签署顺序:true表示无序签署,false表示按顺序签署
request.Unordered = common.BoolPtr(true) // 允许签署方任意顺序签署
response, err := client.CreateFlowByFiles(request)
if err != nil {
log.Fatalf("创建合同流程失败: %v", err)
}
fmt.Printf("合同流程创建成功!响应结果: %s\n", response.ToJsonString())
}
发起成功以后可以在控制台中看到这个合同

第十三步 主企业调用API子企业创建合同 (方式二:用合同模板的方式)
在第十步 子企业使用分享得到的合同模板发起合同中,我们演示的是通过控制台使用合同模板创建合同;本节将演示如何通过API调用,使用第九步 配置与共享合同模板中分享获得的合同模板来创建合同。
示例中,主企业以员工刘波为发起人,代子企业“深圳一马物流有限公司”发起合同签署流程,签署方包括子企业员工“猪猪侠”与自然人“王五”。
使用合同模板创建合同需要依次调用以下三个接口,调用顺序如下图所示:

下面先调用模板发起合同-创建签署流程接口。
package main
import (
"fmt"
"log"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
ess "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ess/v20201111"
)
func main() {
credential := common.NewCredential(
"AKyDt21UUckpfp97v2Uy*********", // 主企业的API密钥SecretId
"SKPFZBVXfvPtqYXM*********", // 主企业的API密钥SecretKey
)
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "ess.test.ess.tencent.cn" // 指向测试环境
client, err := ess.NewClient(credential, "", cpf)
if err != nil {
log.Fatalf("创建ESS客户端失败: %v", err)
}
request := ess.NewCreateFlowRequest()
// 设置操作者信息(调用API的用户)
request.Operator = &ess.UserInfo{
UserId: common.StringPtr("yDt21UUckpfpis5wUE4MeFyC6Z0zG8hf"), // 主企业操作员刘波的用户ID
}
// 设置代理企业信息(子企业代理模式)
request.Agent = &ess.Agent{
ProxyOrganizationId: common.StringPtr("yDt21UUckpfpisldUE4MeFySBfyK9lP7"), // 子企业组织ID(深圳一马物流有限公司)
}
// 配置第一个签署方:企业签署方
approver1 := &ess.FlowCreateApprover{
ApproverType: common.Int64Ptr(0), // 签署方类型:0-企业签署方
OrganizationName: common.StringPtr("深圳一马物流有限公司(测试)"), // 企业名称
ApproverName: common.StringPtr("猪猪侠"), // 签署人姓名
ApproverMobile: common.StringPtr("185********"), // 签署人手机号,我这里演示传了*,实际情形不要传*,传真实的
}
// 配置第二个签署方:个人签署方
approver2 := &ess.FlowCreateApprover{
ApproverType: common.Int64Ptr(1), // 签署方类型:1-个人签署方
ApproverName: common.StringPtr("王五"), // 个人签署者姓名
ApproverMobile: common.StringPtr("15600000000"), // 个人签署者手机号
}
// 签署流程参与者信息
request.Approvers = []*ess.FlowCreateApprover{
approver1, approver2,
}
request.FlowName = common.StringPtr("小猫的买卖合同") //合同的名字
response, err := client.CreateFlow(request)
if err != nil {
log.Fatalf("创建签署流程失败: %v", err)
}
fmt.Printf("创建签署流程成功!\n响应结果: %s\n", response.ToJsonString())
}
调用接口返回的数据如下
{
"Response": {
"FlowId": "yDtzsUUckpf57jr1UWoNYRgbwVhTupwx",//创建的合同ID(也叫FlowId),下面的步骤需要这个参数
"RequestId": "25c57fe0-e44a-41d8-9935-65d1ccaeac37"
}
}
package main
import (
"fmt"
"log"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
ess "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ess/v20201111"
)
func main() {
credential := common.NewCredential(
"AKyDt21UUckpfp97v2Uy*********", // 主企业的API密钥SecretId
"SKPFZBVXfvPtqYXM*********", // 主企业的API密钥SecretKey
)
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "ess.test.ess.tencent.cn" // 指向测试环境
client, err := ess.NewClient(credential, "", cpf)
if err != nil {
log.Fatalf("创建ESS客户端失败: %v", err)
}
request := ess.NewCreateDocumentRequest()
// 设置操作者信息(调用API的用户)
request.Operator = &ess.UserInfo{
UserId: common.StringPtr("yDt21UUckpfpis5wUE4MeFyC6Z0zG8hf"), // 主企业操作员刘波的用户ID
}
// 设置代理企业信息(子企业代理模式)
request.Agent = &ess.Agent{
ProxyOrganizationId: common.StringPtr("yDt21UUckpfpisldUE4MeFySBfyK9lP7"), // 子企业组织ID(深圳一马物流有限公司)
}
// 配置合同流程参数
request.FlowId = common.StringPtr("yDtzsUUckpf57jr1UWoNYRgbwVhTupwx") // 签署流程ID,从CreateFlow接口的返回中获取
// 设置表单字段数据 - 填充合同模板中的动态内容
request.FormFields = []*ess.FormField{
{
ComponentName: common.StringPtr("品种"), // 填写控件的名称
ComponentValue: common.StringPtr("哈士奇"), // 填入具体品种信息
},
{
ComponentName: common.StringPtr("名字"), // 填写控件的名称
ComponentValue: common.StringPtr("阿财"), // 填入宠物具体名称
},
{
ComponentName: common.StringPtr("售价"), // 填写控件的名称
ComponentValue: common.StringPtr("1000元"), // 填入具体售价金额
},
}
request.TemplateId = common.StringPtr("yDtzsUUckpf53qqvUuMtvW5ve0yA4Azu") // 指定合同模板ID
response, err := client.CreateDocument(request)
if err != nil {
log.Fatalf("创建合同文档失败: %v", err)
}
fmt.Printf("合同文档创建成功!\n响应结果: %s\n", response.ToJsonString())
}
然后我们就可以调用 模板发起合同-发起签署流程开始整个合同的签署,填充填写控件需要进行Pdf合成工作,文档合成完成后会收到合同文档合成完成回调,建议在收到此回调后再调用 StartFlow 接口。
package main
import (
"fmt"
"log"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common"
"github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile"
ess "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ess/v20201111"
)
func main() {
credential := common.NewCredential(
"AKyDt21UUckpfp97v2Uy*********", // 主企业的API密钥SecretId
"SKPFZBVXfvPtqYXM*********", // 主企业的API密钥SecretKey
)
cpf := profile.NewClientProfile()
cpf.HttpProfile.Endpoint = "ess.test.ess.tencent.cn" // 指向测试环境
client, err := ess.NewClient(credential, "", cpf)
if err != nil {
log.Fatalf("创建ESS客户端失败: %v", err)
}
request := ess.NewStartFlowRequest()
// 设置操作者信息(调用API的用户)
request.Operator = &ess.UserInfo{
UserId: common.StringPtr("yDt21UUckpfpis5wUE4MeFyC6Z0zG8hf"), // 主企业操作员刘波的用户ID
}
// 设置代理企业信息(子企业代理模式)
request.Agent = &ess.Agent{
ProxyOrganizationId: common.StringPtr("yDt21UUckpfpisldUE4MeFySBfyK9lP7"), // 子企业组织ID(深圳一马物流有限公司)
}
request.FlowId = common.StringPtr("yDtzsUUckpf57jr1UWoNYRgbwVhTupwx") // 签署流程ID,从CreateFlow接口的返回中获取
response, err := client.StartFlow(request)
if err != nil {
log.Fatalf("开始合同失败: %v", err)
}
fmt.Printf("开始合同成功!\n响应结果: %s\n", response.ToJsonString())
}
发起成功以后可以在控制台中看到这个合同

结尾
集团帐号还提供了很多其它功能,本文未能详尽介绍。您可以点击阅读全文了解更多:集团客户(多企业)操作指南。
以下是部分重要功能简介:
查询集团成员企业列表
接口说明:
DescribeOrganizationGroupOrganizations 用于查询集团成员企业列表。
- 此接口返回的成员企业要素与集团组织管理后台中的成员列表保持一致。
主子企业回调通知
回调规则:
集团成员企业的相关操作均能全量回调至集团主企业(子企业的回调依旧正常)。所有回调均走主企业集成应用配置的回调地址,且权限控制与成员子企业的授权保持一致:
- 合同相关回调按照合同权限校验。
- 模板相关回调按照模板权限校验。
- 印章相关回调按照印章权限校验。
涉及操作或经办人员工ID的回调处理场景如下:
- 主企业代子企业发起的合同,回调通知发送给子企业。
- 主企业代子企业发起的合同,回调通知同时发送给主企业。
- 子企业自身发起的合同,回调通知发送给主企业。
统一规则:
所有回调数据均以实际成员企业的 OrgId 及对应企业内的 UserId 返回。
更多详细说明请参考:回调通知说明。