跳转电子签H5
1. App集成电子签H5兼容性适配
人脸核身兼容性适配。参考人脸核身 App 调用 H5 兼容性配置指引
B2B场景或B2C填写场景,选择文件或图片上传适配。参考Android WebView选择图片、发送图片
B2B场景,文件下载适配。企业认证时,用户可以下载模板文件。Android App中,需拦截 Webview 下载操作,转系统调用。调用 webview.setDownloadListener() 接口设置下载拦截,可以使用系统下载或者App自己实现。
B2B场景,拦截
weixin://
可跳转到微信小程序创建印章。重写 Webview shouldOverrideUrlLoading 或 WKNavigationDelegate 接口,遇到weixin://
开头的链接时,转系统调用。目前,H5 B2B合同签署未实现企业印章创建的流程,需引导到微信小程序中创建。(可选) 拦截返回应用的
qianapp://
。需要从电子签H5直接返回App原生页面时,且配置对应的JumpUrl格式之后,才需要适配。
初次使用Android Webview时,建议先参考 Android-AdvancedWebView ,了解各种适配相关的接口。Android Webview上需要各种适配之后,其功能才接近于手机浏览器。检验自己的适配是否成功,分别在手机浏览器与自己App Webview打开H5页面,两者的功能差异。同时,检查一下最基本的设置是否正确,webSetting.setJavaScriptEnabled(true) 与 webSetting.setDomStorageEnabled(true) 。
文件下载参考:
- android, Android -- WebView 支持文件下载的几种方式 、 ANDROID WebView加载H5页面下载文件和下载完毕后自动打开文件
- iOS, How to download files in wkwebview
拦截 URL scheme 参考:
- android, Android WebView err_unknown_url_scheme ,见 shouldOverrideUrlLoading 方法。
- iOS, UPI Intent in WebView - iOS ,见WKNavigationDelegate方法。
UniApp App端:
使用UniApp构建App时,可以直接使用其Webview组件集成电子签H5。先配置好App所需的相机、麦克风、文件存储、文件读取、访问文件系统等权限,可参考人脸核身 App 调用 H5 兼容性配置指引使用的权限点。
2. 获取电子签H5链接
可参考获取H5签署链接 、获取H5批量签署链接 ,以及其它与H5相关的接口。
H5签署、认证等链接因涉及人脸核身,不支持在iframe中使用,请参考“3.1 腾讯电子签H5 → 集成方H5”配置JumpUrl串联业务流程。
3. 返回应用JumpUrl格式
App集成H5时,在电子签H5页面完成签署之后,一般需要返回到集成方的H5或原生页面。针对这两种不同的集成方式,集成方需要传不同的JumpUrl数据格式与兼容性适配。
3.1 腾讯电子签H5 → 集成方H5
该场景表现为:双方H5均在普通浏览器或APP Webview中,在腾讯电子签H5中完成签署之后,再返回到集成方H5页面。
JumpUrl格式: https://YOUR_CUSTOM_URL/xxxx
,只需满足 https://
开头的正确且合规的网址即可。
注意: 根据安全要求,浏览器或Webview可能不允许跳转到普通的http协议。
返回应用时携带的数据:当query中有appendResult=qian
时,在YOUR_CUSTOM_URL后面添加query参数签署成功的参数,具体格式参考
返回应用数据格式
,比如 https://YOUR_CUSTOM_URL?flowId=xxx&action=sign&result=success&from=tencent_ess
。 否则,直接跳转到原始的JumpUrl。
3.2 腾讯电子签H5 → 集成方原生App
该场景表现为:通过原生App的Webview组件承载腾讯电子签H5,在腾讯电子签H5中完成签署之后,再返回到原生页面。
JumpUrl格式: qianapp://YOUR_CUSTOM_URL
,只需满足 qianapp://
开头的URL即可。
注意: APP实现方,需要拦截Webview地址跳转,发现url是 qianapp://
开头时跳转到原生页面。
返回应用时携带的数据:仅当query中有appendResult=qian
时,在YOUR_CUSTOM_URL后面添加query参数签署成功的参数,具体格式参考
返回应用数据格式
,比如 qianapp://YOUR_CUSTOM_URL?flowId=xxx&action=sign&result=success&from=tencent_ess
。 否则,直接跳转到原始的JumpUrl。
3.3 腾讯电子签H5 → 集成方UniApp
该场景表现为:通过UniApp App端的Webview组件承载腾讯电子签H5,在腾讯电子签H5中完成签署之后,再返回到UniApp页面。
JumpUrl格式: qianuni://{YOUR_JSON_DATA}
,需满足 qianuni://
开头且后面的JSON需满足以下 QianUniRouteType
格式。
例如,qianuni://{"method":"reLaunch","payload":{"url":"/pages/index/result?foo=bar"},"appendResult":"qian"}
type QianUniRouteType = {
method: 'navigateTo' | 'navigateBack' | 'switchTab' | 'reLaunch' | 'redirectTo',
payload: Object,
appendResult: 'qian', // 可选字段
}
其中的 payload 的数据格式,参考UniApp路由相关几个函数的参数。
仅 appendResult 等于 'qian' 时,将在 payload.url 的 query 参数中附加签署成功状态参数,具体格式参考
返回应用数据格式 ,比如,payload.url 自动附加的结果为 /pages/index/result?foo=bar&flowId=xxx&action=sign&result=success&from=tencent_ess
。 否则,直接使用原始的 payload.url 完成页面跳转。
注意:跳转路由有绝对路径和相对路径之分。 带斜杠/
开头的路由,表示绝对路径; 不带斜杠/
开头的路由,表示相对路径。推荐统一使用/
开头的绝对路径,可避免出现找不到页面的情况。
4. 返回应用数据格式
返回到集成方应用时,每个字段的TS类型定义如下:
// 签署、填写、拒签,返回格式如下
{
flowId: string,
action: 'fill' | 'sign' | 'reject_fill' | 'reject_sign' | 'view' | '',
result: 'success' | 'fail' | '',
from: 'tencent_ess'
}
注意: 有的场景不包含上面的所有字段。比如,批量签署或开通自动签,无flowId。