文档首页 > > 接入指南> SaaS类商品接入指南> 接口描述> 新购商品

新购商品

分享
更新时间: 2020/07/02 GMT+08:00

接口说明

  • 客户购买商品并付款成功,云市场将调用本接口通知服务商客户购买商品的信息和客户信息。
  • 服务商需要返回此订单的唯一ID(instanceId)。建议此ID直接使用该订单首次请求时云市场传入的businessId,以确保instanceId的唯一性。
  • 在正常购买场景中,请不要阻塞此接口,如果耗时较长,建议使用队列做缓冲处理,设置instanceId=0,然后立即返回。若操作失败也请设置instanceId=0,云市场都会再次调用,直到获取到instanceId。

    服务商应用接入调试时,若instanceId返回值为0,开通失败,不能通过校验,页面会有标红提示。因此在调试时,instanceId返回值尽量不要为0,使调试通过。

  • 当接口响应失败时,系统会邮件通知到服务商云市场账号绑定的邮箱,生产接口消息中可查询接口“异常信息”,服务商收到通知后须尽快处理接口异常,,避免订单失败退订。

    针对新购场景接口调用失败的情况,云市场会持续调用到60次(每3分钟1次)后停止调用。若服务商接口问题在60次调用时间内解决,则在下一次调用时接口响应成功,订单开通成功;若服务商接口问题在60次调用后仍无解决,系统则判断订单为失败,并自动进行订单退订。若商品单月因接口失败导致的失败订单超过5个,云市场将对该商品下架处理。

    • 请及时关注服务商信息中客服邮箱以及云市场账号绑定的邮箱的通知,收到调用失败通知邮件及时处理接口异常。
    • 云市场会对接口异常导致订单失败的情况做监控,如SaaS商品频繁出现因接口异常导致订单失败的情况,云市场将对该商品做下架处理。
  • 服务商的服务器在处理接口请求时,需要做好幂等性处理。

    云市场服务有可能重发请求,针对同一订单号,服务商的服务器应当返回成功的响应及应用实例信息,不应该创建新的SaaS实例,返回之前成功创建的实例信息即可。

新购商品流程如下图所示:

请求消息

请求参数说明请参见下表。云市场会结合服务商创建上架的商品售卖模式来对应请求,服务商也需要根据请求的信息来对应执行生产。

参数

是否必选

参数类型

最大字符长度

说明

authToken

M

String

50

安全校验令牌。

取值请参见authToken取值说明

timeStamp

M

String

20

请求发起时的时间戳,取UTC时间。

格式:yyyyMMddHHmmssSSS

activity

M

String

20

接口请求标识,用于区分接口请求场景。

新购场景取值:newInstance

customerId

M

String

100

客户在华为云注册账号的唯一标识。

customerName

O

String

64

客户在华为云注册的账户名。

userId

O

String

64

客户以IAM用户认证方式登录时对应子用户的唯一标识。

非必传,如需此参数,在商品发布时“需要用户授权”请选择“基于IAM用户名创建应用管理账号等信息”。

userName

O

String

64

客户以IAM用户认证方式登录的用户名。

非必传,如需此参数,在商品发布时“需要用户授权”请选择“基于IAM用户名创建应用管理账号等信息”。

mobilePhone

O

String

256

客户手机号。

非必传,如需此参数,在商品发布时“需要用户授权”请选择“基于手机号码创建应用管理账号等信息”,取值为加密后的手机号码。

手机号加密规则如下:

由16位iv加密向量和base编码后的手机号密文组成。

iv+base64(AES_CBC(accessKey,mobilePhone))

加密位数取ISV发布产品时选择的加密位数。

手机解密代码示例请参见ISV Server解密手机号和邮箱

说明:

手机号不包含国家码。

email

O

String

256

客户邮箱。

非必传,如需此参数,在商品发布时“需要用户授权”请选择“基于邮箱创建应用管理账号等信息”,取值为加密后的邮箱。

邮箱加密规则如下:

由16位iv加密向量和base编码后的邮箱密文组成。

iv+base64(AES_CBC(accessKey,email))

加密位数取ISV发布产品时选择的加密位数。

邮箱解密代码示例请参见ISV Server解密手机号和邮箱

businessId

M

String

64

云市场业务ID。

orderId

M

String

64

云市场订单ID。

skuCode

O

String

64

产品规格标识。租户购买包月或包年的产品后,可能会续费,续费支持变更周期类型(例如包月转包年),此时,租户开通的实例instanceId对应的productId会变化,但skuCode不变。

