本文档详细说明第三方系统如何通过 /externalPage 接口与 智能打标 系统进行集成。对接采用安全的跨窗口通信机制,确保数据传输的安全性和可靠性。
使用 iframe 嵌入打标确认页面,通过 postMessage 进行跨窗口通信。
{
type: 'externalPageLoaded',
loadedAt: 1672531200000, // 时间戳
status: 'ready'
}
{
type: 'externalParams',
business_attr: 'LOAN2024001', // 贷款申请编号(必填)
user_id: 'user001', // 用户ID(必填)
user_nm: '张三', // 用户姓名(必填)
user_org: '福建农信', // 所属机构(必填)
user_endpoint: '福州分行', // 所属行社(必填)
contract_no: 'CONTRACT001', // 合同编号(必填)
timestamp: 1672531200000, // 时间戳
source: 'thirdPartySystem' // 来源标识
}
{
type: 'externalParamsReceived',
originalData: {
// 原始用户数据
},
receivedAt: 1672531200000, // 接收时间戳
status: 'success' // 接收状态
}
// iframe嵌入方式
const iframeUrl = 'http://your-domain.com/#/externalPage';
const iframe = document.createElement('iframe');
iframe.src = iframeUrl;
iframe.style.width = '100%';
iframe.style.height = '600px';
document.body.appendChild(iframe);
// 监听智能打标页面发送的加载完成消息
window.addEventListener('message', (event) => {
if (event.data && event.data.type === 'externalPageLoaded') {
console.log('智能打标页面已加载完成,可以发送用户数据');
// 发送用户数据
sendUserData();
}
});
function sendUserData() {
const userData = {
type: 'externalParams',
business_attr: 'LOAN2024001',
user_id: 'user001',
user_nm: '张三',
user_org: '福建农信',
user_endpoint: '福州分行',
contract_no: 'CONTRACT001',
timestamp: Date.now(),
source: 'yourSystemName'
};
// 发送给iframe
if (iframe && iframe.contentWindow) {
iframe.contentWindow.postMessage(userData, '*');
}
}
// 监听智能打标系统的确认消息
window.addEventListener('message', (event) => {
if (event.data && event.data.type === 'externalParamsReceived') {
console.log('智能打标系统已成功接收数据');
// 更新UI状态
updateIntegrationStatus('数据接收成功');
}
});
智能打标系统会对以下字段进行必填验证:
business_attr - 贷款申请编号user_id - 用户IDuser_nm - 用户姓名user_org - 所属机构user_endpoint - 所属行社contract_no - 合同编号如果缺少任一必填字段,系统将拒绝处理并显示警告信息。
在生产环境中,建议验证消息来源:
window.addEventListener('message', (event) => {
// 验证消息来源域名
if (event.origin !== 'https://your-tagging-system.com') {
return;
}
// 处理消息
});
// 添加详细的日志记录
console.log('发送消息:', message);
console.log('接收消息:', event.data);
console.log('消息来源:', event.origin);
症状:数据发送后无响应 原因:
症状:长时间等待无响应 原因:网络延迟或页面资源加载慢 解决方案:
症状:内容超出显示区域无法查看 原因:iframe 样式限制 解决方案:
添加 scrolling="auto" 属性:
<iframe src="http://your-domain.com/#/externalPage"
frameborder="0"
width="100%"
height="100%"
scrolling="auto"></iframe>
设置合适的 height 和 width
使用响应式 CSS 样式:
.iframe-container {
flex: 1;
min-height: 0;
overflow: hidden;
border: 1px solid #e4e7ed;
border-radius: 4px;
background-color: #fff;
display: flex;
flex-direction: column;
}
.iframe-container iframe {
flex: 1;
width: 100%;
height: 100%;
border: none;
background-color: #fff;
}
如遇技术问题,请提供以下信息:
本文档最后更新:2026年3月17日