# HarmonyOS Wallet Kit:用你的APP当车钥匙和交通卡
什么是 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 // 交通卡页面车钥匙添加流程
下面是添加车钥匙到华为钱包的完整流程:
车钥匙使用流程
下面是车钥匙的"芯-端-云"协作流程:
第一步:导入模块
import{common}from'@kit.AbilityKit';import{walletPass}from'@kit.WalletKit';import{BusinessError}from'@kit.BasicServicesKit';导入 Wallet Kit 相关模块:
walletPass:钱包 Pass 卡的核心接口common:AbilityKit 的通用接口BusinessError:错误处理
第二步:创建 WalletPassClient
@Entry@Componentstruct Pass{privateWalletPassClient:walletPass.WalletPassClient=newwalletPass.WalletPassClient(this.getUIContext().getHostContext()ascommon.UIAbilityContext);privatejweContent:string='';// 车主服务器生成的JWE数据创建WalletPassClient实例。这个客户端用来和钱包服务交互,添加车钥匙或交通卡。
jweContent是一个 JWE(JSON Web Encryption)格式的字符串,包含了车钥匙的加密数据。这个数据需要从车主服务器获取。
第三步:添加车钥匙
asyncaddPass(){letpassStr=JSON.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(){letcardStr=JSON.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(balance<10){awaitrecharge(50);}}门禁卡
// 把门禁卡添加到钱包asyncfunctionaddAccessCard(){letcardData=awaitgetAccessCardData();awaitWalletPassClient.addPass(JSON.stringify({cardData}));}适用场景
Wallet Kit 特别适合以下场景:
- 汽车厂商:为用户提供数字车钥匙
- 交通公司:为用户提供电子交通卡
- 物业公司:为用户提供电子门禁卡
- 酒店:为用户提供电子房卡
注意事项
- 设备支持:不是所有设备都支持 Wallet Kit,要先确认设备兼容性
- 安全要求:车钥匙涉及安全,要确保密钥的安全存储
- JWE 数据:JWE 数据必须从车主服务器获取,不能在客户端生成
- 蓝牙支持:车钥匙功能需要蓝牙支持
- 网络要求:添加车钥匙需要网络连接
总结
Wallet Kit 让你的手机变成车钥匙和交通卡,核心流程:
- 从车主服务器获取 JWE 数据
- 创建 WalletPassClient 实例
- 调用 addPass() 添加车钥匙到华为钱包
- 用户在华为钱包中使用车钥匙
掌握了这些,你就能为你的应用添加数字车钥匙和交通卡功能,让用户的生活更便捷。
