License授权码类商品接入示例工程
引导式阅读
Java
License授权码类商品接入示例工程
作者
c***r
上架时间
2023-07-12 06:29:45

功能介绍

基于Spring boot构建,可以直接启动,通过修改application.properties配置文件里的server.port可以改变启动端口号, 默认访问路径为:http://127.0.0.1:8080/isv/produce ,可以通过卖家中心的应用工具菜单下的license授权码交付接口调试页面生成链接用来本地调试

更新授权码有效期

按周期售卖的商品,商家必须实现续费场景的接口开发

  • 1.客户续费下单,云商店将调用该接口请求商家执行业务延期,商家接口需要执行将到期日进行更新,并返回通知云商店。

  • 2.商家需要保障续费接口通畅,将业务进行延期,如续费失败,将可能导致用户的业务被释放的风险。

  • 3.针对续费场景接口调用失败的情况,云商店会最多调用60次(每2分钟1次)后停止调用,“卖家中心—生产接口消息”中可查询接口“异常信息”,若商家接口问题在60次调用时间内解决,则在下一次调用时接口响应成功;若商家接口问题在60次调用后仍无解决,系统停止调用,请在修复接口异常后,在云商店对该失败调用进行重新调用。

  • 4.请及时关注商家信息中客服邮箱以及云商店账号绑定的邮箱的通知,收到调用失败通知邮件及时处理接口异常。

  • 5.云商店会对接口异常的情况做监控,如License商品频繁出现因接口异常的情况,云商店将对该商品做下架处理。

变更授权码状态

  • 1.场景一:客户购买的商品过期并超过宽限期后,云商店调用该接口,商家接到该通知以后应冻结该授权码对应的License应用实例;场景二:华为云接到公安/司法要求或出于其他原因,需要冻结/解冻客户资源时,云商店调用该接口,商家接到该通知以后应冻结/解冻该授权码对应的License应用实例
  • 2.针对过期场景接口调用失败的情况,云商店会持续调用到60次(每2分钟1次)后停止调用,“卖家中心—生产接口消息”中可查询接口“异常信息”。若商家接口问题在60次调用时间内解决,则在下一次调用时接口响应成功;若商家接口问题在60次调用后仍无解决,系统停止调用,请在修复接口异常后,在“卖家中心—生产接口消息”该订单记录的右侧点击“重新启动”,进行接口的重新调用。
  • 3.请及时关注商家信息中客服邮箱以及云商店账号绑定的邮箱的通知,收到调用失败通知邮件及时处理接口异常。
  • 4.商店会对接口异常的情况做监控,如License商品频繁出现因接口异常的情况,云商店将对该商品做下架处理。
  • 5.商品过期流程说明如下:
    • 5.1 License类商品过期且超过宽限期,未续费
    • 5.2 调用变更授权码状态接口。
    • 5.3 冻结授权码对应的License应用实例。
    • 5.4 返回变更授权码状态结果。
  • 6.司法/公安冻结/解冻流程说明如下:
    • 6.1 华为云按照司法/公安部门指示,冻结用户资源。
    • 6.2 调用变更授权码状态接口。
    • 6.3 冻结/解冻授权码对应的License应用实例。
    • 6.4 返回变更授权码状态结果。

释放授权码

  • 1.客户购买的商品过期并超过保留期后,云商店调用该接口,商家接到该通知以后应该将授权码对应的资源删除。
  • 2.云商店调用该接口时,商家需要保障接口通畅,对该授权码对应的资源进行释放,如释放失败,可能导致用户仍可使用该资源。
  • 3.针对商品过期且未续费的场景下,接口调用失败的情况,云商店会持续调用60次(每2分钟1次)后停止调用,“卖家中心>生产接口消息”中可查询接口“异常信息”。若商家接口问题在60次调用时间内解决,则在下一次调用时接口响应成功;若商家接口问题在60次调用后仍无解决,系统停止调用,请在修复接口异常后,在“卖家中心—生产接口消息”该订单记录的右侧点击“重新启动”,进行接口的重新调用。
  • 4.请及时关注商家信息中客服邮箱以及云商店账号绑定的邮箱的通知,收到调用失败通知邮件及时处理接口异常。
  • 5.商店会对接口异常的情况做监控,如License商品频繁出现因接口异常的情况,云商店将对该商品做下架处理。

