云服务器内容精选

  • 响应消息 响应参数说明请参见下表: 参数 是否必选 类型 最大字符长度 说明 error_code M String 6 调用结果码。 具体请参见调用结果码说明。 error_msg O String 255 调用结果描述。 错误码: http状态码 error_code error_msg 描述 200 MKT.0000 Success. 请求成功 500 MKT.0999 System internal error. 其它服务内部错误 500 MKT.0100 Failure of input parameter 输入参数校验失败 参数范围超限,非法值或格式错误 400 MKT.0101 Invalid parameter 参数无效 输入非接口定义的参数,多参数或少必选参数 比如:传递非法数值、没有实例id等 400 MKT.0102 Invalid body sign 请求body体签名校验失败 400 MKT.0199 Request parameter error 请求参数错误 其它参数错误 比如:必填参数未传递等 401 MKT.0150 Illegal operation 通常是进行了不被授权的操作,例如instance_id对应的产品不是AK/SK对应的ISV发布的 401 MKT.0151 No authority 无API访问权限 token非ISV角色 401 MKT.0154 Illegal token 鉴权失败 token无效 500 MKT.9001 Instance ID not found. 实例ID不存在(商品续费、过期、资源释放接口可能返回) 500 MKT.9002 Invalid usage enties. 计量实体无效 500 MKT.9003 Usage records extends size limit. 计量记录数超出限制(1000条) 500 MKT.9004 Record beginTime extends Limit. 计量记录的起始时间超出有效期(当前时间21天以内) 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 响应消息示例: { "error_code":"MKT.0000", "error_msg":"success" }
  • 接口说明 买家购买联营SaaS商品后,登录到华为云买家中心控制台,将应用与企业绑定时,云商店调用该接口请求商家同步该企业的租户信息,商家接口需要执行租户同步,保存租户信息,并返回通知云商店。 针对企业同步场景接口调用失败的情况,由买家选择是否重试,并用短信或邮件的形式通知商家接口调用失败。 商家的服务器在处理接口请求时,需要做好幂等性处理。 对于同一个实例,相同的租户要支持多次请求新增,或者删除,多次新增不应产生新的数据,且需要返回成功,如果是删除,多次删除也需要返回成功,不能因已删除返回失败,删除时不需要校验(创建实例)接口产生的实例是否存在。 租户同步流程如下图所示:
  • 请求方法:POST 接口URL:生产地址+固定子路径,其中固定子路径为/produceAPI/v2/tenantSync; 接口示例:生产地址为https://example.isv.com,则接口URL为https://example.isv.com/produceAPI/v2/tenantSync,固定子路径商家无需手动拼接。 Body参数 参数 必选 参数类型 描述 instanceId M String(64) 说明: 实例ID,卖家申请应用凭证的时候传空,买家正式订单必传。 orderId M String(64) 说明: 买家的订单号,卖家申请应用凭证的时候传空,买家正式订单必传。 tenantId M String(64) 租户ID tenantCode M String(64) 租户标识,用来识别最终用户的登录指向买家对应的 域名 name M String(255) 租户名称,买家企业的名称 domainName M String(255) 域名,是认证中心返回的统一域名地址 flag M Integer(2) 0-删除 1-新增 2-修改(仅限租户名称、域名) testFlag M Integer(2) 0-生产正式数据 1-调测数据 timeStamp M String 默认时区东8区,时间格式:20220420114117642 响应参数 参数 必选 参数类型 描述 resultCode M String(6) 响应码, 具体请参见调用结果码说明。 resultMsg O String(255) 响应信息 示例: 请求示例: POST https://example.isv.com/produceAPI/v2/tenantSync Content-Type: application/json x-sign:11C4CD6279191DE931DEF5C51531DFFA9D37969F4E356B8A3A6D8DE4FB357A48 x-timestamp:1680508066618 x-nonce:50D83FDECAED6CCD8EF597F2A577950527928BA287D04E6036E92B2806FD17DA {"instanceId": "huaiweitest123456","orderId": " CS 1906666666ABCDE","tenantId": "68cbc86****************880d92f36422fa0e","tenantCode": "huawei","name": "huaiweitest","domainName": "https://example.tenantaccount.com","flag": 1,"testFlag": 0,"timeStamp": "20220413093539534"} 响应示例: HTTP/1.1 200 OK Content-Type: application/json { " resultCode": "000000", " resultMsg": "Success" }
  • 响应消息 表2 响应参数 参数 是否必选 参数类型 最大字符长度 描述 error_code M String 16 结果码。 error_msg M String 1024 结果消息。 data O License 表3 License 参数 是否必选 参数类型 最大字符长度 描述 license_code_info M String 1024 Json字符串,包含以下参数:status状态(ALIVE-正常)、expire_time(过期时间)、product_id(产品id)、order_id(订单号)、amount(数量类型的商品 定价 属性)。 注意: 该参数expire_time有效期为估值,和授权码实际有效期有差别,请以授权码心跳检测接口返回的状态和有效期为准。 成功响应示例 HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Content-Length: length Date: response time { "error_code": "92020000", "error_msg": "success" , "data": { license_code_info": "{\"status\":\"ALIVE\",\"expire_time\":\"20230726121646\",\"product_id\":\"12345\",\"amount\":2,\"order_id\":\"CS123\"}" } }
  • 操作步骤 接口开发并调测成功后,点击“配置”。 商家根据需求,可以选择“接入类型”或“按商品”的场景进行通知。 下面以“接入类型”为例: ① 勾选客户购买需要订单通知的商品类型。 ② 点击确认后,即生效,后续这类接入类型的所有商品产生的订单都会通知。 订单通知可按照接入类型或按照商品维度进行通知,两种配置方式可单独选择或组合选择,如组合选择后有交集的商品产生订单后仅发送一次通知。 订单通知节点:以选中的通知方式下的商品范围被新购、续费、变更、退订生成订单后进行接口通知。 同一个接入类型或商品仅支持关联一个生产地址,如需更改生产地址请先删除后再在对应生产地址下配置接入类型或商品。 当某个接入类型关联了A生产接口地址,商品关联了B生产接口地址,系统会取商品级的生产地址进行通知。
  • 请求方法:GET 参数 是否必选 类型 最大字符长度 说明 authToken M String 50 安全校验令牌。 取值请参见authToken取值说明。 activity M String 20 接口请求标识,用于区分接口请求场景。 升级场景取值:upgrade instanceId M String 64 实例ID。 说明: 升级时,instanceId不变。 orderId M String 64 升级后的新订单ID。 说明: 升级操作会产生新的订单,与新购时订单ID不一致,请通过instance Id做资源识别。 skuCode M String 64 升级后产品规格标识。 说明: 对于自定义属性模板规格,如果租户升级时选择了其他属性值,instanceId对应的规格会发生变化,因此skuCode会变化; 如果仅扩容(调整增加线性属性值大小,例如:从当前的10用户增加到20用户),skuCode不变。 productId M String 64 升级后产品ID。 如果skuCode变化,productId也会发生变化; 如果仅扩容,productId不变。 timeStamp M String 20 请求发起时的时间戳,取UTC时间。 格式:yyyyMMddHHmmssSSS amount O Integer 7 数量类型的商品定价属性。非必填。 属性名称:数量(支持商家自定义名称) 单位:个(次) 说明: 对于包周期或一次性计费的SaaS商品,租户下单购买包含“数量”线性属性的规格时,会填写及调整购买的个数或次数。 例如:30个用户 diskSize O Integer 7 数量类型的商品定价属性。非必填。 属性名称:硬盘大小(支持商家自定义名称) 单位:GB 说明: 对于包周期或一次性计费的SaaS商品,租户下单购买包含“硬盘大小”线性属性的规格时,会填写及调整购买多少GB。 例如:100GB bandWidth O Integer 7 数量类型的商品定价属性。非必填。 属性名称:带宽(支持商家自定义名称) 单位:Mbps 说明: 对于包周期或一次性计费的SaaS商品,租户下单购买包含“带宽”线性属性的规格时,会填写及调整购买多少Mbps。 例如:20Mbps testFlag O Integer 1 是否调测数据。 1:接口调测数据 不传参数:真实买家同步数据 请求消息示例: https://example.isv.com?activity=upgrade&amount=6456&instanceId=huaweitest123456&orderId=CS1906666688ABCDE&productId=00301-666688-0-0&saasExtendParams=W3sibmFtZSI6ImlkTnVtIiwidmFsdWUiOiIzNTIyNTU1NTU1NTU2NTYifSx7Im5hbWUiOiJ1c2VyTmFtZSIsInZhbHVlIjoiaHVhd2VpMTIzIn0seyJuYW1lIjoiY3VzdEVtYWlsIiwidmFsdWUiOiIxMjNAaHVhd2VpLmNvbSJ9XQ==&skuCode=d0abcd12-1234-5678-ab90-11ab012aaaa1&testFlag=1&timeStamp=20191216013757582&authToken=a3Bl+C93xv3ENgm40ngyYvQnYcTS/pgY5ugl20wtzGg=
  • 响应消息 响应参数说明请参见下表: 参数 是否必选 类型 最大字符长度 说明 resultCode M String 6 调用结果码。 具体请参见调用结果码说明。 resultMsg O String 255 调用结果描述。 商家的服务器在处理接口请求时,需要做好幂等性处理。 云商店服务有可能重发请求,针对同一orderId,商家的服务器不应该重复做实例资源升级处理,返回成功响应即可。 响应消息示例: { "resultCode":"000000", "resultMsg":"success." }
  • 响应消息 响应参数说明请参见下表: 参数 是否必选 类型 取值范围 参数说明 resultCode M String 6 调用结果码。 000000:表示资源同步开通 000004:表示资源异步开通 具体请参见1.9 调用结果码说明 说明:如果创建实例耗时较长,建议返回0000004,云商店后续会通过查询实例信息接口查询实例开通结果 resultMsg O String 255 调用结果描述。 instanceId M String 64 云商店业务ID。 响应消息示例: { "resultCode":"000000", "resultMsg":"success" , "instanceId":"03pf80c2bae96vc49b80b917bea776d7" }
  • 请求消息 请求参数说明请参见下表。云商店会结合商家创建上架的商品售卖模式来对应请求,商家也需要根据请求的信息来对应执行生产。 请求方式:POST Body参数 参数 是否必选 参数类型 最大字符长度 说明 activity M String 20 接口请求标识,用于区分接口请求场景。 新购场景取值:newInstance orderId M String 64 云商店订单ID。 orderLineId M String 64 云商店订单行ID。 businessId M String 64 云商店业务ID。 每一次请求,businessId皆不一致。 testFlag O String 2 是否为调试请求。 1:调试请求 0:非调试请求 默认取值为“0”。 请求消息示例: curl -X POST 'https://www.isvwebsite.com/saasproduce?signature=11C4CD6279191DE931DEF5C51531DFFA9D37969F4E356B8A3A6D8DE4FB357A48×tamp=1680508066618&nonce=50D83FDECAED6CCD8EF597F2A577950527928BA287D04E6036E92B2806FD17DA' -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf8' -d'{"activity":"newInstance","businessId":"87b94795-0603-4e24-8ae5-69420d60e3c8","orderId":"CS2211181819B4LVS","orderLineId":"CS2211181819B4LVS-000001","testFlag":"0"}'
  • 接口说明 客户购买商品并付款成功,云商店将调用本接口通知商家创建实例 商家需要返回此订单的唯一ID(instanceId)。建议此ID直接使用该订单首次请求时云商店传入的businessId,以确保instanceId的唯一性。 在正常购买场景中,请不要阻塞此接口,如果耗时较长,建议异步创建实例,可以先生成instanceId,然后立即返回。云商店后续会通过查询实例信息接口查询实例开通结果。 如涉及按需、按需套餐包商品,需要对接按需使用量推送(新)接口。 获取订单信息,请参考查询订单接口。 云商店服务有可能重发请求,针对同一订单号(orderId)和订单行(orderLineId),商家的服务器应当返回相同的instanceId,不应该创建新的SaaS实例,返回之前成功创建的实例信息即可。 按需交易场景,需要基于订单号(orderId)和产品标识(productId)构建幂等。 创建实例流程如下图所示:
  • 公共请求消息头参数 表1 公共请求消息头 名称 描述 是否必选 示例 x-sdk-date 请求的发生时间,格式为:yyyyMMdd'T'HHmmss'Z'。 取值为当前系统的GMT时间。 否 使用AK/SK认证时必选 20160629T101459Z Authorization 签名认证信息 该值来源于请求签名结果。 请参考2.3.3.2 请求签名流程。 否 使用AK/SK认证时必选 - Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 否 使用AK/SK认证时必选 mkt-euro.myhuaweicloud.com Content-type 发送的实体的MIME类型。 是 application/json 父主题: 公共参数
  • 举例 商家收到的调用请求数据示例如下: http://www.isvwebsite.com/saasproduce?p1=1&p2=2&p3=3&authToken=xxxxxxxxxxxxxx&timeStamp=201706211855321 获取所有的http get请求参数:p1、p2、p3、timeStamp 进行字典排序:sort(p1, p2, p3,timeStamp),假设排序后的顺序是p1、p3、p2、timeStamp 生成authToken值:base64_encode(HMAC_SHA256(Key+timeStamp, p1=1&p3=3&p2=2&timeStamp=201706211855321)) 所有参数的值云商店都经过了URL编码,商家取到参数值应先进行URL解码。
  • 接口说明 管理员被授权管理某企业后,登录到华为云买家中心控制台,对企业内用户授权该企业已绑定的应用,云商店异步调用该接口请求商家同步该企业应用的用户授权信息,商家接口需要执行授权信息同步,保存用户授权信息,并返回通知云商店。 针对用户授权同步场景接口调用失败的情况,由企业管理员选择是否要继续进行同步。并用短信或邮件的形式通知商家接口调用失败。 商家的服务器在处理接口请求时,需要做好幂等性处理。 对于同一个实例,相同的租户,相同的应用,相同的userName,要支持多次请求新增,或者删除,多次新增不应产生新的数据,且需要返回成功,如果是删除,多次删除也需要返回成功,不能因已删除返回失败,删除时不需要校验(创建实例)接口产生的实例是否存在。 租户同步流程如下图所示:
  • 举例 商家收到的调用请求示例如下: post方式: https://www.isvwebsite.com/saasproduce Connection: keep-alive Content-Type: application/json authToken: “xxxxxxxxxxxxxx” Host: www.isvwebsite.com User-Agent: Apache-HttpClient/4.5.3 (Java/1.8.0_191) { "p1": "1", "p2": "2", "p3": "3", "timeStamp": "201706211855321" } 获取所有的post请求body参数:p1、p2、p3、timeStamp 进行字典排序:sort(p1, p2, p3,timeStamp),假设排序后的顺序是p1、p3、p2、timeStamp 生成authToken值:base64_encode(HMAC_SHA256(Key+timeStamp, p1=1&p3=3&p2=2&timeStamp=201706211855321)) 所有参数的值云商店都经过了URL编码,商家取到参数值应先进行URL解码。
  • 定义 云商店每次调用商家的接口时会根据一定规则对请求生成signature,并且将signature通过URL PA RAM S的方式添加到URL上,商家在接收到请求后需要同样的规则对请求体进行重新计算signature,并且与云商店传递的signature相比较,完全相同即为校验通过,通过URL PARAMS传递的参数有: 参数 取值 描述 signature String 加密签名,通过一定的规则对请求进行签名产生的值。 timestamp Long UNIX 时间戳(单位毫秒),商家需要校验这个时间戳与当前时间相差不超过60s。 nonce String 随机字符串,云商店在每次调用时会随机生成,商家可以通过对这个随机数的缓存来防御API重放攻击。