说明:

该参数可在商品审核上架后,进入“卖家中心 > 商品管理 > 我的商品 ”页面,单击该商品操作列的“详情”进入商品详情页面获取。

productId

M

String

64

产品标识,同一skuCode下,不同周期类型的productId不同。

例如:ISV发布产品,新增一个规格,会生成一个skuCode,再配置包年价格,包月价格,会生成两个productId。

说明:

该参数可在商品审核上架后,进入“卖家中心 > 商品管理 > 我的商品 ”页面,单击该商品操作列的“详情”进入商品详情页面获取。

testFlag

O

String

2

是否为调试请求。

  • 1:调试请求
  • 0: 非调试请求

    默认取值为“0”。

trialFlag

O

String

2

是否是开通试用实例。

  • 1:试用实例
  • 0:非试用实例
  • 不传试用参数:2018年5月12日之前已发布成功的产品实例

默认取值为“0”。

expireTime

O

DateTime

20

过期时间。

格式:yyyyMMddHHmmss

说明:
  • 按周期售卖的商品,会请求该参数。
  • 按次售卖的商品,不会请求该参数。
  • 过期时间根据订单创建时间和购买周期计算而来,与订单实际过期时间有误差,仅供参考。

chargingMode

O

Integer

[3]

计费模式。

3:表示按次购买。

说明:
  • 包周期购买场景请求时不传该参数。
  • 按次购买场景请求时传该参数。

saasExtendParams

O

String

2048

扩展参数。非必填。

扩展参数格式为json数组字符串通过 urlEncode(base64(saasExtendParams))携带到url参数中。在得到saasExtendParams参数的值后,需要通过base64Decode(urlDecode(saasExtendParams))获取扩展参数json数组。

例如:[{"name":"emailDomainName","value":"test.xxxx.com"},{"name":"extendParamName","value":"extendParamValue"}]

其中emailDomainName和extendParamName为发布商品时填写值。

说明:

(本说明仅适用于WeLink开放平台开发的商品)

请先在应用接入调试页面调测“WeLink商品接口调测必选参数”,发布WeLink开放平台开发的商品时,会包含name值为platformParams的扩展参数,值为json格式字符串,包含tenantName、tennantId、userId三个参数。

  • tenantName是WeLink中的企业名
  • tennantId是WeLink中的企业唯一标识符
  • userId是WeLink中订阅该应用的用户,通常为企业管理员(WeLink企业管理员可以有多个且企业管理员账号可被注销)

amount

O

Integer

4

数量类型的商品定价属性。非必填。

属性名称:数量(支持服务商自定义名称)

单位:个(次)

说明:

对于包周期或一次性计费的SaaS商品,租户下单购买包含“数量”线性属性的规格时,会填写及调整购买的个数或次数。

例如:30个用户

diskSize

O

Integer

4

数量类型的商品定价属性。非必填。

属性名称:硬盘大小(支持服务商自定义名称)

单位:GB

说明:

对于包周期或一次性计费的SaaS商品,租户下单购买包含“硬盘大小”线性属性的规格时,会填写及调整购买多少GB。

例如:100GB

bandWidth

O

Integer

4

数量类型的商品定价属性。非必填。

属性名称:带宽(支持服务商自定义名称)

单位:Mbps

说明:

对于包周期或一次性计费的SaaS商品,租户下单购买包含“带宽”线性属性的规格时,会填写及调整购买多少Mbps。

例如:20Mbps

  • 2018年5月12日新增接口参数:trialFlag和skuCode。
    • 2018年5月12日之后发布产品或已发布成功的产品新增规格时,请填写此新参数并通过接口调试(trialFlag的三种值都要调试通过)。
    • 2018年5月12日之前已发布成功的产品如果不涉及免费试用变更,不要求做接口调试。
  • 2018年8月9日新增SaaS计费模式“按次”发布接口,如需选择“按次”发布,遵循SaaS类商品接入指南调试通过后才可选择该计费模式“按次”发布商品。
  • 2019年9月27日新增数量类型定价属性接口参数:amount、diskSize和bandWidth。如需发布支持多SKU定价的商品规格,且定价属性中包含数量类型的属性(数量、带宽、硬盘大小等),请先在商品属性管理页面新建数量类型属性,然后回到调试页面选择要进行调试的数量类型属性,填写参数值,进行调试。
  • 接口调试说明请参考 接口调试

请求消息示例:

