签名 SDK 开发文档
集成与接口参考

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
目标 SDKHarmonyOS 6.0.0,API 20;DevEco Studio 随附 Node/OHPM/Hvigor
远端 OHPM 仓https://ohpm_repo.51trust.net/repos/szyx

配置远端仓与依赖

项目根目录 .ohpmrc:

ini
registry=https://ohpm.openharmony.cn/ohpm/
@szyx:registry=https://ohpm_repo.51trust.net/repos/szyx

在调用模块的 oh-package.json5 中添加:

json5
{
  "dependencies": {
    "@szyx/sdk_ywx": "2.0.1-alpha.24"
  }
}

导入 SDK:

typescript
import {
  BJCASDK, EnvEnum, BiometricType, FingerSignState,
  CertificateResult,
  SignatureResult, EncryptedLogExport, YwxResult
} from '@szyx/sdk_ywx'

UIAbility 与权限配置

UI 初始化

typescript
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:

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 添加上述权限说明:

json
{
  "string": [
    { "name": "permission_h5_camera", "value": "用于证书身份认证时的拍摄核验" },
    { "name": "permission_h5_microphone", "value": "用于证书身份认证时的音视频核验" }
  ]
}

初始化与环境配置

重点:认证客户使用 EnvEnum.PUBLIC,医信客户使用 EnvEnum.SZYX。
typescript
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 弹窗使用。

调用示例

typescript
const result = BJCASDK.initialize(uiContext)
参数类型说明
uiContextUIContext|null|undefined窗口加载完成后的 UIContext

返回结果

返回类型:YwxResult<undefined>。

返回 UI 上下文绑定结果;参数为空为 1003,绑定失败为 1027。

YwxResult<T> 通用结果

字段/方法类型含义
statusstring0 或 200 为成功;其他值失败
messagestring结果说明,服务端业务失败保留原文
dataT 或 null成功负载;无数据成功也可为 null
errorYwxError 或 null成功为 null,失败含稳定详情
isSuccess()boolean判断操作是否成功

error 字段

字段类型说明
sourceYwxErrorSourceSDK、NETWORK、SERVER 或 USER_CANCELLED
codestring错误码
messagestring错误说明
retryableboolean是否可重试
serverCodestring 或 null服务端原始错误码

获取配置管理器

接口: settingManager

取得环境、clientId 与页面配置接口。

调用示例

typescript
const result = BJCASDK.settingManager()

参数: 无。

返回结果

返回类型:SettingManager。

返回配置管理器。

获取证书管理器

接口: certManager

取得证书下载、更新、查询与清除接口。

调用示例

typescript
const result = BJCASDK.certManager()

参数: 无。

返回结果

返回类型:CaManager。

返回证书管理器。

获取签名管理器

接口: signManager

取得签名、签章、免密与生物识别接口。

调用示例

typescript
const result = BJCASDK.signManager()

参数: 无。

返回结果

返回类型:SignManager。

返回签名管理器。

导出加密日志

接口: exportEncryptedLogs

导出 SDK 本地加密日志文件。

调用示例

typescript
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 字段

字段类型说明
pathstring日志文件路径
segmentCountnumber日志分片数
recordingFailure可选 string日志记录失败说明

设置服务环境

接口: configure

配置集成或生产服务环境。

调用示例

typescript
const result = await BJCASDK.settingManager().configure(EnvEnum.PUBLIC)
参数类型说明
environmentEnvEnum|null|undefined可省略,默认 PUBLIC;生产 PUBLIC/SZYX,集成 INTEGRATE
serverUrlOverridestring|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。

调用示例

typescript
const result = await BJCASDK.settingManager().setClientId(clientId)
参数类型说明
clientIdstring|null|undefined分配给接入应用的 clientId

返回结果

返回类型:Promise<YwxResult<undefined>>。

返回配置结果;clientId 为空为 1003,SDK 忙为 1017。

获取设备标识

接口: getDeviceId

获取 SDK 业务请求使用的设备标识。

调用示例

typescript
const result = await BJCASDK.settingManager().getDeviceId()

参数: 无。

返回结果

返回类型:Promise<YwxResult<string>>。

成功 data 为设备标识字符串。

获取 SDK 版本

接口: getVersion

读取当前集成的 SDK 版本号。

调用示例

typescript
const result = BJCASDK.settingManager().getVersion()

参数: 无。

返回结果

返回类型:string。

返回版本字符串 2.0.1-alpha.24。

获取当前环境

接口: getServerEnvType

读取 SDK 当前使用的服务环境。

调用示例

typescript
const result = BJCASDK.settingManager().getServerEnvType()

