目录

提交发布

功能介绍

此接口用于提交元服务审核,调用本接口前必须保证应用信息已补充完整,应用软件包已经上传。

软件包采用异步解析方式,请您在传包后等候2分钟再调用提交发布接口。

接口原型

承载协议

HTTPS POST

接口方向

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

接口URL

https://connect-api.cloud.huawei.com/api/publish/v3/app-submit

数据格式

请求: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。

[h2]Body

Body中使用JSON格式携带发布信息,参数如下表所示。

参数名称

必选(M)/可选(O)

类型

参数说明

releaseTime

O

String(64)

指定发布时间。

此字段为保留字段,实际未使用。

UTC时间格式:yyyy-MM-ddTHH:mm:ssZZ,例如“2015-01-01T01:01:01+0800”。

可以不用填写,则表示立刻发布。

remark

O

String(300)

提审发布备注。

可以为空。如果填写,长度范围在10-300。

releaseType

O

Integer

应用发布方式。

取值范围:

  • 1:全网

默认值:1

请求示例

POST /api/publish/v3/app-submit HTTP/1.1
Host: connect-api.cloud.huawei.com
client_id: 414*******68
Content-Type: application/json; 
Authorization: Bearer *****
appId: 1******57
{
  "releaseTime": "2015-01-01T01:01:01+0800",
  "remark": "",
  "releaseType": 1
}

响应参数

参数名称

必选(M)/可选(O)

类型

参数说明

ret

M

ConnectRet

包含返回码及描述信息的结果。

响应示例

{
    "ret": {
        "code": 0,
        "msg": "success"
    }
}

其他说明

应用上架审核结果通知回调

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

承载协议

HTTPS POST

接口方向

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

接口URL

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

数据格式

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

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

请求参数

[h2]Header

参数

必选(M)/可选(O)

类型

描述

notifyType

M

String(32)

回调类型。

取值范围:

  • versionStateChange:版本状态变更

signatureRSAWithPSS

M

String

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

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

[h2]Body

参数

必选(M)/可选(O)

类型

描述

releaseType

O

String

权限变更类型。

  • release:正式发布
  • test:测试发布

isUpgrade

O

Integer

仅全网发布使用。

取值范围:

  • 1:升级场景
  • 2:非升级场景

state

O

String

当前应用状态。

  • 1:审核通过,立即上架
  • 2:审核通过,待上架
  • 0:审核驳回
  • -1:华为运营操作下架
  • -4:开发者自行提交下架

appId

O

String

应用ID。

versionId

O

String

当前版本ID。

请求示例

{
  "appId": "112****3",
  "isUpgrade": 1,
  "releaseType": release,
  "state": 1,
  "versionId": "1608****4368"
 }

响应参数

服务商收到第三方管理平台服务端的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");
    }
}