https://isvserver.com/produceAPI?activity=newInstance&businessId=03pf80c2bae96vc49b80b917bea776d7&customerId=3736bb8ad93b43fca8012c64a82cec25 &expireTime=20180725000000&orderId=HWS001014ED483AA1E8&productId= 005a8781ef0c4a47a3dbfc4c1e72871e&saasExtendParams=W3sibmFtZSI6ImVtYWlsMTEiLCJ2YWx1ZSI6ImVtYWlsMTFlbWFpbDExIn0seyJuYW1lIjoiZW1haWwyMiIsInZhbHVlIjoiZW1haWwyMmVtYWlsMjIifV0%3D&timeStamp=20170725025113409&testFlag=0&authToken=09lsS5y+KCtxBu+ON4TXv1SrjH5KVYka9sx2MauHrQU=

响应消息

响应参数说明请参见下表:

参数

是否必选

类型

取值范围

参数说明

resultCode

M

String

6

调用结果码。

具体请参见调用结果码说明

resultMsg

O

String

255

调用结果描述。

encryptType

O

String

2

敏感信息加密算法

1:AES256_CBC_PKCS5Padding(默认值)

2:AES128_CBC_PKCS5Padding

说明:

敏感信息加密算法是AES256_CBC_PKCS5Padding时返回值为1,敏感信息加密算法是AES128_CBC_PKCS5Padding时返回值为2。

instanceId

O

String

64

实例ID,服务商提供的唯一标识。

建议此ID直接使用该订单首次请求时云市场传入的businessId,以确保instanceId的唯一性。

说明:

云市场每次请求时的businessId皆不一致,如取businessId作为instanceId,取订单首次调用时的businessId即可。

若通过其他方式生成instanceId,请确保该参数的全局唯一性,例如使用UUID生成。避免生成的instanceId发生重复,导致用户开通SaaS实例失败。

appInfo

O

AppInfo

N/A

应用实例信息。

客户购买商品后,服务商需要返回登录服务地址(网站地址)或免登地址供客户后续操作。

appInfo为JSON字符串,数据结构定义请参见下表。

AppInfo数据结构定义如下:

参数

是否必选

类型及范围

取值范围

参数说明

frontEndUrl

M

String

512

前台地址。

客户购买商品后,可以访问的网站地址。

adminUrl

O

String

512

管理地址。

客户购买商品后,可以访问的管理后台地址。

userName

O

String

128

加密后的管理员帐号。

客户购买商品后,访问服务商管理后台的账号(一般为邮箱和手机号)。该值由16位iv加密向量和base编码后的用户名密文组成。

iv+base64(AES_CBC(accessKey,userName))

需要使用Key值对账号做加密处理,加密算法以encryptType参数为准。代码示例请参见ISV Server对资源开通后的用户名和密码加密

password

O

String

128

加密后的管理员初始密码。

客户购买商品后,访问服务商管理后台的密码(一般由服务商生成)。该值由16位iv加密向量和base编码后的密码密文组成。

iv+base64(AES_CBC(accessKey,pwd))

需要使用Key值对密码做加密处理,加密算法以encryptType参数为准。代码示例请参见ISV Server对资源开通后的用户名和密码加密

ip

O

String

64

网站的IP。

memo

O

String

1024

备注。

  • 获取accessKey,请参见获取Key值
  • 用户名密码所校验的长度是密文的长度(包括iv向量)。
  • 服务商的服务器在处理接口请求时,需要做好幂等性处理。

    云市场服务有可能重发请求,针对同一订单号,服务商的服务器应当返回成功的响应及应用实例信息,不应该创建新的SaaS实例,返回之前成功创建的实例信息即可。

  • SaaS实例信息如果有变化,例如,adminUrl发生变化,在云市场服务重新调用此接口,传入相同的orderId时,服务商的服务器需要返回更新后的SaaS实例信息。为保证安全,云市场不持久存储SaaS实例信息。
  • ISV生产接口响应中,,除memo参数外,其他参数请不要返回中文。

响应消息示例:

{
    "resultCode":"000000",
    "resultMsg":"success.",
    "instanceId":"03pf80c2bae96vc49b80b917bea776d7",
    "encryptType":"1",
    "appInfo":{
        "frontEndUrl":"http://www.isvserver.com",
        "adminUrl":"http://www. isvserver.com",
        "userName":"luQg154bx766030TobyT0ghfQRx3tvVEdpwMRg==",
        "password":"7Bx4DyX7980a59T0qbhnpfhCz82Uc5cZQQtExg=="
    }
}

分享:

    相关文档

    相关产品

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

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问