参数: 无。

返回结果

返回类型:YwxResult<EnvEnum>。

成功 data 为当前 EnvEnum。

获取 clientId

接口: getClientId

读取 SDK 当前配置的 clientId。

调用示例

typescript
const result = BJCASDK.settingManager().getClientId()

参数: 无。

返回结果

返回类型:YwxResult<string>。

成功 data 为当前 clientId。

获取用户 OpenId

接口: getOpenId

读取当前证书用户的 OpenId。

调用示例

typescript
const result = BJCASDK.settingManager().getOpenId()

参数: 无。

返回结果

返回类型:YwxResult<string>。

成功 data 为当前用户 OpenId;缺证书为 1001。

设置页面语言

接口: setLanguage

切换 SDK 页面的显示语言。

调用示例

typescript
const result = BJCASDK.settingManager().setLanguage(language)
参数类型说明
languagestring|null|undefined语言标识,取值见返回说明

返回结果

返回类型:YwxResult<undefined>。

返回设置结果;支持 zh、en,其他值为 1003。

获取页面语言

接口: getLanguage

读取 SDK 当前页面语言。

调用示例

typescript
const result = BJCASDK.settingManager().getLanguage()

参数: 无。

返回结果

返回类型:string。

返回当前页面语言,默认 zh。

设置页面导航栏

接口: setNavigationBar

设置 SDK 页面标题、颜色与返回图标。

调用示例

typescript
import { BJCASDK, NavigationBarConfig } from '@szyx/sdk_ywx'

const config = new NavigationBarConfig('#333333', '#FFFFFF', '签名')
const result = BJCASDK.settingManager().setNavigationBar(config)
参数类型说明
configNavigationBarConfig|null|undefined导航栏样式,构造参数见下表

config 构造参数(按表格顺序传入)

参数类型默认值
tintColorstring#333333
backgroundColorstring#FFFFFF
titlestring空字符串
titleColorstring空字符串
titleFontSizenumber17
backIconResourceStr 或 nullnull
backIconColorstring空字符串
backgroundImageResourceStr 或 nullnull
gradientColorsstring[][]
gradientAnglenumber0

返回结果

返回类型:YwxResult<undefined>。

返回样式设置结果;颜色或字号不合法为 1003。

查询本地证书

接口: existsCert

查询当前用户是否有本地证书。

调用示例

typescript
const result = BJCASDK.certManager().existsCert(phone)
参数类型说明
phonestring|null|undefined可省略;指定用户的 11 位手机号

返回结果

返回类型:YwxResult<boolean>。

成功 data 为 boolean;传 phone 时同时选定该手机号,未传时查询当前用户。

批量查询本地证书

接口: BJCASDK.certManager().queryCertificateStates(queries)

查询指定平台和厂商的本地证书状态。

调用示例

