目录

查询上架自检报告信息

功能介绍

此接口用于查询邀请测试进行上架自检的报告信息。如果自检未通过,可以从返回参数reportUrl中获取自检报告。

接口原型

承载协议

HTTPS GET

接口方向

服务商服务器 -> 华为服务器

接口URL

https://connect-api.cloud.huawei.com/api/publish/v2/test/app/version/detect-report

数据格式

请求:Content-Type: application/json

响应:Content-Type: application/json

请求参数

[h2]Header

参数

必选(M)/可选(O)

类型

说明

client_id

M

String

API客户端ID。

创建第三方平台成功后系统自动分配的客户端ID,可在第三方管理平台“开发配置 > 开发资料设置”页面中获取,详情请参见获取平台访问凭据。

Authorization

M

String

认证信息。

格式为“Authorization: Bearer ${access_token}”。

其中,${access_token}为获取平台级Token中获取的access_token。

[h2]Query

参数名称

必选(M)/可选(O)

类型

参数说明

appId

M

String(32)

应用ID。

versionId

M

String(32)

测试版本ID。

可从新建测试版本接口返回的versionId参数中获取。

请求示例

 GET /api/publish/v2/test/app/version/detect-report?appId=6917********65&versionId=76********08 HTTP/1.1 
 Host: connect-api.cloud.huawei.com 
 client_id: 4141******68 
 Content-Type: application/json 
 Authorization: Bearer ******* 

响应参数

参数名称

必选(M)/可选(O)

类型

参数说明

ret

M

String(100)

包含返回码及描述信息的JSON字符串,格式为{"code":retcode, "msg": "description"},retcode为返回码,description为返回码描述信息。返回码请参见错误码。

state

M

Integer

邀请测试进行上架前自检的任务状态。

取值范围:

  • -1:自检任务已失效
  • 0:自检任务待处理
  • 1:自检任务处理中
  • 2:自检已通过
  • 3:自检未通过

reportUrl

O

String

自检报告链接。点击链接后,需要登录商户的HarmonyOS 开发者中心账号查看。

说明:

仅当state为3(自检未通过)时,返回该参数。

响应示例

{
  "ret": {
    "code": 0,
    "msg": "success"
  },
  "state": 3,
  "reportUrl": "https://****"
}

其他说明

应用上架自检结果通知回调

应用上架自检结果推送,用于将应用上架自检结果告知服务商。

承载协议

HTTPS POST

接口方向

华为服务器 -> 服务商服务器

接口URL

第三方管理平台上配置的华为服务器回调服务商服务器的回调域名(“回调URL”),您需自行保证地址为https开头的合法URL地址,具体请参见消息与事件接收URL。

数据格式

请求消息:Content-Type: application/json

响应消息:Content-Type: application/json

请求参数

[h2]Header

参数

必选(M)/可选(O)

类型

描述

notifyType

M

String(32)

回调类型。

取值范围:

  • onshelfSelfDetect:上架自检状态变更

signatureRSAWithPSS

M

String

华为服务器在发送通知时对Body体中的参数使用SHA256WithRSA/PSS算法进行了签名,并在signatureRSAWithPSS中返回签名后的字符串。

您需要使用消息与事件接收信息中获取的验签公钥对签名字符串进行验签,验签方法参见验签示例。

[h2]Body

参数

必选(M)/可选(O)

类型

描述

appId

M

String

应用ID。

versionId

M

String

测试版本ID。

taskId

M

String

应用软件包构建任务ID。

result

M

String

检测结果。

  • -1:检测任务超时
  • 2:检测通过
  • 3:检测不通过

请求示例

{
  "appId": "6917********65",
  "versionId": "76********08",
  "taskId": "*******",
  "result": "2"
 }

响应参数

服务商收到第三方管理平台服务端的POST请求后,需返回HTTP状态码200,标识回调成功。

验签示例

/*
@content 待验签字符串,传入callBackData中携带的JSON字符串
@sign  签名字符串
*/
private static void verifySignature(String content, String sign) {
    try{
        String pubKey = "消息验证公钥";     //替换为您在第三方管理平台中实际的消息验证公钥。 
        X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(pubKey));
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
        Signature signature = Signature.getInstance("SHA256WithRSA/PSS");
        signature.initVerify(publicKey);
        signature.update(content.getBytes(Charset.forName("UTF-8")));
        if(!signature.verify(Base64.decodeBase64(sign))) {
            throw new ConnectException(EnumReturnCode.INVALID_PARAMETER, "Failed to verifySignature");
        }
    } catch(NoSuchAlgorithmException | SignatureException | InvalidKeyException | InvalidKeySpecException e) {
        LOG.error("verify signature failed", e);
        throw new ConnectException(EnumReturnCode.INVALID_PARAMETER, "Failed to verifySignature");
    } catch(Exception e) {
        LOG.error("verify signature failed", e);
        throw new ConnectException(EnumReturnCode.INVALID_PARAMETER, "Failed to verifySignature");
    }
}