跳到主要内容

Web页面嵌入能力说明

使用场景​

腾讯电子签支持开发者将部分核心前端页面集成到自己的系统中,可以通过 iframe 嵌入的方式,解决前端的复杂问题,从而大大提高集成效率。

支持的集成页面​

常规页面创建模板
编辑模板
预览模板
创建印章
印章列表
印章详情
预览合同
合同详情页
企业拓展服务配置页面
发起合同页面通过模板发起合同

主题风格配置​

API 链接​

创建页面主题配置

能力说明​

通过此接口,可以配置 Web 页面嵌入时(以上支持的核心页面,以及子客认证页面),页面中的个性化配置,包括主题色以及是否显示电子签 Logo 等。此接口在应用(AppId)维度全局生效,应在调其他可嵌入页面接口之前调用。

接口能力说明​

获取常规模块 web 页面(模板、印章、拓展服务)​

API 链接​

获取常规模块 web 页面

接口能力说明​

通过此接口可获取创建印章、企业拓展服务配置等常规页面。EmbedType 参数是 WEB 嵌入资源类型,根据不同的取值获取 Web 页面嵌入的链接。

页面名称参数值资源 ID
创建模板CREATE_TEMPLATE
编辑模板MODIFY_TEMPLATE模板 ID
预览模板PREVIEW_TEMPLATE模板 ID
创建印章CREATE_SEAL
印章列表页PREVIEW_SEAL_LIST
印章详情页PREVIEW_SEAL_DETAIL印章 ID
预览合同PREVIEW_FLOW合同 flowID
合同详情页PREVIEW_FLOW_DETAIL合同 flowID
企业拓展服务配置页EXTEND_SERVICE

获取企业签署合同 web 页面​

API 链接​

获取发起合同 web 页面

接口能力说明​

通过此接口指定一个模板,获取发起合同的 web 页面。支持在页面上手动编辑签署方信息、补充合同内容,也可以通过接口传参的方式快速填充。

一些个性化配置:

  1. 隐藏添加签署人步骤:若您系统中已经获取了签署人信息,可接口传参给电子签,且隐藏该步骤。
  2. 支持控制是否允许编辑签署方信息:若您系统中已经获取了签署人信息,可接口传参给电子签,仅在电子签页面展示签署人信息,不允许编辑。
  3. 控制是否允许修改发起方的控件内容:若您系统中已经规范保存了发起合同签需要补充的内容,不允许发起人在电子签上二次修改,可设置控件禁用。
  4. 发起前审批:支持控制是否提交待审批的合同,审核通过后触发合同发起。
  5. 签署前审批:支持控制本企业签署方,签署前是否需要审批,审批通过后方可签署合同。

详细能力参见接口文档。

页面示例​

创建模板/编辑模板​

预览模板​

预览合同​

合同详情​

企业拓展服务​

创建印章​

印章列表​

印章详情​

获取发起合同 web 页面​

iframe 嵌入前端代码示例​

以获取创建模板(CREATE_TEMPLATE)页面的场景为例。以下为 React 组件的封装方法,可供参考。

// 以获取模板的方法举例
export default function CreateTemplate() {
const [srcUrl, setSrcUrl] = useState('');
const [loading, setLoading] = useState(true);

const getCreateTemplateUrl = async () => {
setLoading(true);
// getWebUrl内部封装,ChannelCreateEmbedWebUrl
const res = await getWebUrl({
EmbedType: 'CREATE_TEMPLATE',
});
setLoading(false);
setSrcUrl(res?.data?.data?.WebUrl || '');
};

useEffect(() => {
getCreateTemplateUrl();
}, []);

return <div className='demo-wrapper'>{loading ? <div class='loading'></div> : <iframe src={srcUrl}></iframe>}</div>;
}

Web 端消息接口​

腾讯电子签在嵌入的页面中,提供了对外暴露的消息接口,用于在 iframe 集成的时候,实现内外数据通信。消息通讯的机制,适用于一些业务数据的传递,以及对页面事件的监控。

开发者在使用 iframe 集成腾讯电子签页面后,可以在自己的系统页面内,使用 addEventListener 注册事件监听器。即可接收到腾讯电子签的前端页面推送的消息。

目前已支持的消息类型如下:

消息类型描述页面范围
NOT_LOGIN页面未登录或者登录态失效时触发所有页面

以下为 React 组件的封装方法,可供参考

import React, { useRef } from 'react';

const Iframe = ({ src }) => {
const iframeRef = useRef();

useEffect(() => {
const handler = evt => {
// 通过messageType判断场景类型
// 通过origin判断消息来源于电子签域名
if (evt.data.messageType === 'NOT_LOGIN' && evt.origin === 'embed.qian.tencent.com') {
// 处理你的业务逻辑
}
};
window.addEventListener('message', handler); // 绑定消息的监听
return () => {
// 注意要记得解绑
window.removeEventListener('message', handler);
};
}, []);

return <iframe ref={iframeRef} src={src}></iframe>;
};

export default Iframe;