免费注册
帮助文档(华北一、二)
  • 1.1 简介

    本文档描述了SaaS类产品接入到云市场需要实现的接口定义。当用户在云市场购买SaaS类产品时会生成激活码,此激活码通过调用本文档中的接口查询并激活。文档中涉及到的所有接口都以 HTTP GET 方式调用,消息传输以JSON或者XML格式,并要求同步返回结果。


    1.2 使用对象

    用户在购买ISV的软件后,云市场会为每个购买的应用生产一个软件授权码,用户在使用软件时,会输入授权码,ISV校验授权码的有效性,并为用户激活相关的应用。


    1.3 接口描述


    1.3.1 公共调用信息


    1.3.1.1 描述

    公共调用信息指查询和激活接口都需要使用到的信息


    1.3.1.2 接口地址

    接口地址:https://cloud.inspur.com/market/api/license/


    1.3.1.3 公共请求参数


    名称

    类型

    是否必须

    描述

    Format

    String

    返回值的类型,支持JSON 与 XML

    Version

    String

    API 版本号,为日期形式:YYYY-MM-DD,本版本对应为 2015-11-01(暂不校验)

    AccessKeyId

    String

    浪潮云市场颁发给用户的访问服务所用的密钥 ID

    Signature

    String

    签名结果串,关于签名的计算方法,请参见“签名机制

    SignatureMethod

    String

    签名方式,目前支持HMAC-SHA1

    Timestamp

    String

    请求的时间戳。日期格式按照 ISO8601 标准表示,并需要使用 UTC 时间。格式为: YYYY-MM-DDThh:mm:ssZ

    SignatureVersion

    String

    签名算法版本,目前版本是1.0

    SignatureNonce

    String

    唯一随机数,用于防止网络重放攻击。同一个用户,15分钟内,SignatureNonce只能使用一次


    1.3.1.4 错误码


    code

    message

    httpcode

    描述

    UnSupportedMethod

    Only request with GET method is allowed.

    405

    仅支持get请求方法

    InvalidAccessKeyId.NotFound

    The Access Key ID provided does not exist in our records.

    400

    无效的 AccessKeyId 值(该 key 不存在)

    IncompleteSignature

    The request signature does not conform to Aliyun standards.

    400

    无效的 Signature 取值(签名结果错误)

    UnsupportedParameter

    The parameter "xx" is not supported.

    400

    使用了不支持的参数

    InvalidParameter

    The parameter "xx" is invalid

    400

    使用了无效的参数

    MissingParameter

    The input parameter "

    Action

    " that is mandatory for processing this request is not supplied

    400

    缺少 Action 字段


    1.3.2 授权码查询接口


    1.3.2.1 描述

    根据授权码查询业务信息、授权情况。


    1.3.2.2 请求参数


    名称

    类型

    是否必须

    描述

    Action

    String

    系统规定参数,取值:DescribeLicense

    LicenseCode

    String

    授权码


    1.3.2.3 返回参数


    名称

    类型

    是否必有

    描述

    InstanceId

    String

    云市场实例ID,即订单ID

    ProductCode

    String

    商品code

    ProductName

    String

    商品名称

    ProductSkuId

    String

    商品规格ID

    LicenseCode

    String

    授权码

    ExpiredTime

    String

    业务到期时间,按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mmZ

    LicenseStatus

    String

    授权状态 Activated已激活Inactivated 未激活 Invalid无效(商品到期时为无效)

    CreateTime

    String

    订单的支付时间 ,按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mmZ

    ActivateTime

    String

    授权码激活时间,按照ISO8601标准表示,并需要使用UTC时间。格式为:YYYY-MM-DDThh:mmZ

    ExtendInfo

    ExtendInfo

    扩展信息


    扩展信息ExtendInfo


    名称

    类型

    是否必有

    描述

    Uid

    String

    购买者唯一标识

    Email

    String

    用户email

    Mobile

    String

    用户手机号

    AccountQuantity

    Long

    购买帐号数量( 默认为1)


    1.3.2.4 错误码


    code

    message

    httpcode

    描述

    License.Invalid

    Invalid License

    400

    无效的授权码

    Auth.Match

    License is not matched isv

    400

    授权码不属于该供应商


    1.3.2.5 示例


    {

    "License": {

    "InstanceId": "2018112254555799",

    "ProductCode": "620667343",

    "ProductName": "授权码",

    "ProductSkuId": "2058",

    "LicenseCode": "815f55612474a95424c983d48411a8cf",

    "ExpiredTime": "2018-12-22T15:44:24Z",

    "LicenseStatus": "Activated",

    "CreateTime": "2018-11-22T15:44:24Z",

    "ActivateTime":"2018-11-22T16:38:07Z",

    "ExtendInfo": {

        "Uid": "55900744",

        "Email": "3098928900@qq.com",

        "Mobile": "17800324058",

        "AccountQuantity": 1

    }

    },

    "RequestId": "0c05e48d-b930-43f2-5c75-dd8317c20001"

    }

     

    1.3.3 授权码激活接口


    1.3.3.1 描述

    验证授权码是否有效,无效授权码或已激活会直接返回错误信息


    1.3.3.2 请求参数


    名称

    类型

    是否必须

    描述

    Action

    String

    系统规定参数,取值:ActivateLicense

    LicenseCode

    String

    授权码

    Identification

    String

    激活的身份信息,取值:true


    1.3.3.3 返回参数


    名称

    类型

    是否必有

    描述

    Success

    bool

    成功状态标识


    1.3.3.4 错误码


    错误码

    错误信息

    http状态码

    描述

    License.Invalid

    Invalid License

    400

    无效的授权码

    License.Expired

    License Expired

    400

    授权码已过期

    Auth.Match

    License is not matched isv

    400

    授权码不属于该isv


    1.3.3.5 示例


    {

    "RequestId": "214e9ec2-9391-b53e-970b-c00cd091f493",

    "Success": true

    }

     

    1.4 激活地址

    授权码激活地址是由服务商提供,是供用户激活授权码的链接。服务商在服务商中心配置好授权码激活地址,用户下单时会生成激活码,并展示激活地址。


    1.5  配置数据来源

    AccessKeyId:找云市场运营人员获取,需要提供公司名称

    AccessKeySecret:找运营人员获取,需要提供公司名称

    ProductSkuId:服务商中心-商品详情-商品销售信息,表格中的规格id


    附件:签名机制


    步骤 1. 构造规范化请求字符串


    1. 排序参数。排序规则以首字母顺序排序,排序参数包括 公共请求参数 和接口自定义参数,不包括公共请求参数中的 Signature 参数。说明 当使用GET方法提交请求时,这些参数就是请求URL中的参数部分,即URL中 ? 之后由 & 连接的部分。
    1. 编码参数。使用UTF-8字符集按照 RFC3986 规则编码请求参数和参数取值,编码规则如下:
      • 字符A~Z、a~z、0~9以及字符 -、_、.、~ 不编码。
      • 其它字符编码成 %XY 的格式,其中 XY 是字符对应ASCII码的16进制。示例:半角双引号(")对应 %22。
      • 扩展的UTF-8字符,编码成 %XY%ZA… 的格式。
      • 空格( )编码成 %20,而不是加号(+)。该编码方式与 application/x-www-form-urlencoded MIME格式编码算法相似,但又有所不同。如果您使用的是Java标准库中的 java.net.URLEncoder,可以先用标准库中 percentEncode 编码,随后将编码后的字符中加号(+)替换为 %20、星号(*)替换为 %2A、%7E 替换为波浪号(~),即可得到上述规则描述的编码字符串。

    private static final String ENCODING = "UTF-8";

    private static String percentEncode(String value) throws UnsupportedEncodingException {

    return value != null ? URLEncoder.encode(value, ENCODING).replace("+", "%20").replace("*", "%2A").replace("%7E", "~") : null;

    }

     

    1. 使用等号(=)连接编码后的请求参数和参数取值。
    1. 使用与号(&)连接编码后的请求参数,注意参数排序与 步骤1 一致。

    现在,您得到了规范化请求字符串(CanonicalizedQueryString),其结构遵循 请求结构。


    步骤 2. 构造签名字符串


    1. 构造待签名字符串 StringToSign。您可以同样使用 percentEncode 处理上一步构造的规范化请求字符串,规则如下:

    StringToSign=

      HTTPMethod + "&" + //HTTPMethod:发送请求的 HTTP 方法,例如 GET

      percentEncode("/") + "&" + //percentEncode("/"):字符(/UTF-8 编码得到的值,即 %2F

      percentEncode(CanonicalizedQueryString) //您的规范化请求字符串。

     

    1. 按照 RFC2104 的定义,计算待签名字符串 StringToSign 的HMAC-SHA1值。示例使用的是Java Base64编码方法。说明 计算签名时,RFC2104规定的Key值是您的 AccessKeySecret 并加上与号( &),其ASCII值为38。

    Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(StringToSign) ) )

     

    1. 添加根据 RFC3986 规则编码后的参数 Signature 到规范化请求字符串URL中。

    示例


    以调用 DescribeLicense 授权码查询接口为例。假设您获得了 AccessKeyID=testid 以及 AccessKeySecret=testsecret,签名流程如下所示:

    1. 1. 构造规范化请求字符串。

    http://test.market.cloud.inspur.com:8089/market/api/license/?AccessKeyId=testid&Action=DescribeLicense&Format=JSON&LicenseCode=ad8f6e1caf1084f33cee89e0820770f3&SignatureMethod=HMAC-SHA1&SignatureNonce=d86cfcb3-5e38-4b6d-9b06-10727e157e88&SignatureVersion=1.0&Timestamp=2018-12-21T10%3A05%3A21Z&Version=2015-11-01

     

    1. 2. 构造待签名字符串 StringToSign

    GET&%2F&AccessKeyId%3D41%26Action%3DDescribeLicense%26Format%3DJSON%26LicenseCode%3

    Dad8f6e1caf1084f33cee89e0820770f3%26SignatureMethod%3DHMAC-

    SHA1%26SignatureNonce%3Dd86cfcb3-5e38-4b6d-9b06-

    10727e157e88%26SignatureVersion%3D1.0%26Timestamp%3D2018-12-

    21T10%253A05%253A21Z%26Version%3D2015-11-01

     

    1. 3. 计算签名值。因为 AccessKeySecret=testsecret,用于计算的Key为 testsecret&,计算得到的签名值为 owXcU11yooCcVTpVMYSYSl4KZXs=。示例使用的是Java Base64编码方法。

    Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(StringToSign) ) )

     

    1. 4. 添加 RFC3986 规则编码后的 Signature=owXcU11yooCcVTpVMYSYSl4KZXs%3D 到 步骤1 的URL中。

    http://test.market.cloud.inspur.com:8089/market/api/license/?AccessKeyId=testid&Action=DescribeLicense&Format=JSON&LicenseCode=ad8f6e1caf1084f33cee89e0820770f3&SignatureMethod=HMAC-SHA1&SignatureNonce=d86cfcb3-5e38-4b6d-9b06-10727e157e88&SignatureVersion=1.0&Timestamp=2018-12-21T10%3A05%3A21Z&Version=2015-11-01&Signature=owXcU11yooCcVTpVMYSYSl4KZXs%3D


    通过以上URL,您可以使用浏览器、curl或者wget等工具发起HTTP请求调用 DescribeLicense,授权码查询接口。


文档是否已解决您的问题?

  已解决   未解决

如您有其它疑问,您也可以与我们技术专家联系探讨。

联系技术专家