/** * 扫码初始化选项 */ interface ScanConfigOptions { /** * 网页扫码canvas是否启用,默认启用 */ webCanvasEnabled?: boolean, /** * 网页扫码canvas样式,默认:position: fixed; width: 300px; height: 300px; top: 0; left: 0; z-index: 9999; */ webScanCanvasStyle?: string, /** * 网页扫码类型,默认支持二维码和条码 */ webScanType?: ('qrCode' | 'barCode')[], /** * 网页扫码视频是否镜像,默认自动判断:前置/PC镜像,后置不镜像 */ webScanVideoMirror?: boolean, /** * 网页扫码视频是否垂直镜像,默认不镜像 */ webScanVideoMirrorVertical?: boolean, /** * 网页扫码成功提示音地址,默认使用内置提示音 */ webScanBeepAudio?: string, /** * 网页扫码成功提示音是否启用,默认启用 */ webScanBeepEnabled?: boolean, /** * 微信JSSDK配置,微信环境才会生效,配置后会自动初始化微信JSSDK */ initWechatJssdk: { /** * 微信JSSDK配置API地址,调用接口会带上当前页面url作为参数 */ apiUrl: string, /** * 微信JSSDK配置参数,不配置则自动获取 */ sdkConfig?: { /** * 是否开启调试模式 */ debug?: boolean, /** * 微信公众平台应用ID */ appId: string, /** * 时间戳 */ timestamp: number, /** * 随机字符串 */ nonceStr: string, /** * 签名 */ signature: string, }, /** * 微信JSSDK配置SDK地址,默认为https://res.wx.qq.com/open/js/jweixin-1.6.0.js */ sdkUrl?: string, /** * 微信JSSDK配置JS-API列表,默认追加["scanQRCode"] */ jsApiList?: string[] } } /** * 扫码选项 */ interface ScanResult { result: string, key: string } /** * 监听key */ interface ScanListenerInfo { /** * 监听key */ key?: string; /** * 监听匹配 */ match?: string; /** * 监听级别 */ level?: number; /** * 监听回调 */ listener: ScanCallback; /** * 取消监听 */ cancel: () => void; } /** * 监听状态 */ type ScanStatus = "scanning" | "closed"; /** * 监听结果回调 */ type ScanResultCallback = (result: ScanResult) => any; /** * 监听状态回调 */ type ScanStatusCallback = (status: ScanStatus) => any; /** IScan */ interface IScan { /** * 配置SDK * @param options 配置选项 */ config(options?: ScanConfigOptions): Promise; /** * 监听扫码状态 * @param callback 监听回调 */ setStatusListener(callback: ScanStatusCallback): void; /** * 添加监听扫码结果 * @param callback 监听回调 * @param key 监听key * @param match 监听匹配 * @param level 监听级别 */ onScanListener(callback: ScanResultCallback, key: string, match?: string, level?: number): ScanListenerInfo; /** * 取消监听扫码结果 * @param callback 监听回调,或监听key */ offScanListener(callback: ScanResultCallback | string): void; /** * 获取扫码状态 * @returns ScanStatus */ getStatus(): ScanStatus; /** * 关闭扫码 */ stopScan(): void; /** * 开启扫码 */ startScan(): void; /** * 开启视频扫码 */ scanVideo(): void; /** * 选择图片进行识别 */ scanImage(): void; /** * 清除全部监听 */ clear(): void; } /** * IScan 实例 */ declare var IScan: IScan; /** * 将 IScan 实例挂载到 Window 对象上 * 方便在全局使用 */ declare interface Window { IScan: IScan; }