可以学到什么

  • 可以完成联营license授权码类商品接入指南中第三章节商家接入接口的代码开发工作。商家可以通过参考该示例代码来更有效的管理License授权码商品,保障商品状态的及时变更。
  • 涉及场景为:对云商店请求参数进行验签、更新授权码有效期、变更授权码状态、释放授权码。

开发时序图/流程图

img.jpg

流程说明如下:

  • 申请入驻云商店,成为商家。
  • 云商店运营人员审核公司的资质信息。
  • 准备生产接口服务器,根据本接入指南开发生产接口。
  • 在卖家中心申请测试授权码。
  • 通过测试授权码调测云商店授权码开放接口
  • 在卖家中心调试商家接入生产接口
  • 在卖家中心申请发布License类商品,模板选择License授权码。
  • 云商店运营人员审批通过后,产品为联营商品。
  • 在卖家中心自助管理生产接口通知消息

前置条件

  • 您需要拥有华为云商家账号,进入卖家中心页面,单击左侧导航的“商家管理>商家信息”。

  • 在商家信息页面单击小眼睛图标获取accessKey值。 (https://console.huaweicloud.com/marketplace/isv/?region=cn-north-4#/console/business) img3.jpg

关键代码片段

对云商店请求参数进行签名验证:

/** * 商家接收到云商店发送的请求后需要对入参进行验签 * 取出入参并排序,然后进行签名,并和请求里面的签名信息进行比较来验签 * 请求里含有签名reqSignature;随机数nonce;时间戳reqTimestamp * 先进行验证签名 */ public static IMessageResp verifySignature(IsvProduceReq isvProduceReq, HttpServletRequest request, String accessKey) throws Exception { IMessageResp resp = new IMessageResp(); resp.setResultCode(ResultCodeEnum.SUCCESS.getResultCode()); resp.setResultMsg(ResultCodeEnum.SUCCESS.getResultMsg()); Map<String, String[]> paramsMap = request.getParameterMap(); String reqParams = objectMapper.writeValueAsString(isvProduceReq); // 获取请求时间戳 String reqTimestamp = getParamValue(paramsMap, IsvProduceConstant.TIMESTAMP); // 获取随机字符串 String nonce = getParamValue(paramsMap, IsvProduceConstant.NONCE); // 获取请求里的签名 String reqSignature = getParamValue(paramsMap, IsvProduceConstant.SIGNATURE); // 生成签名信息 String signature = getSignature(accessKey, reqParams, nonce ,reqTimestamp); // 判断计算后的签名与云市场请求中传递的签名是否一致 不区分大小写 if (reqSignature.equalsIgnoreCase(signature)) { return resp; } resp.setResultCode(ResultCodeEnum.INVALID_TOKEN.getResultCode()); resp.setResultMsg(ResultCodeEnum.INVALID_TOKEN.getResultMsg()); return resp; }

如果验证不通过须返回失败,如果返回了成功则云商店默认数据同步成功,不会再重新触发数据同步;

如果验证通过后需要根据请求参数activity来区分具体同步场景,根据不同场景,商家需实现对应的业务逻辑:

/** * 根据活动类型调用对应的接口实现方法:更新授权码有效期、变更授权码状态、释放授权码 */ private Map<String, Function<IsvProduceReq, IMessageResp>> initConsumers() { Map<String, Function<IsvProduceReq, IMessageResp>> consumers = new HashMap<>(); consumers.put(Activity.REFRESH, this::refresh); consumers.put(Activity.UPDATE, this::updateStatus); consumers.put(Activity.RELEASE, this::release); return consumers; }

详细示例代码可参见源码

参考

具体接入流程介绍参考:

联营License类商品接入指南(2.0版本):https://support.huaweicloud.com/accessg-marketplace/zh-cn_topic_0070649166.html

联营License类商品接入指南(旧版):https://support.huaweicloud.com/accessg-marketplace/zh-cn_topic_0070649151.html

通用SaaS类商品接入指南:https://support.huaweicloud.com/accessg-marketplace/zh-cn_topic_0046212972.html

联营SaaS类商品接入指南:https://support.huaweicloud.com/accessg-marketplace/zh-cn_topic_0070649101.html