云商店
云商店
- 云商店介绍
-
接入指南
-
商品接入相关接口
- SaaS类商品接入指南 V2.0(新商品上架)
- SaaS类商品接入指南 V1.0(已下线)
- 联营License类授权码商品接入指南(2.0版本)
- 联营License类商品接入指南(已下线)
- 自动部署接入指南
- 联营License客户端软件对接指南
- 商品交易相关接口
-
商品接入相关接口
- 用户指南
-
商家指南
- 为什么要加入云商店
- 商家入驻
- 商品发布
- 商品交易
- 商家结算
- 店铺运营
- 政策与权益
- 中资出海
-
商家常见问题
- 商家入驻相关问题
- 联营计划相关问题
-
商品发布相关问题
- 如何在云商店发布商品
- 如何发布多SKU定价规格
- 商品发布申请提交后,审核需要多久
- 如何判断发布的商品对应云商店上的哪种商品接入类型
- 云商店商品上架的使用有效期
- 新商品发布时,“商品说明”中能否插入图片
- 为什么在商品发布页面没有发布联营商品按钮
- 如何创建SaaS按需规格和按需套餐包
- 如何补充商品交付模板
- 商品名称发布说明
- 商品logo、商品主图与视频、商品简介、商品说明发布说明
- 联营商品服务支持条款发布说明
- 通用商品服务协议发布说明
- 服务与支持、使用指南发布说明
- 软件著作权证书发布说明
- 通用商品规格发布说明
- 联营商品规格对照报价单填写说明
- 联营服务流发布说明
- 生产接口地址、安全漏洞扫描、关联应用发布说明
- 如何发布SaaS类商品试用规格
- 云商店镜像资产无法选择到已创建私人镜像的原因
- 商品管理相关问题
- 服务监管相关问题
- 结算相关问题
- 协议与规范
- 客户服务商指南
- 平台规范与通知
- 文档下载
- 通用参考
链接复制成功!
HTTP Body签名
基础接口HTTP Body签名
定义
云商店每次调用商家的接口时会根据一定规则对请求生成signature,并且将signature通过URL PARAMS的方式添加到URL上,商家在接收到请求后需要同样的规则对请求体进行重新计算signature,并且与云商店传递的signature相比较,完全相同即为校验通过,通过URL PARAMS传递的参数有:
参数 |
取值 |
描述 |
---|---|---|
signature |
String |
加密签名,通过一定的规则对请求进行签名产生的值。 |
timestamp |
Long |
UNIX 时间戳(单位毫秒),商家需要校验这个时间戳与当前时间相差不超过60s。 |
nonce |
String |
随机字符串,云商店在每次调用时会随机生成,商家可以通过对这个随机数的缓存来防御API重放攻击。 |
生成规则
- 对请求参数排序,根据参数名自然排序,例如,以字母a开头的参数名会排在以b开头的参数前面,如果首字母相同,将会对第二个字母进行排序,以此类推,直到字符串结束
- 获取规范请求字符串,规则:
canonicalRequest = accessKey + nonce + timestamp + Lowercase(HexEncode(HMAC_SHA256 (RequestPayload)))
3.根据规则对规范请求字符串,密钥取signature值,规则:
signature = HexEncode(HMAC_SHA256(canonicalRequest))
举例
商家收到的调用请求数据示例如下:
curl -X POST -H 'Content-Type: application/json' 'https://www.isvwebsite.com/saasproduce?signature=af71c5a7ef45310b8dc05ab15f7da50189ffa81a95cc284379ebaa5eb61155c0×tamp=1716363778801&nonce=RLLUammMSInlrNWb' --data '{"activity":"newInstance","buyerInfo":{"customerId":"688055390f3049f283fe9f1aa90f1858","customerName":"CBC_marketplace_mwx616072_01","userId":"1e86066c22754361933f607df834e4fe","userName":"CBC_marketplace_mwx616072_01","mobilePhone":"18652996659","email":"mapengfei8@huawei.com"},"orderInfo":[{"businessId":"8a2c4e6f-405a-4f8d-8e24-f41090522646","orderId":"CS2210101920BWXLK","trialFlag":"0","orderAmount":12.78,"chargingMode":"PERIOD","periodType":"month","periodNumber":5,"provisionType":1,"productInfo":[{"skuCode":"a63ee5c9-4f86-11ed-9f95-fa163e8cb3b2","productId":"OFFI788963615933718528","linearValue":20}],"createTime":"20221024194509","expireTime":"20221224194509","extendParams":[{"name":"emailDomainName","value":"test.xxxx.com"},{"name":"extendParamName","value":"extendParamValue"}]}],"testFlag":"1"}'
联营kit接口HTTP Body签名
定义
云商店每次调用商家的接口时会根据一定规则对请求生成x-sign,并且将x-sign通过HEADER PARAMS的方式添加到URL上,商家在接收到请求后需要同样的规则对请求体进行重新计算x-sign,并且与云商店传递的x-sign相比较,完全相同即为校验通过,通过HEADER PARAMS传递的参数有:
参数 |
取值 |
描述 |
---|---|---|
x-sign |
String |
加密签名,通过一定的规则对请求进行签名产生的值。 |
x-timestamp |
String |
UNIX 时间戳(单位毫秒),商家需要校验这个时间戳与当前时间相差不超过60s。 |
x-nonce |
String |
随机字符串,云商店在每次调用时会随机生成,商家可以通过对这个随机数的缓存来防御API重放攻击。 |
生成规则
- 对请求参数排序,根据参数名自然排序,例如,以字母a开头的参数名会排在以b开头的参数前面,如果首字母相同,将会对第二个字母进行排序,以此类推,直到字符串结束
- 根据规则对规范请求字符串,密钥取x-sign值,规则:
canonicalRequest = accessKey + nonce + timestamp + RequestPayload x-sign = HexEncode(HMAC_SHA256(canonicalRequest))
举例
商家收到的调用数据示例如下:
请求示例: POST https://example.isv.com/produceAPI/v2/tenantSync Content-Type: application/json x-sign:11C4CD6279191DE931DEF5C51531DFFA9D37969F4E356B8A3A6D8DE4FB357A48 x-timestamp:1680508066618 x-nonce:50D83FDECAED6CCD8EF597F2A577950527928BA287D04E6036E92B2806FD17DA {"instanceId": "huaiweitest123456","orderId": "CS1906666666ABCDE","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" }
父主题: 接口安全令牌