什么是 Wallet Kit你有没有想过用手机开车门或者用手机刷地铁Wallet Kit 就是让这些变成现实的工具。Wallet Kit钱包服务集成了华为芯-端-云全栈技术可以实现车钥匙、交通卡的凭证电子化。简单说就是把你的车钥匙和交通卡装进手机里。想象一下你走到车旁边手机拿出来一点车门就开了坐地铁的时候手机碰一下闸机就过了。这就是 Wallet Kit 要实现的场景。核心功能Wallet Kit 提供以下功能车钥匙把车钥匙模拟到手机里用手机开车门。你走到车旁边手机拿出来一刷车门就开了。车钥匙的实现涉及芯-端-云三个层面车主服务器生成加密的 JWE 数据Wallet Kit 把数据添加到华为钱包安全芯片存储密钥保证安全。整个过程不需要带实体钥匙手机就是你的钥匙交通卡把交通卡保存到手机里用手机刷地铁公交。坐地铁的时候手机碰一下闸机就过了和刷实体卡一样方便。交通卡的数据也存在安全芯片里即使手机没电了部分机型支持也能刷卡进站环境搭建硬件要求设备类型华为手机HarmonyOS 系统HarmonyOS NEXT Developer Beta1 及以上软件要求DevEco Studio 版本DevEco Studio 6.0.0 Release 及以上HarmonyOS SDK 版本HarmonyOS 6.0.0 Release SDK 及以上搭建步骤安装 DevEco Studio去华为开发者官网下载安装配置开发环境确保网络环境正常设备调试使用真机进行调试项目结构├── entry/src/main/ets │ ├── application/AbilityStage.ts │ ├── common // 页面工具类 │ ├── components // 页面组件 │ ├── mainability/MainAbility.ts // 本地启动ability │ └── pages │ ├── Index.ets // 首页 │ └── wallet │ ├── ICCECallBack.ets // ICCE工具类 │ ├── Pass.ets // Pass卡页面 │ └── TransitCard.ets // 交通卡页面车钥匙添加流程下面是添加车钥匙到华为钱包的完整流程用户在车主 APP 申请车钥匙车主服务器生成 JWE 数据创建 WalletPassClient 实例封装 JWE 数据为 JSON调用 addPass 方法Wallet Kit 处理请求数据存储到安全芯片车钥匙添加成功华为钱包显示车钥匙车钥匙使用流程下面是车钥匙的芯-端-云协作流程是否用户靠近车辆手机蓝牙检测到车辆安全芯片验证密钥密钥是否有效?发送解锁指令验证失败车辆解锁华为云记录使用日志第一步导入模块import{common}fromkit.AbilityKit;import{walletPass}fromkit.WalletKit;import{BusinessError}fromkit.BasicServicesKit;导入 Wallet Kit 相关模块walletPass钱包 Pass 卡的核心接口commonAbilityKit 的通用接口BusinessError错误处理第二步创建 WalletPassClientEntryComponentstruct Pass{privateWalletPassClient:walletPass.WalletPassClientnewwalletPass.WalletPassClient(this.getUIContext().getHostContext()ascommon.UIAbilityContext);privatejweContent:string;// 车主服务器生成的JWE数据创建WalletPassClient实例。这个客户端用来和钱包服务交互添加车钥匙或交通卡。jweContent是一个 JWEJSON Web Encryption格式的字符串包含了车钥匙的加密数据。这个数据需要从车主服务器获取。第三步添加车钥匙asyncaddPass(){letpassStrJSON.stringify({jweContent:this.jweContent})this.WalletPassClient.addPass(passStr).then((result:string){console.info(Succeeded in adding pass, result:${result});}).catch((err:BusinessError){console.error(Failed to add pass, code:${err.code}, message:${err.message});})}调用addPass()方法添加车钥匙把 JWE 数据包装成 JSON 字符串调用WalletPassClient.addPass()发送到钱包服务成功后车钥匙就会出现在华为钱包里车钥匙的工作原理车钥匙的实现涉及芯-端-云三个层面云端车主服务器生成车钥匙的 JWE 数据华为云验证和存储车钥匙信息手机端Wallet Kit管理车钥匙的添加和使用华为钱包展示车钥匙界面芯片层安全芯片存储车钥匙的密钥保证安全完整流程申请车钥匙用户在车主 APP 中申请车钥匙生成 JWE车主服务器生成 JWE 数据添加到钱包通过 Wallet Kit 把车钥匙添加到华为钱包使用车钥匙用户靠近车辆时手机自动与车辆通信完成解锁交通卡交通卡的实现类似也是通过 Wallet Kit 把卡片信息添加到华为钱包。// 添加交通卡的代码类似asyncaddTransitCard(){letcardStrJSON.stringify({cardData:this.cardData// 交通卡数据});this.WalletPassClient.addPass(cardStr).then((result:string){console.info(Succeeded in adding transit card, result:${result});}).catch((err:BusinessError){console.error(Failed to add transit card, code:${err.code}, message:${err.message});});}实际应用场景Wallet Kit 在实际开发中有很多用途数字车钥匙// 用户靠近车辆时自动解锁asyncfunctionunlockCar(){// 通过蓝牙与车辆通信// 发送解锁指令}交通卡充值// 交通卡余额不足时自动充值asyncfunctionautoRecharge(){if(balance10){awaitrecharge(50);}}门禁卡// 把门禁卡添加到钱包asyncfunctionaddAccessCard(){letcardDataawaitgetAccessCardData();awaitWalletPassClient.addPass(JSON.stringify({cardData}));}适用场景Wallet Kit 特别适合以下场景汽车厂商为用户提供数字车钥匙交通公司为用户提供电子交通卡物业公司为用户提供电子门禁卡酒店为用户提供电子房卡注意事项设备支持不是所有设备都支持 Wallet Kit要先确认设备兼容性安全要求车钥匙涉及安全要确保密钥的安全存储JWE 数据JWE 数据必须从车主服务器获取不能在客户端生成蓝牙支持车钥匙功能需要蓝牙支持网络要求添加车钥匙需要网络连接总结Wallet Kit 让你的手机变成车钥匙和交通卡核心流程从车主服务器获取 JWE 数据创建 WalletPassClient 实例调用 addPass() 添加车钥匙到华为钱包用户在华为钱包中使用车钥匙掌握了这些你就能为你的应用添加数字车钥匙和交通卡功能让用户的生活更便捷。