跳到主要内容

Web页面嵌入能力说明

使用场景

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

支持的集成页面

常规页面创建印章
印章列表
印章详情
企业拓展服务配置页面
合同签署页面企业签署方PC签署页面

主题风格配置

API 链接

创建页面主题配置

能力说明

通过此接口,可以配置 Web 页面嵌入时,Web 页面中的个性化配置,包括主题色以及是否显示电子签 Logo 等。此接口全局生效,应在调其他可嵌入页面接口之前调用。

接口能力说明

获取常规可嵌入页面

API 链接

获取常规可嵌入页面

接口能力说明

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

页面名称参数值资源 ID
创建印章CREATE_SEAL
印章列表页PREVIEW_SEAL_LIST
印章详情页PREVIEW_SEAL_DETAIL印章 ID
企业拓展服务配置页EXTEND_SERVICE

获取企业签署合同 web 页面

API 链接

获取企业签署合同 web 页面

接口能力说明

通过此接口可获取单个或多个合同的 PC 端签署页面,仅支持企业签署方。

页面示例

企业拓展服务

创建印章

印章列表

印章详情

企业签署合同

iframe 嵌入前端代码示例

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

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

const getCreateTemplateUrl = async () => {
setLoading(true);
// getWebUrl内部封装,CreateEmbedWebUrl
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;
购买咨询
微信客服
4006-808-062
4006-808-062