SaaS商品自动交付接入腾讯云市场
为什么需要将SaaS商品自动交付接入腾讯云市场呢?
腾讯云官网的解释是:对于需要将服务端的能力开放给第三方赚取收入的企业、开发者,可通过腾讯云 API 网关将 API 服务上架至云市场,从而实现服务端能力的货币化。
简单来说就是将我们SaaS平台提供的服务(比如这里为用户一键生成电商小程序)放到腾讯云市场,借助于腾讯云市场这个大平台引入的流量,用户在里面购买了我们的服务。云市场使用腾讯云开放平台( oAuth)作为免登以及账号打通的解决方案,方便我们(服务商)对接腾讯云以及购买了我们服务的客户无缝登录腾讯云的服务商控制台(对购买的服务(后面称为实例)进行操作,包括续费、退款、变更等等)。
关于权限和套餐的问题,在用户选择了套餐版本,购买支付后,云市场会携带与订单相关的字段信息(其中就包括用户购买的套餐版本,支付金额等等),触发实例创建通知接口。
一、申请腾讯云开放平台
为方便免登以及账号打通,对于接入云市场SAAS自动发货的服务商需要首先申请“腾讯云开放平台”( oAuth)的接入能力。由于腾讯云暂未开放申请“腾讯云开放平台”的入口,因此需要先发邮件到mgdloud@tencent.com协助开通,需要提供的信息如下:
1)腾讯云账户账号ID
2)平台名称(会展示在授权页面)
3)平台logo(260*48范围内,透明底png。会展示在授权页面)
4)平台官网地址(用户可以跳转到第三方平台官网)
5)平台回调地址(去掉http[s]的域名部分,不能只是顶级域名,如可以为: api example.com,而不允许为:example.com)
申请成功后你将会得到如下的信息:
1)appId:第三方平台唯一标识
2)appSecretld/ appSecretKey:用来请求腾讯云api时的密钥对
3)encryKey:用来校验回调地址中带入的code参数
二、参数设置
1、用公司的账号登录腾讯云-控制台-服务商管理
2、开发配置-SaaS接入设置
说明:这里要配置三个参数
1)发货URL
云市场用户通知服务商的接口URL,说明:必须是https开头(要保证SSL证书有效),并且不能包含查询字符串。
比如我这里配置的发货URL:https://www.test.com/api/tencent/cloud/doit
下图是doit()方法示例:
2)发货Token
Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)
3)开放平台APPID
腾讯云开放平台申请成功后的APPID
3、在线调试
三、腾讯云开放平台接入说明
为方便服务商对接腾讯云以及商品购买客户无缝登陆服务商控制台,云市场使用了腾讯云开放平台( oAuth)作为免登以及账号打通的解决方案。
1、账号打通
云市场在发货通知中加入客户在腾讯云的标识 openId(对于不同服务商客户openId不同),服务商在获取到openId之后,需要首先去査询该客户是否已经跟本地系统某个账户绑定,如果已经绑定,则直接处理发货逻辑,若未绑定,则应该在本地系统生成一个账号并与 openId绑定。
2、免登校验
服务商对于发货的响应数据中应该返回一个authUrl,该url最终会展示给客户。客户点击该url后,服务商应该让客户登陆到控制台以进行资源相关操作。服务商授权过程如下:
四、腾讯云市场发货接入说明
1、签名规则
服务商提交接口URL和Token后,云市场会以URL PARAMS(GET参数)的方式添加到接口URL上,携带的参数如下:
2、接入协议规则
3、其它
由于云市场暂不支持降配退款操作,请在创建商品时务必让高配规格的价格高于低配规格价格。如后续云市场支持降配退款会另行通知。
五、腾讯云开放平台接口
1、授权流程
1)客户点击 authUrl(假设为:http://example. com/qcloud/auth)后,若未检测到用户登陆,则应该将客户跳转(302跳转)到:
https://www.qcloud.com/open/authorize?scope=login&apid=1234567890128re
directurl=https%3a%2f%2fexample.com%2faPi%2foauth%2Fqcloud%2fcaLlback&state=1234
其中app_id为申请腾讯云开放平台后获得的第三方平台唯一标识, redirect_url为提交腾讯云开放平台的平台回调地址域名。
2.用户在腾讯云开放平台页面进行登录并且授权
3.页面跳转回第三方网站地址 redirect url,并且带上参数code和 signature,类似:
https/ example. com/api/
oauth/gcloud/callback?code=04f82b0d6fcfcOc2d967d808e6010bd8&signature=eafc9653bd5c17c6ade
其中 signature=md5(code+ encryKey)(因为某些场景下,是腾讯云直接跳转到授权页面,用户授权后跳转到第三方地址。此种场景的 state参数不是第三方平台构造,为了防止暴力破解, signature参数对code的合法性做了一个校验)
注意:该code一次性有效,并且有效期为6分钟
获取code并且校验合法之后,调用code校验接口获取用户的以下信息:
1)userOpenld:用户在该第三方平台下的身份唯一标识(不同第三方平台获取的标识不同)
2)userOpenld:如果同一个腾讯云账户有多个第三方平台,用户在这些第三方平台的 userUnionld一致
3)userAccessToken:用户访问toke
4)expiresAt:用户访问 token过期时间(时间戳,当前时间+2小时)
5)userRefreshToken:刷新token,有效期为60天。其中 useropenId即为用户在腾讯云的 openId。
2、code校验接口
接口url:
https://open.apigcloud.com/v2/index.php?
Action=GetUserAccessToken&Secretld=AKIDQirtkVkUjoiQwHBRIOXt55v0Zx9AQyd9& Nonce=56636&Timestamp=14921370228userAuthCode=735bd6a208f9d70762c1 bc03ad67540b&Signature=gypUUyYIFfvIUZ2DGkccH9rkyEs%3D
接口说明:
请求参数说明:
响应参数规范:
六、发货接口规范
接口参数说明:
1、token和接口url校验接口
2、实例创建通知接口
接口名:createlnstance
接口说明:如果实例创建需要消耗很长时间,可以返回{" signEd":"e"},云市场会在此后会以1分钟、3分钟、5分钟、10分钟...的频率循环调用此接口,最大调用时间为1天,如果1天后还是返回{" signId":"0"},则按照创建失败处理。
请求参数说明:
响应参数规范:
请求示例:
3、实例续费通知接口
4、实例配置变更通知接口
5、实例过期通知接口
6、实例销毁通知接口
七、云市场实例操作入口说明
1、实例创建触发入口
进入腾讯云市场:https://market.cloud.tencent.com/
云市场实例创建即为商品购买,客户购买商品并支付后云市场会通过实例创建通知接口通知给商品相应服务商。
这里支付后稍等几分钟,系统便会自动发货。将服务商的网站以及免登地址,为用户创建的账号都返回给用户。
说明:购买后的所有商品均以实例(资源)的方式展现展示给客户。所有购买的实例的入口为:https://console.cloud.tencent con/ servicemarket。之后客户的操作均为对实例的操作。
在这里可以看到刚才的购买记录,点击右边的管理按钮可以看到下图:
2、实例续费/变更触发入口
1)如果商品有试用版,且客户购买了试用版,则当客户从试用版转为正式版,云市场会调用对应商品服务商的配置变更接口。
2)如果商品就是正式版,那么点击续费的按钮,就会触发实例续费入口。
原文:https://www.cnblogs.com/hld123/p/13810530.html