目录

功能实现

获取AccessToken

DK业务管理服务向钱包云服务的每次https请求都需要传入访问的token,该token相当于一个访问许可,钱包云服务器收到其请求时会其进行校验;在预置模板、个人领取-申请ICCE钥匙-生成钥匙卡片中会使用到token。
  • 数据流向:

    DK业务管理服务->钱包云服务。

  • 环境URL:

    https://oauth-login.cloud.huawei.com/oauth2/v3/token

  • 请求方式:

    POST

  • 请求头:

    参数

    是否必选

    参数类型

    描述

    Content-Type

    是

    String

    固定值:application/x-www-form-urlencoded

  • 请求体:
    grant_type=client_credentials&client_id=<客户端ID>&client_secret=<客户端密钥>

    参数说明:

    参数名称

    是否必选

    描述

    grant_type

    是

    填写为“client_credentials”,表示为客户端模式。

    client_id

    是

    在接入前准备中得到的OAuth 2.0客户端ID,对于AppGallery Connect类应用,该值为应用的Client ID。

    client_secret

    是

    在接入前准备中给客户端ID分配的密钥,对于AppGallery Connect类应用,该值为应用的Client SECRET。

  • 返回值:
    {
        "access_token": "<返回的Access Token>",
        "expires_in": 3600,
        "token_type": "Bearer"
    }
  • 错误码:

    见错误与异常机制。

  • 示例代码

    NetWorkService#getToken(String clientId, String clientSecret)

预置模板

卡片模板的创建是接入流程的第一步,这一步您将会通过http/https请求的方式向华为钱包云服务提供卡券样式的关键信息,如卡面主标题、副标题、logo、背景图片等;用于华为钱包钥匙页面的展示。

您可以创建多个模板,它们有着相同的机构名和服务号,而模板ID不同;当您申请车钥匙时,每一张卡必须和唯一的模板ID关联;即一个模板可供多张钥匙使用,而一张钥匙只能使用一个模板ID。

个人领取

DK业务管理服务向钱包云服务器申请开通ICCE数字车钥匙,其中包括,申请添加车钥匙前检查当前手机是否支持开通ICCE数字车钥匙、生成车钥匙卡片以及拉起华为钱包app车钥匙开通页面。

[h2]添加前的检查

在申请添加钥匙之前,您需要先检查当前设备是否支持开通ICCE车钥匙。

[h2]申请ICCE钥匙

车主APP向DK业务管理服务申请开通ICCE车钥匙,DK业务管理服务将车钥匙卡片信息添加至钱包云服务中;其中:车主APP->DK业务管理服务之间的交互由车厂自行实现,本章主要侧重于DK业务管理服务->钱包云服务申请ICCE车钥匙的过程,主要包括:申请钥匙卡片和生成JWE数据。

1.申请钥匙卡片

DK业务管理服务向华为钱包云服务请求创建车钥匙卡片。

2.生成JWE数据

华为钱包车钥匙卡片的开通是基于JWE方式。因此DK业务管理服务向钱包云服务申请创建车钥匙成功后,基于创建成功的车钥匙serialNumber生成JWE数据,并将其返回给车厂app,如下所示:

JWE串包含JWE Encrypted Key,iv,Ciphertext,signature;可参见如下步骤:

  1. 生成一个随机的Content Encryption Key(CEK)。
  2. 使用RSAES-OAEP 加密算法,用钱包服务器给的公钥加密CEK,生成JWE Encrypted Key。 ·
  3. 生成JWE初始化向量。 ·
  4. 使用AES GCM加密算法对明文部分进行加密生成密文Ciphertext,算法会随之生成一128位的认证标记 Authentication Tag。对以上部分分别进行base64编码。
  5. Signature 是使用 AGC上创建卡片服务生成的私钥对以上部分进行的签名。

[h2]添加ICCE车钥匙

车主APP获取到DK业务管理服务生成的JWE数据,通过Schema方式将JWE数据透传给华为钱包APP。

开通激活