typescript
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}`))
}
参数类型说明
queriesCertificateQuery[]|null|undefined查询条件数组;可为空数组,每项使用 CertificateQuery 构造

CertificateQuery 构造参数(按顺序传入)

参数类型说明
environmentEnvEnum生产 PUBLIC/SZYX,集成 INTEGRATE
firmIdstring厂商标识
serverUrlOverridestring(可选)指定服务地址;一般接入省略

返回结果

YwxResult<CertificateState[]>,同步返回;成功时 data 数组的字段如下。

字段类型说明
environmentEnvEnum对应查询环境
firmIdstring对应厂商标识
existsboolean是否存在本地证书
serverUrlOverridestring(可选)对应指定服务地址

清除本地证书

接口: clearCert

清除当前用户的本地证书及相关授权状态。

调用示例

typescript
BJCASDK.certManager().clearCert()

参数: 无。

返回结果

返回类型:void。

无返回值。

下载证书

接口: certDown

打开 SDK 证书申领与下载流程。

调用示例

typescript
const result = await BJCASDK.certManager().certDown(phone)
参数类型说明
phonestring|null|undefined当前用户的 11 位手机号

返回结果

返回类型:Promise<YwxResult<CertificateResult>>。

成功 data 为 CertificateResult,action 为 DOWNLOAD;手机号为空或格式错误返回 1002。

CertificateResult 字段

字段类型说明
actionCertificateActionDOWNLOAD、UPDATE、RESET_PIN 或 VIEW
environmentEnvEnum服务环境
clientIdstring应用 clientId
firmIdstring(可选)当前证书厂商标识
phonestring手机号
certificateExistsboolean证书是否存在

更新证书

接口: certUpdate

打开当前用户的证书更新流程。

调用示例

typescript
const result = await BJCASDK.certManager().certUpdate()

参数: 无。

返回结果

返回类型:Promise<YwxResult<CertificateResult>>。

成功 data 为 CertificateResult,action 为 UPDATE;未到更新条件返回 1007。

CertificateResult 字段见对应返回说明。

重置签名密码

接口: certResetPin

打开签名 PIN 重置流程。

调用示例

typescript
const result = await BJCASDK.certManager().certResetPin()

参数: 无。

返回结果

返回类型:Promise<YwxResult<CertificateResult>>。

成功 data 为 CertificateResult,action 为 RESET_PIN。

CertificateResult 字段见对应返回说明。

查看证书详情

接口: showCert

打开 SDK 证书详情页面。

调用示例

typescript
const result = await BJCASDK.certManager().showCert()

参数: 无。

返回结果

返回类型:Promise<YwxResult<CertificateResult>>。

成功 data 为 CertificateResult,action 为 VIEW。

CertificateResult 字段见对应返回说明。

获取用户信息

接口: getUserInfo

查询当前证书用户的资料。

调用示例

typescript
const result = await BJCASDK.certManager().getUserInfo()

参数: 无。

返回结果

返回类型:Promise<YwxResult<UserInfo>>。

成功 data 为 UserInfo。

UserInfo 字段

字段类型说明
openIdstring用户 OpenId
userNamestring姓名
startDate / endDate / nowDatestring证书起止日期与当前日期
deviceIdstring设备标识
idCardNum / idCardTypestring证件号码与类型
phoneNumstring手机号
picUrlstring图片地址
enableCertboolean证书服务是否启用
existsStampboolean是否存在签章
deviceFitboolean设备是否匹配
certUpdateTipDaynumber证书更新提示天数,默认 30

显示 PIN 输入框

接口: showPinWindow

打开 SDK PIN 输入窗口并取得输入结果。

调用示例

typescript
const result = await BJCASDK.signManager().showPinWindow()

参数: 无。

返回结果

返回类型:Promise<YwxResult<PinResult>>。

成功 data 为 PinResult;已有 PIN 窗口时为 1017,取消为 3000。

PinResult 字段

字段类型说明
pinstring输入的 PIN,非输入完成路径可为空字符串
encodedPinstring用于业务传输的 PIN 值,非输入完成路径可为空字符串
pinExemptboolean免密是否开启
biometricStateFingerSignStateON 或 OFF

关闭 PIN 输入框

接口: hidePinWindow

关闭已显示的 SDK PIN 输入窗口。

调用示例

typescript
const result = await BJCASDK.signManager().hidePinWindow()

参数: 无。

返回结果

返回类型:Promise<YwxResult<PinResult>>。

成功 data 为 PinResult,其中 pin、encodedPin 为空字符串。

PinResult 字段见对应返回说明。

获取签章图片

接口: getStampPic

读取当前用户的 Base64 签章图片。

调用示例

typescript
const result = await BJCASDK.signManager().getStampPic()

参数: 无。

返回结果

返回类型:Promise<YwxResult<StampResult>>。

成功 data 为 StampResult,读取 stampPic;无签章为 1002。

StampResult 字段

字段类型说明
stampPicstringBase64 签章图片
fromCacheboolean是否来自缓存

设置签章图片

接口: drawStamp

打开 SDK 手写签章页面并保存签章。

调用示例

typescript
const result = await BJCASDK.signManager().drawStamp()

参数: 无。

返回结果

返回类型:Promise<YwxResult<StampResult>>。

成功 data 为 StampResult;用户取消为 3000。

StampResult 字段见对应返回说明。

签署待签数据

接口: sign

对服务端生成的待签 ID 列表完成签署。

调用示例

typescript
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
}
参数类型说明
uniqueIdsstring[]|null|undefined服务端生成的待签 ID 数组,1~100 项

返回结果

返回类型:Promise<YwxResult<SignatureResult>>。

成功 data 为 SignatureResult,包含 uniqueIds、failedUniqueIds;待签 ID 数量范围为 1~100。

SignatureResult 字段

字段类型说明
uniqueIdsstring[]签署成功的待签 ID
failedUniqueIdsstring[]签署失败的待签 ID
stampPicstringBase64 签章图片

协同签名

接口: teamSign

对协同签名业务的待签 ID 列表完成签署。

调用示例

typescript
const result = await BJCASDK.signManager().teamSign(uniqueIds)
参数类型说明
uniqueIdsstring[]|null|undefined服务端生成的待签 ID 数组,1~100 项

返回结果

返回类型:Promise<YwxResult<SignatureResult>>。

成功 data 为 SignatureResult,包含 uniqueIds、failedUniqueIds。

SignatureResult 字段见对应返回说明。

授权他人签名

接口: grantSignature

向指定用户授予限定时长的签名权限。

调用示例

typescript
const result = await BJCASDK.signManager().grantSignature(grantedUserId, hours)
参数类型说明
grantedUserIdstring|null|undefined被授权用户 ID
hoursnumber|null|undefined授权时长,单位小时

返回结果

返回类型:Promise<YwxResult<GrantResult>>。

成功 data 为 GrantResult,包含 grantedUserId、hours;hours 为正整数小时。

GrantResult 字段

字段类型说明
grantedUserIdstring被授权用户 ID
hoursnumber授权时长,单位小时

开启免密签名

接口: keepPin

校验 PIN 并设置免密有效天数。

调用示例

typescript
const result = await BJCASDK.signManager().keepPin(keepDays)
参数类型说明
keepDaysnumber|null|undefined免密有效天数,1~60

返回结果

返回类型:Promise<YwxResult<PinResult>>。

成功 data 为 PinResult;keepDays 为 1~60,参数错误为 1003 或 1008。

PinResult 字段见对应返回说明。

关闭免密签名

接口: clearPin

关闭免密签名。

调用示例

typescript
const result = await BJCASDK.signManager().clearPin()

参数: 无。

返回结果

返回类型:Promise<YwxResult<boolean>>。

成功 data 为 true。

查询免密状态

接口: isPinExempt

读取当前用户是否已开启免密签名。

调用示例

typescript
const result = BJCASDK.signManager().isPinExempt()

参数: 无。

返回结果

返回类型:YwxResult<boolean>。

成功 data 为 boolean。

查询可用生物识别类型

接口: getSupportedBiometricTypes

获取设备当前可用于签名认证的指纹或人脸类型。

调用示例

typescript
const result = await BJCASDK.signManager().getSupportedBiometricTypes()

参数: 无。

返回结果

返回类型:Promise<YwxResult<BiometricType[]>>。

成功 data 为 BiometricType[];无可用类型时为空数组。

BiometricType 取值

枚举值含义
BiometricType.Fingerprintfingerprint指纹
BiometricType.Faceface人脸

开启生物识别签名

接口: openBiometric

通过 PIN 校验与系统生物认证开启签名授权。

调用示例

typescript
const result = await BJCASDK.signManager().openBiometric(type)
参数类型说明
typeBiometricType|null|undefined生物识别类型

返回结果

返回类型:Promise<YwxResult<PinResult>>。

成功 data 为 PinResult;类型取 Fingerprint 或 Face,取消为 3000。

PinResult 字段见对应返回说明。

关闭生物识别签名

接口: closeBiometric

关闭生物识别签名。

调用示例

typescript
const result = await BJCASDK.signManager().closeBiometric()

参数: 无。

返回结果

返回类型:Promise<YwxResult<PinResult>>。

成功 data 为 PinResult。

PinResult 字段见对应返回说明。

查询生物识别状态

接口: isBiometric

读取当前用户的生物识别签名开关状态。

调用示例

typescript
const result = BJCASDK.signManager().isBiometric()

参数: 无。

返回结果

返回类型:YwxResult<FingerSignState>。

成功 data 为 FingerSignState.ON 或 FingerSignState.OFF。

处理业务二维码

接口: qrDispose

接收扫码文本并执行签名或授权登录流程。

调用示例

typescript
const result = await BJCASDK.signManager().qrDispose(qrText, handleGrantedOauth)
参数类型说明
qrTextstring|null|undefined扫码取得的完整文本
handleGrantedOauthboolean = true是否返回授权登录候选用户,默认 true

返回结果

返回类型:Promise<YwxResult<QrCodeResult>>。

成功 data 为 QrCodeResult;二维码不支持为 2002,平台不匹配为 1020。授权登录返回 oauth.selectionRequired=true 时,从 oauth.grantedUsers 选择用户,再调用 startOauthLogin。

QrCodeResult 字段

字段类型说明
sceneQrSceneSIGN、OAUTH、OAUTH_SIGN、OAUTH_BATCH_SIGN 或 AUTO_SIGN
signatureSignatureResult 或 null签署结果
oauthOAuthResult 或 null授权登录结果
autoSignAutoSignResult 或 null自动签结果

嵌套结果:SignatureResult、OAuthResult、AutoSignResult。

完成授权登录

接口: startOauthLogin

根据授权请求和所选授权人完成登录流程。

调用示例

typescript
const result = await BJCASDK.signManager().startOauthLogin(uuid, grantOpenId, grantUserName)
参数类型说明
uuidstring|null|undefined授权登录请求 ID
grantOpenIdstring|null|undefined可选;所选授权人的 OpenId
grantUserNamestring|null|undefined可选;所选授权人的姓名

返回结果

返回类型:Promise<YwxResult<OAuthResult>>。

成功 data 为 OAuthResult,selectionRequired 为 false。

OAuthResult 字段

字段类型说明
requestIdstring授权请求 ID
selectionRequiredboolean是否需要选择授权人
grantedUsersGrantedUser[]可选授权人列表

GrantedUser 字段

字段类型说明
grantDoctorNamestring授权人姓名
grantedDoctorNamestring被授权人姓名
startTime / endTimestring授权起止时间
grantUniqueIdstring授权唯一 ID
openIdstring用户 OpenId

开启自动签名

接口: startAutoSign

打开自动签名授权流程。

调用示例

typescript
const result = await BJCASDK.signManager().startAutoSign(systemTag)
参数类型说明
systemTagstring|null|undefined业务系统标识,未指定时传 undefined

返回结果

返回类型:Promise<YwxResult<AutoSignResult>>。

成功 data 为 AutoSignResult;未指定 systemTag 时显式传 undefined。

AutoSignResult 字段

字段类型说明
selfSignSessionAutoSignSession 或 null自动签授权信息
signTotalnumber签名次数

AutoSignSession 字段

字段类型说明
clientIdstringSDK 当前应用 clientId
clientNamestring厂商名称
endTimestring授权结束时间
sdkbooleanSDK 自动签标识
sysTagsstring[]业务系统标识列表
versionstring版本号

查询自动签名信息

接口: getSignAutoInfo

查询当前用户的自动签授权信息。

调用示例

typescript
const result = await BJCASDK.signManager().getSignAutoInfo()

参数: 无。

返回结果

返回类型:Promise<YwxResult<AutoSignResult>>。

成功 data 为 AutoSignResult;未开通或未匹配授权为 003x043,data 为 null。

AutoSignResult 字段见对应返回说明。

关闭自动签名

接口: stopAutoSign

关闭指定业务系统的自动签授权。

调用示例

typescript
const result = await BJCASDK.signManager().stopAutoSign(systemTag)
参数类型说明
systemTagstring|null|undefined业务系统标识,未指定时传 undefined

返回结果

返回类型:Promise<YwxResult<AutoSignResult>>。

成功 data 为 null;关闭全部业务系统时传 undefined,否则传 systemTag。

AutoSignResult 字段见对应返回说明。

错误码

YwxErrorCode成员值含义
CERT_NOT_EXISTS_LOCAL1001本地证书/证书身份不可用
SIGN_NOT_STAMP1002签章不存在;certDown 参数错误详见接口返回
PARAMS_NULL1003参数缺失/格式不合法
PERMISSION_REFUSE1004权限拒绝
BATCH_COUNT_ERROR1006批量签名超100
CERT_UPDATE_TIME_NOT_ALLOW1007未满足更新条件
PIN_KEEP_DAY_ERROR1008免密天数条件不符
PHONE_ERROR1009手机号错误
FINGER_SIGN_STATE_ON1011生物认证已开启
FINGER_SIGN_STATE_OFF1012生物认证已关闭
PIN_RESET_SUCCESS1013PIN重置状态提示
CERT_NOT_SERVER1014服务端证书不存在
USER_DIFFERENT1015当前用户与证书不匹配
CONTEXT_CHANGED1016配置/身份上下文变化
SDK_BUSY1017SDK活动流程/初始化忙
SDK_INTERNAL_ERROR1018SDK 处理失败
BIOMETRIC_AUTH_FAILED1019生物识别能力或认证失败
QR_PLATFORM_MISMATCH1020二维码平台不符
SDK_NOT_CONFIGURED1021必需配置未完成
SDK_STORAGE_UNAVAILABLE1023安全存储/日志导出不可用
SDK_PROCESS_UNSUPPORTED1025进程模式不支持
CA_CHANNEL_UNSUPPORTED1026渠道不支持
SDK_RUNTIME_UNSUPPORTED1027运行环境/UI绑定不支持
DEVICE_ID_UNAVAILABLE1028可靠设备标识不可用
ERROR_NET2001网络或响应失败
QR_VERIFY_ERROR2002二维码校验失败
QR_VERIFY_GRANT_ERROR2003二维码授权处理失败
CANCEL3000用户取消

升级指引

必做配置

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() 判断成功。

typescript
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.coderesult.status
result.msgresult.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 读取文件路径