HarmonyOS
2.0.1-alpha.24配置依赖后执行 ohpm install --all。在 WindowStage.loadContent 完成后调用 BJCASDK.initialize(uiContext)。
适用于 HarmonyOS Stage 工程,使用 ArkTS 开发,通过 OHPM 引入 SDK。
工具与系统要求
| 项目 | 当前值 |
|---|---|
| 包名/精确版本 | @szyx/sdk_ywx / 2.0.1-alpha.24 |
| 工程模型 | Stage,ArkTS,标准 HAR 远端依赖 |
| 最低兼容系统 | HarmonyOS 5.0.4,API 16 |
| 目标 SDK | HarmonyOS 6.0.0,API 20;DevEco Studio 随附 Node/OHPM/Hvigor |
| 远端 OHPM 仓 | https://ohpm_repo.51trust.net/repos/szyx |
配置远端仓与依赖
项目根目录 .ohpmrc:
registry=https://ohpm.openharmony.cn/ohpm/
@szyx:registry=https://ohpm_repo.51trust.net/repos/szyx在调用模块的 oh-package.json5 中添加:
{
"dependencies": {
"@szyx/sdk_ywx": "2.0.1-alpha.24"
}
}导入 SDK:
import {
BJCASDK, EnvEnum, BiometricType, FingerSignState,
CertificateResult,
SignatureResult, EncryptedLogExport, YwxResult
} from '@szyx/sdk_ywx'UIAbility 与权限配置
UI 初始化
import { UIAbility } from '@kit.AbilityKit'
import { window } from '@kit.ArkUI'
import { BJCASDK } from '@szyx/sdk_ywx'
export default class EntryAbility extends UIAbility {
onWindowStageCreate(windowStage: window.WindowStage): void {
windowStage.loadContent('pages/Index', (error): void => {
if (error.code) {
AppStorage.setOrCreate<string>('sdkReadyStatus', 'HOST_PAGE_LOAD_FAILED')
return
}
const result = BJCASDK.initialize(windowStage.getMainWindowSync().getUIContext())
AppStorage.setOrCreate<string>('sdkReadyStatus', result.status)
})
}
}权限
entry 模块 module.json5:
{
"module": {
"requestPermissions": [
{ "name": "ohos.permission.INTERNET" },
{ "name": "ohos.permission.ACCESS_BIOMETRIC" },
{ "name": "ohos.permission.PRIVACY_WINDOW" },
{
"name": "ohos.permission.CAMERA",
"reason": "$string:permission_h5_camera",
"usedScene": { "abilities": ["EntryAbility"], "when": "inuse" }
},
{
"name": "ohos.permission.MICROPHONE",
"reason": "$string:permission_h5_microphone",
"usedScene": { "abilities": ["EntryAbility"], "when": "inuse" }
}
]
}
}在 resources/base/element/string.json 添加上述权限说明:
{
"string": [
{ "name": "permission_h5_camera", "value": "用于证书身份认证时的拍摄核验" },
{ "name": "permission_h5_microphone", "value": "用于证书身份认证时的音视频核验" }
]
}初始化与环境配置
重点:认证客户使用 EnvEnum.PUBLIC,医信客户使用 EnvEnum.SZYX。const sdk = BJCASDK
const uiResult = sdk.initialize(uiContext)
if (!uiResult.isSuccess()) return
const settings = sdk.settingManager()
const configured = await settings.configure(EnvEnum.PUBLIC) // 生产环境
// 集成环境改为:await settings.configure(EnvEnum.INTEGRATE)
if (!configured.isSuccess()) return
const initialized = await settings.setClientId(clientId)
if (!initialized.isSuccess()) return
接口说明
接口的 YwxResult 返回结构见初始化 SDK。
初始化 SDK
接口: initialize
绑定当前窗口的 UIContext,供 SDK 页面与 PIN 弹窗使用。
调用示例
const result = BJCASDK.initialize(uiContext)| 参数 | 类型 | 说明 |
|---|---|---|
uiContext | UIContext|null|undefined | 窗口加载完成后的 UIContext |
返回结果
返回类型:YwxResult<undefined>。
返回 UI 上下文绑定结果;参数为空为 1003,绑定失败为 1027。
YwxResult<T> 通用结果
| 字段/方法 | 类型 | 含义 |
|---|---|---|
| status | string | 0 或 200 为成功;其他值失败 |
| message | string | 结果说明,服务端业务失败保留原文 |
| data | T 或 null | 成功负载;无数据成功也可为 null |
| error | YwxError 或 null | 成功为 null,失败含稳定详情 |
| isSuccess() | boolean | 判断操作是否成功 |
error 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| source | YwxErrorSource | SDK、NETWORK、SERVER 或 USER_CANCELLED |
| code | string | 错误码 |
| message | string | 错误说明 |
| retryable | boolean | 是否可重试 |
| serverCode | string 或 null | 服务端原始错误码 |
获取配置管理器
接口: settingManager
取得环境、clientId 与页面配置接口。
调用示例
const result = BJCASDK.settingManager()参数: 无。
返回结果
返回类型:SettingManager。
返回配置管理器。
获取证书管理器
接口: certManager
取得证书下载、更新、查询与清除接口。
调用示例
const result = BJCASDK.certManager()参数: 无。
返回结果
返回类型:CaManager。
返回证书管理器。
获取签名管理器
接口: signManager
取得签名、签章、免密与生物识别接口。
调用示例
const result = BJCASDK.signManager()参数: 无。
返回结果
返回类型:SignManager。
返回签名管理器。
导出加密日志
接口: exportEncryptedLogs
导出 SDK 本地加密日志文件。
调用示例
const exported = await BJCASDK.exportEncryptedLogs()
if (exported.isSuccess() && exported.data) {
const filePath: string = exported.data.path
const count: number = exported.data.segmentCount
const recordingFailure: string | undefined = exported.data.recordingFailure
// 使用 filePath 保存或分享文件。
}参数: 无。
返回结果
返回类型:Promise<YwxResult<EncryptedLogExport>>。
成功 data 包含 path、segmentCount 和可选 recordingFailure;导出失败为 1023。
EncryptedLogExport 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| path | string | 日志文件路径 |
| segmentCount | number | 日志分片数 |
| recordingFailure | 可选 string | 日志记录失败说明 |
设置服务环境
接口: configure
配置集成或生产服务环境。
调用示例
const result = await BJCASDK.settingManager().configure(EnvEnum.PUBLIC)| 参数 | 类型 | 说明 |
|---|---|---|
environment | EnvEnum|null|undefined | 可省略,默认 PUBLIC;生产 PUBLIC/SZYX,集成 INTEGRATE |
serverUrlOverride | string|null|undefined | 可选 HTTPS 服务根地址,省略时使用环境默认地址 |
返回结果
返回类型:Promise<YwxResult<undefined>>。
返回配置结果;参数错误为 1003,SDK 忙为 1017。
environment 取值
| EnvEnum 成员 | 实际字符串值 | 默认服务根地址 |
|---|---|---|
| PUBLIC | 运营环境 | https://www.51trust.com/ |
| SZYX | 数字医信运营环境 | https://www.51szyx.com/ |
| INTEGRATE | 集成环境 | https://test.51trust.com/ |
设置 clientId
接口: setClientId
配置分配给接入应用的 clientId。
调用示例
const result = await BJCASDK.settingManager().setClientId(clientId)| 参数 | 类型 | 说明 |
|---|---|---|
clientId | string|null|undefined | 分配给接入应用的 clientId |
返回结果
返回类型:Promise<YwxResult<undefined>>。
返回配置结果;clientId 为空为 1003,SDK 忙为 1017。
获取设备标识
接口: getDeviceId
获取 SDK 业务请求使用的设备标识。
调用示例
const result = await BJCASDK.settingManager().getDeviceId()参数: 无。
返回结果
返回类型:Promise<YwxResult<string>>。
成功 data 为设备标识字符串。
获取 SDK 版本
接口: getVersion
读取当前集成的 SDK 版本号。
调用示例
const result = BJCASDK.settingManager().getVersion()参数: 无。
返回结果
返回类型:string。
返回版本字符串 2.0.1-alpha.24。
获取当前环境
接口: getServerEnvType
读取 SDK 当前使用的服务环境。
调用示例
const result = BJCASDK.settingManager().getServerEnvType()参数: 无。
返回结果
返回类型:YwxResult<EnvEnum>。
成功 data 为当前 EnvEnum。
获取 clientId
接口: getClientId
读取 SDK 当前配置的 clientId。
调用示例
const result = BJCASDK.settingManager().getClientId()参数: 无。
返回结果
返回类型:YwxResult<string>。
成功 data 为当前 clientId。
获取用户 OpenId
接口: getOpenId
读取当前证书用户的 OpenId。
调用示例
const result = BJCASDK.settingManager().getOpenId()参数: 无。
返回结果
返回类型:YwxResult<string>。
成功 data 为当前用户 OpenId;缺证书为 1001。
设置页面语言
接口: setLanguage
切换 SDK 页面的显示语言。
调用示例
const result = BJCASDK.settingManager().setLanguage(language)| 参数 | 类型 | 说明 |
|---|---|---|
language | string|null|undefined | 语言标识,取值见返回说明 |
返回结果
返回类型:YwxResult<undefined>。
返回设置结果;支持 zh、en,其他值为 1003。
获取页面语言
接口: getLanguage
读取 SDK 当前页面语言。
调用示例
const result = BJCASDK.settingManager().getLanguage()参数: 无。
返回结果
返回类型:string。
返回当前页面语言,默认 zh。
设置页面导航栏
接口: setNavigationBar
设置 SDK 页面标题、颜色与返回图标。
调用示例
import { BJCASDK, NavigationBarConfig } from '@szyx/sdk_ywx'
const config = new NavigationBarConfig('#333333', '#FFFFFF', '签名')
const result = BJCASDK.settingManager().setNavigationBar(config)| 参数 | 类型 | 说明 |
|---|---|---|
config | NavigationBarConfig|null|undefined | 导航栏样式,构造参数见下表 |
config 构造参数(按表格顺序传入)
| 参数 | 类型 | 默认值 |
|---|---|---|
| tintColor | string | #333333 |
| backgroundColor | string | #FFFFFF |
| title | string | 空字符串 |
| titleColor | string | 空字符串 |
| titleFontSize | number | 17 |
| backIcon | ResourceStr 或 null | null |
| backIconColor | string | 空字符串 |
| backgroundImage | ResourceStr 或 null | null |
| gradientColors | string[] | [] |
| gradientAngle | number | 0 |
返回结果
返回类型:YwxResult<undefined>。
返回样式设置结果;颜色或字号不合法为 1003。
查询本地证书
接口: existsCert
查询当前用户是否有本地证书。
调用示例
const result = BJCASDK.certManager().existsCert(phone)| 参数 | 类型 | 说明 |
|---|---|---|
phone | string|null|undefined | 可省略;指定用户的 11 位手机号 |
返回结果
返回类型:YwxResult<boolean>。
成功 data 为 boolean;传 phone 时同时选定该手机号,未传时查询当前用户。
批量查询本地证书
接口: BJCASDK.certManager().queryCertificateStates(queries)
查询指定平台和厂商的本地证书状态。
调用示例
import { BJCASDK, CertificateQuery, EnvEnum } from '@szyx/sdk_ywx'
const queries: CertificateQuery[] = [new CertificateQuery(EnvEnum.PUBLIC, firmId)]
const result = BJCASDK.certManager().queryCertificateStates(queries)
if (result.isSuccess()) {
result.data?.forEach(state => console.info(`${state.firmId}: ${state.exists}`))
}| 参数 | 类型 | 说明 |
|---|---|---|
| queries | CertificateQuery[]|null|undefined | 查询条件数组;可为空数组,每项使用 CertificateQuery 构造 |
CertificateQuery 构造参数(按顺序传入)
| 参数 | 类型 | 说明 |
|---|---|---|
| environment | EnvEnum | 生产 PUBLIC/SZYX,集成 INTEGRATE |
| firmId | string | 厂商标识 |
| serverUrlOverride | string(可选) | 指定服务地址;一般接入省略 |
返回结果
YwxResult<CertificateState[]>,同步返回;成功时 data 数组的字段如下。
| 字段 | 类型 | 说明 |
|---|---|---|
| environment | EnvEnum | 对应查询环境 |
| firmId | string | 对应厂商标识 |
| exists | boolean | 是否存在本地证书 |
| serverUrlOverride | string(可选) | 对应指定服务地址 |
清除本地证书
接口: clearCert
清除当前用户的本地证书及相关授权状态。
调用示例
BJCASDK.certManager().clearCert()参数: 无。
返回结果
返回类型:void。
无返回值。
下载证书
接口: certDown
打开 SDK 证书申领与下载流程。
调用示例
const result = await BJCASDK.certManager().certDown(phone)| 参数 | 类型 | 说明 |
|---|---|---|
phone | string|null|undefined | 当前用户的 11 位手机号 |
返回结果
返回类型:Promise<YwxResult<CertificateResult>>。
成功 data 为 CertificateResult,action 为 DOWNLOAD;手机号为空或格式错误返回 1002。
CertificateResult 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| action | CertificateAction | DOWNLOAD、UPDATE、RESET_PIN 或 VIEW |
| environment | EnvEnum | 服务环境 |
| clientId | string | 应用 clientId |
| firmId | string(可选) | 当前证书厂商标识 |
| phone | string | 手机号 |
| certificateExists | boolean | 证书是否存在 |
更新证书
接口: certUpdate
打开当前用户的证书更新流程。
调用示例
const result = await BJCASDK.certManager().certUpdate()参数: 无。
返回结果
返回类型:Promise<YwxResult<CertificateResult>>。
成功 data 为 CertificateResult,action 为 UPDATE;未到更新条件返回 1007。
CertificateResult 字段见对应返回说明。
重置签名密码
接口: certResetPin
打开签名 PIN 重置流程。
调用示例
const result = await BJCASDK.certManager().certResetPin()参数: 无。
返回结果
返回类型:Promise<YwxResult<CertificateResult>>。
成功 data 为 CertificateResult,action 为 RESET_PIN。
CertificateResult 字段见对应返回说明。
查看证书详情
接口: showCert
打开 SDK 证书详情页面。
调用示例
const result = await BJCASDK.certManager().showCert()参数: 无。
返回结果
返回类型:Promise<YwxResult<CertificateResult>>。
成功 data 为 CertificateResult,action 为 VIEW。
CertificateResult 字段见对应返回说明。
获取用户信息
接口: getUserInfo
查询当前证书用户的资料。
调用示例
const result = await BJCASDK.certManager().getUserInfo()参数: 无。
返回结果
返回类型:Promise<YwxResult<UserInfo>>。
成功 data 为 UserInfo。
UserInfo 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| openId | string | 用户 OpenId |
| userName | string | 姓名 |
| startDate / endDate / nowDate | string | 证书起止日期与当前日期 |
| deviceId | string | 设备标识 |
| idCardNum / idCardType | string | 证件号码与类型 |
| phoneNum | string | 手机号 |
| picUrl | string | 图片地址 |
| enableCert | boolean | 证书服务是否启用 |
| existsStamp | boolean | 是否存在签章 |
| deviceFit | boolean | 设备是否匹配 |
| certUpdateTipDay | number | 证书更新提示天数,默认 30 |
显示 PIN 输入框
接口: showPinWindow
打开 SDK PIN 输入窗口并取得输入结果。
调用示例
const result = await BJCASDK.signManager().showPinWindow()参数: 无。
返回结果
返回类型:Promise<YwxResult<PinResult>>。
成功 data 为 PinResult;已有 PIN 窗口时为 1017,取消为 3000。
PinResult 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| pin | string | 输入的 PIN,非输入完成路径可为空字符串 |
| encodedPin | string | 用于业务传输的 PIN 值,非输入完成路径可为空字符串 |
| pinExempt | boolean | 免密是否开启 |
| biometricState | FingerSignState | ON 或 OFF |
关闭 PIN 输入框
接口: hidePinWindow
关闭已显示的 SDK PIN 输入窗口。
调用示例
const result = await BJCASDK.signManager().hidePinWindow()参数: 无。
返回结果
返回类型:Promise<YwxResult<PinResult>>。
成功 data 为 PinResult,其中 pin、encodedPin 为空字符串。
PinResult 字段见对应返回说明。
获取签章图片
接口: getStampPic
读取当前用户的 Base64 签章图片。
调用示例
const result = await BJCASDK.signManager().getStampPic()参数: 无。
返回结果
返回类型:Promise<YwxResult<StampResult>>。
成功 data 为 StampResult,读取 stampPic;无签章为 1002。
StampResult 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| stampPic | string | Base64 签章图片 |
| fromCache | boolean | 是否来自缓存 |
设置签章图片
接口: drawStamp
打开 SDK 手写签章页面并保存签章。
调用示例
const result = await BJCASDK.signManager().drawStamp()参数: 无。
返回结果
返回类型:Promise<YwxResult<StampResult>>。
成功 data 为 StampResult;用户取消为 3000。
StampResult 字段见对应返回说明。
签署待签数据
接口: sign
对服务端生成的待签 ID 列表完成签署。
调用示例
const result = await BJCASDK.signManager().sign(uniqueIds)
if (result.isSuccess() && result.data) {
const completedIds: string[] = result.data.uniqueIds
const failedIds: string[] = result.data.failedUniqueIds
} else {
const status: string = result.status
const message: string = result.message
}| 参数 | 类型 | 说明 |
|---|---|---|
uniqueIds | string[]|null|undefined | 服务端生成的待签 ID 数组,1~100 项 |
返回结果
返回类型:Promise<YwxResult<SignatureResult>>。
成功 data 为 SignatureResult,包含 uniqueIds、failedUniqueIds;待签 ID 数量范围为 1~100。
SignatureResult 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| uniqueIds | string[] | 签署成功的待签 ID |
| failedUniqueIds | string[] | 签署失败的待签 ID |
| stampPic | string | Base64 签章图片 |
协同签名
接口: teamSign
对协同签名业务的待签 ID 列表完成签署。
调用示例
const result = await BJCASDK.signManager().teamSign(uniqueIds)| 参数 | 类型 | 说明 |
|---|---|---|
uniqueIds | string[]|null|undefined | 服务端生成的待签 ID 数组,1~100 项 |
返回结果
返回类型:Promise<YwxResult<SignatureResult>>。
成功 data 为 SignatureResult,包含 uniqueIds、failedUniqueIds。
SignatureResult 字段见对应返回说明。
授权他人签名
接口: grantSignature
向指定用户授予限定时长的签名权限。
调用示例
const result = await BJCASDK.signManager().grantSignature(grantedUserId, hours)| 参数 | 类型 | 说明 |
|---|---|---|
grantedUserId | string|null|undefined | 被授权用户 ID |
hours | number|null|undefined | 授权时长,单位小时 |
返回结果
返回类型:Promise<YwxResult<GrantResult>>。
成功 data 为 GrantResult,包含 grantedUserId、hours;hours 为正整数小时。
GrantResult 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| grantedUserId | string | 被授权用户 ID |
| hours | number | 授权时长,单位小时 |
开启免密签名
接口: keepPin
校验 PIN 并设置免密有效天数。
调用示例
const result = await BJCASDK.signManager().keepPin(keepDays)| 参数 | 类型 | 说明 |
|---|---|---|
keepDays | number|null|undefined | 免密有效天数,1~60 |
返回结果
返回类型:Promise<YwxResult<PinResult>>。
成功 data 为 PinResult;keepDays 为 1~60,参数错误为 1003 或 1008。
PinResult 字段见对应返回说明。
关闭免密签名
接口: clearPin
关闭免密签名。
调用示例
const result = await BJCASDK.signManager().clearPin()参数: 无。
返回结果
返回类型:Promise<YwxResult<boolean>>。
成功 data 为 true。
查询免密状态
接口: isPinExempt
读取当前用户是否已开启免密签名。
调用示例
const result = BJCASDK.signManager().isPinExempt()参数: 无。
返回结果
返回类型:YwxResult<boolean>。
成功 data 为 boolean。
查询可用生物识别类型
接口: getSupportedBiometricTypes
获取设备当前可用于签名认证的指纹或人脸类型。
调用示例
const result = await BJCASDK.signManager().getSupportedBiometricTypes()参数: 无。
返回结果
返回类型:Promise<YwxResult<BiometricType[]>>。
成功 data 为 BiometricType[];无可用类型时为空数组。
BiometricType 取值
| 枚举 | 值 | 含义 |
|---|---|---|
| BiometricType.Fingerprint | fingerprint | 指纹 |
| BiometricType.Face | face | 人脸 |
开启生物识别签名
接口: openBiometric
通过 PIN 校验与系统生物认证开启签名授权。
调用示例
const result = await BJCASDK.signManager().openBiometric(type)| 参数 | 类型 | 说明 |
|---|---|---|
type | BiometricType|null|undefined | 生物识别类型 |
返回结果
返回类型:Promise<YwxResult<PinResult>>。
成功 data 为 PinResult;类型取 Fingerprint 或 Face,取消为 3000。
PinResult 字段见对应返回说明。
关闭生物识别签名
接口: closeBiometric
关闭生物识别签名。
调用示例
const result = await BJCASDK.signManager().closeBiometric()参数: 无。
返回结果
返回类型:Promise<YwxResult<PinResult>>。
成功 data 为 PinResult。
PinResult 字段见对应返回说明。
查询生物识别状态
接口: isBiometric
读取当前用户的生物识别签名开关状态。
调用示例
const result = BJCASDK.signManager().isBiometric()参数: 无。
返回结果
返回类型:YwxResult<FingerSignState>。
成功 data 为 FingerSignState.ON 或 FingerSignState.OFF。
处理业务二维码
接口: qrDispose
接收扫码文本并执行签名或授权登录流程。
调用示例
const result = await BJCASDK.signManager().qrDispose(qrText, handleGrantedOauth)| 参数 | 类型 | 说明 |
|---|---|---|
qrText | string|null|undefined | 扫码取得的完整文本 |
handleGrantedOauth | boolean = true | 是否返回授权登录候选用户,默认 true |
返回结果
返回类型:Promise<YwxResult<QrCodeResult>>。
成功 data 为 QrCodeResult;二维码不支持为 2002,平台不匹配为 1020。授权登录返回 oauth.selectionRequired=true 时,从 oauth.grantedUsers 选择用户,再调用 startOauthLogin。
QrCodeResult 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| scene | QrScene | SIGN、OAUTH、OAUTH_SIGN、OAUTH_BATCH_SIGN 或 AUTO_SIGN |
| signature | SignatureResult 或 null | 签署结果 |
| oauth | OAuthResult 或 null | 授权登录结果 |
| autoSign | AutoSignResult 或 null | 自动签结果 |
完成授权登录
接口: startOauthLogin
根据授权请求和所选授权人完成登录流程。
调用示例
const result = await BJCASDK.signManager().startOauthLogin(uuid, grantOpenId, grantUserName)| 参数 | 类型 | 说明 |
|---|---|---|
uuid | string|null|undefined | 授权登录请求 ID |
grantOpenId | string|null|undefined | 可选;所选授权人的 OpenId |
grantUserName | string|null|undefined | 可选;所选授权人的姓名 |
返回结果
返回类型:Promise<YwxResult<OAuthResult>>。
成功 data 为 OAuthResult,selectionRequired 为 false。
OAuthResult 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| requestId | string | 授权请求 ID |
| selectionRequired | boolean | 是否需要选择授权人 |
| grantedUsers | GrantedUser[] | 可选授权人列表 |
GrantedUser 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| grantDoctorName | string | 授权人姓名 |
| grantedDoctorName | string | 被授权人姓名 |
| startTime / endTime | string | 授权起止时间 |
| grantUniqueId | string | 授权唯一 ID |
| openId | string | 用户 OpenId |
开启自动签名
接口: startAutoSign
打开自动签名授权流程。
调用示例
const result = await BJCASDK.signManager().startAutoSign(systemTag)| 参数 | 类型 | 说明 |
|---|---|---|
systemTag | string|null|undefined | 业务系统标识,未指定时传 undefined |
返回结果
返回类型:Promise<YwxResult<AutoSignResult>>。
成功 data 为 AutoSignResult;未指定 systemTag 时显式传 undefined。
AutoSignResult 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| selfSignSession | AutoSignSession 或 null | 自动签授权信息 |
| signTotal | number | 签名次数 |
AutoSignSession 字段
| 字段 | 类型 | 说明 |
|---|---|---|
| clientId | string | SDK 当前应用 clientId |
| clientName | string | 厂商名称 |
| endTime | string | 授权结束时间 |
| sdk | boolean | SDK 自动签标识 |
| sysTags | string[] | 业务系统标识列表 |
| version | string | 版本号 |
查询自动签名信息
接口: getSignAutoInfo
查询当前用户的自动签授权信息。
调用示例
const result = await BJCASDK.signManager().getSignAutoInfo()参数: 无。
返回结果
返回类型:Promise<YwxResult<AutoSignResult>>。
成功 data 为 AutoSignResult;未开通或未匹配授权为 003x043,data 为 null。
AutoSignResult 字段见对应返回说明。
关闭自动签名
接口: stopAutoSign
关闭指定业务系统的自动签授权。
调用示例
const result = await BJCASDK.signManager().stopAutoSign(systemTag)| 参数 | 类型 | 说明 |
|---|---|---|
systemTag | string|null|undefined | 业务系统标识,未指定时传 undefined |
返回结果
返回类型:Promise<YwxResult<AutoSignResult>>。
成功 data 为 null;关闭全部业务系统时传 undefined,否则传 systemTag。
AutoSignResult 字段见对应返回说明。
错误码
| YwxErrorCode成员 | 值 | 含义 |
|---|---|---|
| CERT_NOT_EXISTS_LOCAL | 1001 | 本地证书/证书身份不可用 |
| SIGN_NOT_STAMP | 1002 | 签章不存在;certDown 参数错误详见接口返回 |
| PARAMS_NULL | 1003 | 参数缺失/格式不合法 |
| PERMISSION_REFUSE | 1004 | 权限拒绝 |
| BATCH_COUNT_ERROR | 1006 | 批量签名超100 |
| CERT_UPDATE_TIME_NOT_ALLOW | 1007 | 未满足更新条件 |
| PIN_KEEP_DAY_ERROR | 1008 | 免密天数条件不符 |
| PHONE_ERROR | 1009 | 手机号错误 |
| FINGER_SIGN_STATE_ON | 1011 | 生物认证已开启 |
| FINGER_SIGN_STATE_OFF | 1012 | 生物认证已关闭 |
| PIN_RESET_SUCCESS | 1013 | PIN重置状态提示 |
| CERT_NOT_SERVER | 1014 | 服务端证书不存在 |
| USER_DIFFERENT | 1015 | 当前用户与证书不匹配 |
| CONTEXT_CHANGED | 1016 | 配置/身份上下文变化 |
| SDK_BUSY | 1017 | SDK活动流程/初始化忙 |
| SDK_INTERNAL_ERROR | 1018 | SDK 处理失败 |
| BIOMETRIC_AUTH_FAILED | 1019 | 生物识别能力或认证失败 |
| QR_PLATFORM_MISMATCH | 1020 | 二维码平台不符 |
| SDK_NOT_CONFIGURED | 1021 | 必需配置未完成 |
| SDK_STORAGE_UNAVAILABLE | 1023 | 安全存储/日志导出不可用 |
| SDK_PROCESS_UNSUPPORTED | 1025 | 进程模式不支持 |
| CA_CHANNEL_UNSUPPORTED | 1026 | 渠道不支持 |
| SDK_RUNTIME_UNSUPPORTED | 1027 | 运行环境/UI绑定不支持 |
| DEVICE_ID_UNAVAILABLE | 1028 | 可靠设备标识不可用 |
| ERROR_NET | 2001 | 网络或响应失败 |
| QR_VERIFY_ERROR | 2002 | 二维码校验失败 |
| QR_VERIFY_GRANT_ERROR | 2003 | 二维码授权处理失败 |
| CANCEL | 3000 | 用户取消 |
升级指引
必做配置
1. .ohpmrc 按本页接入配置设置远端仓库。
2. 依赖更新为 @szyx/sdk_ywx: 2.0.1-alpha.24,执行 ohpm install --all。
3. 在窗口内容加载成功后调用 BJCASDK.initialize(uiContext)。
4. 将旧的 settingManager().init(...) 改为依次等待 configure(...) 和 setClientId(...)。
5. 返回值统一改为读取 YwxResult,通过 isSuccess() 判断成功。
const settings = BJCASDK.settingManager()
const configured = await settings.configure(EnvEnum.PUBLIC) // 医信客户使用 EnvEnum.SZYX
if (!configured.isSuccess()) return
const initialized = await settings.setClientId(clientId)
if (!initialized.isSuccess()) return返回值必须修改
| 旧版读取方式 | 必须修改为 |
|---|---|
result.code | result.status |
result.msg | result.message |
result.code === '1001' 判断成功 | result.isSuccess() |
result.code === '1002' 判断取消 | result.status === '3000' |
existsCert(phone) 直接读取 boolean | 检查 isSuccess() 后读取 data |
isPinExempt() 直接读取 boolean | 检查 isSuccess() 后读取 data |
isBiometric() 直接读取 boolean | 检查 isSuccess() 后将 data 与 FingerSignState.ON 比较 |
签名结果数组中的 fileUniqueId | 读取 SignatureResult.uniqueIds 和 failedUniqueIds |
PIN 结果的 pinForNet | 读取 PinResult.encodedPin |
getClientId() 直接读取字符串 | 检查 isSuccess() 后读取 data |
getServerEnvType() 直接读取 EnvEnum | 检查 isSuccess() 后读取 data |
keepPin() 的字符串 data | 改为读取 PinResult |
openBiometric() 的字符串数组 data | 改为读取 PinResult |
closeBiometric() 的完成结果 | 改为处理 YwxResult<PinResult> |
自动签查询结果 AutoInfo[] | 读取 AutoSignResult.selfSignSession 和 signTotal |
使用了以下旧接口时必须修改
下表中的方法分别通过 BJCASDK.settingManager()、BJCASDK.certManager()、BJCASDK.signManager() 调用。
| 旧调用 | 新调用 |
|---|---|
settingManager().setClientId(clientId) | await settingManager().setClientId(clientId),检查返回结果 |
settingManager().setServerEnvType(envType) | await settingManager().configure(envType) |
certManager().certUpdate(phone) | 先调用 certManager().existsCert(phone),再 await certManager().certUpdate() |
await certManager().certClear() | certManager().clearCert(),返回 void |
certManager().showCertPage(phone) | 先调用 certManager().existsCert(phone),再 await certManager().showCert() |
certManager().getUserInfo(phone, listener) | 先调用 certManager().existsCert(phone),再 await certManager().getUserInfo() |
certManager().getOpenId() | settingManager().getOpenId(),读取结果 data |
certManager().getStampPic(phone) | 先调用 certManager().existsCert(phone),再 await signManager().getStampPic(),读取 data.stampPic |
certManager().drawStamp(phone) | 先调用 certManager().existsCert(phone),再 await signManager().drawStamp() |
signManager().signWithFirmId(uniqueIdList) | await signManager().sign(uniqueIds),参数为 string[] |
signManager().signForSignAuto(sysTag) | await signManager().startAutoSign(systemTag) |
signManager().stopSignAuto(sysTag) | await signManager().stopAutoSign(systemTag) |
| 二维码处理的 phone/OAuth 变体 | 先选定手机号,再调用 await signManager().qrDispose(qrText, handleGrantedOauth) |
signManager().sureGrantSign(...) | await signManager().grantSignature(grantedUserId, hours),时长单位为小时 |
signManager().clearPin() 的 Promise<void> | 改为处理 Promise<YwxResult<boolean>> |
平台 BiometricsType | 使用 SDK 导出的 BiometricType.Fingerprint 或 BiometricType.Face |
| 自行创建 PinDialog/获取 PIN 控制器 | 改为 await signManager().showPinWindow() 和 await signManager().hidePinWindow() |
旧类型与已移除接口
| 旧类型或接口 | 升级操作 |
|---|---|
CallBackMsg、CallBackForData<T> | 改用 YwxResult<T> |
UserInfoModel | 改用 UserInfo |
PinModel | 改用 PinResult |
SignModel[] | 改用 SignatureResult |
AutoInfo[] | 改用 AutoSignResult |
QrContentModel | 改用 QrCodeResult |
settingManager().getServerEnvUrl() | 删除调用,当前版本无对应公开方法 |
settingManager().getEnvTypeByUrl() | 删除调用,当前版本无对应公开方法 |
settingManager().getUrlByEnvType() | 删除调用,当前版本无对应公开方法 |
按需接入的新接口
| 需要的功能 | 接入方法 |
|---|---|
| 查询可用生物识别类型 | await signManager().getSupportedBiometricTypes() |
| 获取设备标识 | await settingManager().getDeviceId() |
| 导出加密日志 | await BJCASDK.exportEncryptedLogs(),从 data.path 读取文件路径 |