拉起华为钱包车钥匙开通页面后,用户点击“立即开通”后,华为钱包会向DK业务管理服务进行钥匙的开通和激活,其中需要和DK业务管理服务进行交互的包括:设备的认证(和车钥匙管理台交换证书信息)、获取请求个人化数据时的token(用于向车钥匙管理台请求Applet个人化数据)、以及最后的请求Applet个人化数据。

[h2]设备认证

预个人化执行完成后,华为钱包APP经由钱包云服务中转后请求认证设备,将applet身份公钥以及身份公钥的钱包服务器签名携带在请求体中,向DK业务管理服务请求DK业务管理服务认证授权证书。

[h2]获取个人化数据Token

华为钱包APP经由钱包云服务中转后向DK业务管理服务平台获取token(个人化数据请求报文里参与计算hash)。

[h2]获取个人化数据

华为钱包APP经由钱包云服务中转后向DK业务管理服务获取个人化数据。

卡片更新

DK业务管理服务更新通知信息(同一实例下的个人化数据)到钱包云服务器,再由钱包云服务器推送给钱包APP。

卡片删除

华为钱包ICCE车钥匙提供了两个删除入口,第一个是用户从华为钱包的车钥匙详情页删除,另一个是DK业务管理服务通过云侧接口进行车钥匙的删除。

[h2]华为钱包删卡

当用户从华为钱包的车钥匙详情页点击删除卡片时,会触发卡片删除的流程

[h2]车钥匙管理台删卡

DK业务管理服务可通过华为钱包云服务接口,触发车钥匙的删除;该部分复用卡券局部更新接口。

卡片冻结、解冻

DK业务管理服务可通过华为钱包云服务接口,触发车钥匙的冻结和解冻;该部分复用卡券局部更新接口。
  • 数据流向:

    DK业务管理服务->钱包云服务->华为钱包 APP。

  • 环境URL:

    https://wallet-passentrust-drcn.cloud.huawei.com.cn/hmspass/v2/{cardType}/instance/{instanceId}

    参数

    是否必选

    参数类型

    描述

    cardType

    是

    String

    开发者根据卡券类型自行选择,请参见当前支持的其他卡券类型。在车钥匙场景中,该值为key_stdcar

    instanceId

    是

    String

    个人化实例的唯一标识符。这个ID在同一个appId下唯一。这个ID只能包含字母、数字和(.)、(-)、(_)。在该场景中,该值对应为卡券的serialNumber

  • 请求方式:

    PATCH

  • 请求头:

    参数

    是否必选

    参数类型

    描述

    Authorization

    是

    String

    将获取到的“access_token”的值拼接在字符串“Bearer”之后,以空格符相隔,组成“Authorization”参数的值。参考获取AccessToken

    Content-Type

    是

    String

    固定值:"application/json;charset=utf-8"。

    Accept

    是

    String

    固定值:"application/json;charset=utf-8"。

  • 请求体:

    1)冻结

    {
      "fields": {
        "status": {
          "state": "freeze"
        }
      }
    }
    2)解冻
    {
      "fields": {
        "status": {
          "state": "active",
          "effectTime": "2020-04-06T00:00:00Z",
          "expireTime": "2040-04-06T00:00:00Z"
        }
      }
    }

    参数

    参数类型

    描述

    state

    String

    freeze:冻结、active:解冻

  • 返回值:

    错误码为200时,返回更新的卡券实例。

    参数

    参数类型

    描述

    详见HwWalletObject参数描述

    HwWalletObject

    已更新的卡券实例

  • 错误码:

    见错误码

  • 示例代码:

    StdCarKeyInstanceTest#partialUpdateStdCarKeyInstance()

车厂自由业务云云对接接口

开卡结果通知

[h2]云侧接口

华为钱包云会将车钥匙的开通结果,通过车厂在AGC平台配置的NFC回调地址通知到DK业务管理服务,DK业务管理服务收到该回调后进行后续的处理。

[h2]端侧接口

端侧卡片状态发生变更后,支持发送端侧广播,车厂App可以通过监听广播获取状态; 华为钱包APP发送全局的普通广播,车厂APP动态注册广播,指定接收广播的车厂APP。