通过模板或文件创建并正式发起签署任务。
本部分包含用于创建和发起签署任务的API接口。
appId,
accessToken, userId (操作人ID), 和 source (来源标识) 作为通用认证参数。关于 source 参数的详细说明和取值,请参考快速开始章节。
使用预先创建好的合同模板来发起一个新的签署流程。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 获取到的有效访问令牌 |
| userId | integer (int64) | 是 | 执行此操作的用户ID (操作人) |
| source | string | 是 | 来源标识 (pc, app, h5, wx, alipay) |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| templateId | integer (int64) | 是 | 模板ID (模板id和模板编码二选一) |
| templateCode | string | 是 | 模板编码 (模板id和模板编码二选一) |
| templateName | string | 否 | 模板名称 (用于最终流程标题,建议填写) |
| privaryFlag | integer (int32) | 否 | 模板是否保密 (0: 不保密, 1: 保密) |
| encryptFlag | integer (int32) | 否 | 是否加密合同 (0: 普通合同, 1: 加密合同) |
| autoFill | integer (int32) | 否 | 是否自动填写(0:否;1:是) |
| reversePayFlag | integer (int32) | 否 | 是否对方付 (0: 发起方付, 1: 对方付) |
| sourceOrderCode | string | 否 | 外部单号(企业app过来的可以保留一个外部来源单号) |
| +participantList | array of object | 是 | 设置签署方 (结构见 参与方实体类_1 定义) |
| participantId | integer (int64) | 是 | 参与方ID(参与方ID和参与方标识二选一) |
| participantFlag | string | 是 | 参与方标识,同一个模板中不可重复 |
| psnAccount | string | 是 | 经办人手机 |
| psnName | string | 是 | 经办人名称 |
| participantCorpName | string | 否 | 参与方企业名称 (个人类型时为空) |
| payeeContractFlag | integer (int32) | 否 | 是否需要收款 (0:否, 1:是) |
| +payee | object | 否 | 收款信息 (结构见 合同模板收款信息实体类_1 定义) |
| id | integer (int64) | 否 | 收款信息ID (修改时传) |
| amount | number | 是 | 收款金额 |
| priority | integer (int32) | 否 | 签署付款顺序 (0: 先付后签; 1: 先签后付) |
| remark | string | 否 | 收款备注说明 |
| +attachmentList | array of object | 否 | 选填项设置.合同附件 (结构见 模板附件实体类 定义) |
| attachmentId | integer (int64) | 否 | 附件ID |
| templateId | integer (int64) | 否 | 模板ID |
| fileName | string | 是 | 文件名称 |
| fileUrl | string | 是 | 文件地址 (附件上传后获取) |
| +fillComponents | array of object | 否 | 控件填充信息 (结构见 控件实体类 定义) |
| componentId | integer (int64) | 是 | 控件ID |
| componentKey | string | 是 | 控件key(控件ID和控件key二选一) |
| componentValue | string | 否 | 需要填充到控件中的值 |
curl -X POST 'https://your-api-host.com/signTask/startSignFlow' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: YOUR_USER_ID' \
-H 'source: pc' \
-d '{
"templateId": 1001,
"templateName": "租赁合同-20240315",
"autoFill": 1,
"participantList": [
{
"participantFlag": "甲方",
"psnAccount": "13800138000",
"psnName": "发起人张三"
},
{
"participantFlag": "乙方",
"psnAccount": "13900139000",
"psnName": "李四",
"participantCorpName": "乙方公司",
"payeeContractFlag": 1,
"payee": {
"amount": 500.00,
"priority": 0
}
}
],
"attachmentList": [
{
"fileName": "补充协议.pdf",
"fileUrl": "upload/xxx/attachment.pdf"
}
],
"fillComponents": [
{
"componentKey": "ClientName",
"componentValue": "张三科技有限公司"
},
{
"componentKey": "ContractAmount",
"componentValue": "10000.00"
}
]
}'
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | string | 响应码,"200" 表示成功,其他表示错误。 |
| msg | string | 响应消息。 |
| +data | object | 响应数据,结构如下: |
| flowId | integer (int64) | 创建成功的签署流程ID。 |
| flowStatus | integer (int32) | 流程状态: 0 - 草稿; 1 - 签署中; 2 - 完成; 3 - 撤销; 5 - 过期 (签署截至日期到期后触发); 6 - 拒签。 |
| flowDesc | string | 签署流程描述。 |
| flowTitle | string | 流程标题。 |
| nextStatus | integer (int32) | 当前用户下步骤可以操作的状态: (0: 查看; 1: 填写; 2: 签署)。 |
| resultStatus | string | 处理结果(批处理记录异常状态)。 |
| errorMessage | string | 处理结果(批处理记录异常信息)。 |
| +participantList | array of object | 签署方信息列表 (结构见 签署人信息_1 定义)。 |
| participantId | integer (int64) | 签署人信息ID |
| participantFlag | string | 参与方标识 |
| signStatus | integer (int32) | 当前签署状态 |
| participantCorpId | integer (int64) | 企业ID |
| participantCorpName | string | 企业名称 |
| participantType | integer (int32) | 参与方类型 (1-企业, 0-个人) |
| participateBizType | array of string | 参与方式 |
| psnId | integer (int64) | 企业经办人账号ID |
| psnName | string | 经办人名称 |
| payeeContractFlag | integer (int32) | 是否需要收款 |
| +payee | object | 签署人支付信息 (结构见 签署人支付信息 定义) |
| id | integer (int64) | 收款信息ID |
| amount | number | 收款金额 |
| payeeStatus | integer (int32) | 收款支付状态 |
| auditStatus | integer (int32) | 收款审批状态 |
| priority | integer (int32) | 签署付款顺序 |
| remark | string | 收款备注说明 |
{
"code": "200",
"msg": "成功",
"data": {
"flowId": 12001,
"flowStatus": 0,
"flowTitle": "租赁合同-20240315",
"flowDesc": "签署中",
"nextStatus": 2,
"resultStatus": null,
"errorMessage": null,
"participantList": [
{
"participantId": 20101,
"participantFlag": "甲方",
"signStatus": 2,
"psnName": "发起人张三",
"participantType": 0
},
{
"participantId": 20102,
"participantFlag": "乙方",
"signStatus": 1,
"psnName": "李四",
"participantCorpName": "乙方公司",
"participantType": 1,
"payeeContractFlag": 1,
"payee": {
"id": 301,
"amount": 500.00,
"payeeStatus": 0,
"priority": 0
}
}
]
}
}
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 (如模板ID无效, 参与方信息缺失) |
| 401 | 未授权 (Token无效或过期) |
| 403 | 禁止访问 (无权使用该模板) |
| 404 | 模板不存在 |
| 500 | 服务器内部错误 |
不依赖预设模板,直接通过上传文件和定义参与方、签署组件来发起一个新的签署流程。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 获取到的有效访问令牌 |
| userId | integer (int64) | 是 | 执行此操作的用户ID (操作人) |
| source | string | 是 | 来源标识 (pc, app, h5, wx, alipay) |
参数结构与模板发起类似,但必须提供 `contractFileList` 和 `component` 信息
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| templateName | string | 是 | 流程标题 (必填) |
| privaryFlag | integer (int32) | 否 | 模板是否保密 (0: 不保密, 1: 保密) |
| encryptFlag | integer (int32) | 否 | 是否加密合同 (0: 普通, 1: 加密) |
| reversePayFlag | integer (int32) | 否 | 是否对方付 (0: 发起方付, 1: 对方付) |
| source | string | 否 | 来源标识 (见JSON定义) |
| +participantList | array of object | 是 | 签署方列表 (结构见 参与方实体类 定义) |
| participantId | integer (int64) | 否 | 参与方ID |
| participantFlag | string | 否 | 参与方标识 |
| psnAccount | string | 是 | 经办人手机 |
| psnName | string | 是 | 经办人名称 |
| participantCorpName | string | 否 | 参与方企业名称 |
| payeeContractFlag | integer (int32) | 否 | 是否需要收款 |
| +payee | object | 否 | 收款信息 (结构见 合同模板收款信息实体类_1) |
| id | integer (int64) | 否 | 收款信息ID |
| amount | number | 是 | 收款金额 |
| priority | integer (int32) | 否 | 签署付款顺序 |
| remark | string | 否 | 收款备注 |
| +contractFileList | array of object | 是 | 合同文件列表 (结构见 合同文件实体类 定义) |
| fileName | string | 是 | 文件名称 |
| fileUrl | string | 是 | 文件上传后返回的URL |
| totalPage | integer (int32) | 是 | 文件总页数 |
| width | number | 是 | 文件宽度 (通常指PDF首页宽度) |
| height | number | 是 | 文件高度 (通常指PDF首页高度) |
| +copierList | array of object | 否 | 抄送方列表 (结构见 抄送方实体类 定义) |
| copierType | integer (int32) | 是 | 抄送方类型 (0-个人, 1-企业) |
| copierName | string | 是 | 抄送方名称 |
| copierAccount | string | 是 | 抄送方手机号或邮箱 |
| +attachmentList | array of object | 否 | 附件列表 (结构见 模板附件实体类 定义) |
| attachmentId | integer (int64) | 否 | 附件ID |
| templateId | integer (int64) | 否 | 模板ID |
| fileName | string | 是 | 文件名称 |
| fileUrl | string | 是 | 文件地址 |
| +component | object | 是 | 模板组件信息 (结构见 组件实体类_1) |
| +components | array of object | 是 | 组件列表 (结构见 组件实体类 定义) |
| participantId | integer (int64) | 是 | 关联的参与方ID (若为公共组件可为0或null) |
| contractFileId | integer (int64) | 是 | 关联的合同文件ID |
| componentKey | string | 否 | 组件Key (唯一标识) |
| componentName | string | 否 | 组件名称 |
| componentType | integer (int32) | 是 | 组件类型 (如6-签章区) |
| required | integer (int32) | 是 | 是否必填 (1-是, 0-否) |
| positionX | number | 是 | X坐标 |
| positionY | number | 是 | Y坐标 |
| pageNum | integer (int32) | 是 | 所在页码 |
注意: 此接口虽然复用了 `模板发起合同模板类_1` 定义,但 `templateId` 在此场景下通常不需要或应为空。
curl -X POST 'https://your-api-host.com/signTask/directSignFlow' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: YOUR_USER_ID' \
-H 'source: pc' \
-d '{
"templateName": "临时协议-20240315",
"contractFileList": [
{
"fileName": "临时协议.pdf",
"fileUrl": "uploads/xxx/xxx.pdf",
"totalPage": 2,
"width": 595,
"height": 842
}
],
"participantList": [ /* ... 同模板发起 ... */ ],
"component": {
"components": [
{
"participantId": 0,
"contractFileId": 0,
"componentKey": "PartyASign",
"componentName": "甲方签章",
"componentType": 6,
"required": 1,
"positionX": 100.5,
"positionY": 200.0,
"pageNum": 2
}
]
}
}'
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | string | 响应码,"0" 表示成功,其他表示错误。 |
| msg | string | 响应消息。 |
| +data | object | 响应数据,结构如下: |
| flowId | integer (int64) | 创建成功的签署流程ID。 |
| flowStatus | integer (int32) | 流程初始状态 (通常为 0:草稿 或 1:签署中,取决于系统配置和发起参数)。 |
| flowTitle | string | 签署流程的标题。 |
| flowDesc | string | 流程描述 (如果创建时未指定,可能为空或默认值)。 |
{
"code": "0",
"msg": "success",
"data": {
"flowId": 12002,
"flowStatus": 0,
"flowTitle": "临时协议-20240315",
"flowDesc": "草稿"
}
}
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 (如缺少文件, 缺少组件) |
| 401 | 未授权 |
| 403 | 禁止访问 |
| 500 | 服务器内部错误 |
此接口专注于通过指定组件(特别是签章区域)的位置来发起合同,可能适用于更灵活或动态定义签署位置的场景。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 获取到的有效访问令牌 |
| userId | integer (int64) | 是 | 执行此操作的用户ID (操作人) |
| source | string | 是 | 来源标识 (pc, app, h5, wx, alipay) |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| +components | array of object | 是 | 组件列表 (包含位置信息) (结构见 组件实体类 定义) |
| participantId | integer (int64) | 是 | 关联的参与方ID |
| contractFileId | integer (int64) | 是 | 关联的合同文件ID |
| componentKey | string | 否 | 组件Key |
| componentName | string | 否 | 组件名称 |
| componentType | integer (int32) | 是 | 组件类型 |
| required | integer (int32) | 是 | 是否必填 |
| positionX | number | 是 | X坐标 |
| positionY | number | 是 | Y坐标 |
| pageNum | integer (int32) | 是 | 所在页码 |
| templateId | integer (int64) | 是 | 关联的模板ID (即使是直接发起,也可能需要关联一个包含文件和参与方的基础模板,具体需根据业务确认) |
注意: 此接口的请求体定义 (`组件实体类_1`) 相对简单,可能省略了流程标题、参与方、文件等信息。这些信息通常需要通过关联的 `templateId` (指向一个已包含文件和参与方定义的模板) 来提供。建议结合具体业务逻辑或联系技术支持确认完整用法。
curl -X POST 'https://your-api-host.com/signTask/directComponentSignFlow' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: YOUR_USER_ID' \
-H 'source: pc' \
-d '{
"templateId": 1005, // 关联一个包含文件和参与方定义的基础模板
"components": [
{
"participantId": 15001, // 模板中定义的参与方ID
"contractFileId": 6005, // 模板中定义的文件ID
"componentKey": "SignArea1",
"componentName": "签章区1",
"componentType": 6,
"required": 1,
"positionX": 400.0, // 指定的位置 X
"positionY": 700.0, // 指定的位置 Y
"pageNum": 1 // 指定的页码
}
// ... 其他需要指定位置的组件
]
}'
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | string | 响应码,"0" 表示成功,其他表示错误。 |
| msg | string | 响应消息。 |
| +data | object | 响应数据,结构如下: |
| flowId | integer (int64) | 创建成功的签署流程ID。 |
| flowStatus | integer (int32) | 流程初始状态。 |
| flowTitle | string | 签署流程的标题 (通常来自关联的 templateId)。 |
| flowDesc | string | 流程描述。 |
{
"code": "0",
"msg": "success",
"data": {
"flowId": 12003,
"flowStatus": 0,
"flowTitle": "基础合同模板A", // 标题可能来自 templateId=1005
"flowDesc": "草稿"
}
}
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 (如组件信息缺失或无效, templateId 未包含文件或参与方) |
| 401 | 未授权 |
| 403 | 禁止访问 |
| 404 | 关联的模板/文件或参与方不存在 |
| 500 | 服务器内部错误 |
获取一个用于直接发起合同(指定签署位置)的操作页面链接。这通常用于嵌入式集成,让用户在前端页面完成合同发起操作。
注意:根据JSON定义和常见用法,此接口通常用于获取一个让用户(通常是流程发起人)在线配置和发起一个"指定位置"签署流程的页面URL,而不是基于已有的
flowId。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| appId | string | 是 | 您的应用ID |
| accessToken | string | 是 | 获取到的有效访问令牌 |
| userId | integer (int64) | 是 | 执行此操作的用户ID (操作人) |
| source | string | 是 | 来源标识 (pc, app, h5, wx, alipay) |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| flowId | integer (int64) | 否 | 流程ID (通常不传或传0以获取新发起链接) |
curl -X POST 'https://your-api-host.com/signTask/getDesignatedSignatureUrl' \
-H 'Content-Type: application/json' \
-H 'appId: YOUR_APP_ID' \
-H 'accessToken: YOUR_ACCESS_TOKEN' \
-H 'userId: YOUR_USER_ID' \
-H 'source: pc' \
-d '{}' # 或者根据需要传递其他参数,如指定基础模板ID
# -d '{ "templateId": 1000 }'
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | string | 响应码,"0" 表示成功,其他表示错误。 |
| msg | string | 响应消息。 |
| data | string | 返回的操作页面URL。用户访问此URL可以在页面上完成发起操作。 |
{
"code": "0",
"msg": "success",
"data": "https://your-system-ui.com/createWithPosition?token=..." // 返回的操作页面URL
}
| HTTP状态码/业务码 | 描述 |
|---|---|
| 200 | 成功 |
| 400 | 请求参数错误 |
| 401 | 未授权 |
| 403 | 禁止访问 |
| 500 | 服务器内部错误 |
以下是本页API请求和响应中涉及的复杂数据结构的详细定义,供参考。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| participantId | int64 | 否 | 参与方ID(参与方ID和参与方标识二选一) |
| participantFlag | string | 否 | 参与方标识,同一个模板中不可重复,会展示到模板页面上,例如甲方、乙方等容易理解的业务名词(参与方ID和参与方标识二选一) |
| psnAccount | string | 是 | 经办人手机 |
| psnName | string | 是 | 经办人名称 |
| participantCorpName | string | 否 | 参与方企业名称 (个人类型时为空) |
| payeeContractFlag | int32 | 否 | 是否需要收款 (0:否, 1:是) |
| +payee | object | 否 | 收款信息 (结构见 合同模板收款信息实体类_1 定义) |
| id | int64 | 否 | 收款信息ID (修改时传) |
| amount | number | 是 | 收款金额 |
| priority | int32 | 否 | 签署付款顺序 (0: 先付后签; 1: 先签后付) |
| remark | string | 否 | 收款备注说明 |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| id | int64 | 否 | 收款信息ID (修改时传) |
| amount | number | 是 | 收款金额 |
| priority | int32 | 否 | 签署付款顺序 (0: 先付后签; 1: 先签后付) |
| remark | string | 否 | 收款备注说明 |
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| attachmentId | int64 | 否 | 附件ID |
| templateId | int64 | 否 | 模板ID |
| fileName | string | 是 | 文件名称 |
| fileUrl | string | 是 | 文件地址 (附件上传后获取) |
用于请求中 fillComponents 数组,填充模板中已定义的控件值。
| 参数名 | 类型 | 必填 | 描述 |
|---|---|---|---|
| componentId | int64 | 否 | 控件ID (控件ID和控件Key二选一,用于定位模板中的控件) |
| componentKey | string | 否 | 控件Key (控件ID和控件Key二选一,用于定位模板中的控件) |
| componentValue | string | 是 | 需要填充到控件中的值 |
用于响应中 participantList 数组,描述流程中各签署方的详细信息和状态。
| 参数名 | 类型 | 描述 |
|---|---|---|
| participantId | int64 | 签署人信息ID |
| participantFlag | string | 参与方标识,例如甲方、乙方等 |
| signStatus | int32 | 当前签署状态: 1-填写中; 2-签署中; 3-已签署; 4-等待审批; 5-已拒签 |
| participantCorpId | int64 | 企业ID (个人类型时为空) |
| participantCorpName | string | 企业名称 (个人类型时为空) |
| participantType | int32 | 参与方类型 (1-企业, 0-个人) |
| participateBizType | array of string | 参与方式 (例如: ["1", "2"] 表示可填写、可签署) |
| psnId | int64 | 企业经办人账号ID |
| psnName | string | 经办人名称 |
| payeeContractFlag | int32 | 是否需要收款 (0:否, 1:是) |
| +payee | object | 签署人支付信息 (结构见 签署人支付信息 定义) |
| id | int64 | 收款信息ID |
| amount | number | 收款金额 |
| payeeStatus | int32 | 收款支付状态 (0:未支付, 1:已支付) |
| auditStatus | int32 | 收款审批状态 (0:未审批, 1:已审批) |
| priority | int32 | 签署付款顺序 (0:先付后签, 1:先签后付) |
| remark | string | 收款备注说明 |
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | int64 | 收款信息ID |
| amount | number | 收款金额 |
| payeeStatus | int32 | 收款支付状态 (0:未支付, 1:已支付) |
| auditStatus | int32 | 收款审批状态 (0:未审批, 1:已审批) |
| priority | int32 | 签署付款顺序 (0:先付后签, 1:先签后付) |
| remark | string | 收款备注说明 |