• TaoBaoAPI简介3


    Notify消息

    (在使用签名规则时,基本的步骤都差不多!步骤:排序、拼装、签名、验证签名)

    1.功能描述:当用户订购淘宝服务成功后,TOP会发送通知消息给ISV应用。ISV可收集用户订购信息进行统计核算

    2.用户订购交互流程:

    在淘宝服务中,用户发起订购;转到订购中心,用户缴费并完成订购;再转到淘宝服务,发送ISV通知消息;由淘宝服务到ISV应用,接收通知消息并未用户开通服务

    3.Notify消息通知接收机制:
    <1>.消息类型包括:新订、续订、升级、退订。
    <2>.订购通知是通过Http协议Post给ISV应用的NotifyUrl,
    NotifyUrl的配置可通过后台的应用管理录入。
    <3>.通知功能实现方式是收到消息后,先进行签名验证。
    <4>.编码方式是UTF-8。

    4.Notify消息参数说明
    参数名  类型   描述
    userId  Long   订购者的用户数字Id
    nick    String 订购者的用户昵称
    leaseId Long   租赁实体ID:应用ID或者应用包ID
    validateDate Date 生效日期,例如:2009-01-01 00:00:00
    invalidateDate Date 失效日期,例如:2009-12-31 23:59:59
    factMoney Double 实收金额,例如:899,00,以分为单位
    subscType Long  订单类型,1=订购,2=续费,3=升级,4=后台赠送,5=自动续费,6=订单审核后生成订购关系(预留,目前TOP应用不会用到)
    versionNo Integer 版本编号:1,初级;2,中级;3,高级
    oldVersionNo Long 升级前版本号:1,初级;2,中级
    status Long      状态:1,等待开通;2,开通;3,关闭(1,表示订单将来才生效;2,表示立即生效;3,表示订单失效,用于退订的情况)
    sign  String       签名
    gmtCreateDate Date 订购发生时间
    tadgetCode String  应用实例的应用code即服务code

    5.签名规则
    将除sign之外所有参数获取过来,进行签名算法,最后与sign进行对比

    签名公式:
    sign=MD5(secretCode + param1 + value1 + param2 + value2 + … + paramN + valueN+ secretCode) ).toUpper();
    (注:即使param对应的value为空,也要以param+空串的方式进行签名)
    <1>.排序
    将所有参数param1,param2,……,paramN,按照参数名称字母顺序从小到大排列
    <2>.拼串
    将排好序的参数拼接成串,param1 + value1 + param2 + value2 + … +paramN + valueN
    <3>.首尾加密钥
    在上述字符串首部和尾部都加上应用的密钥secretCode,即secretCode + param1 + value1 + param2 + value2 + … +paramN + valueN + secretCode
    <4>.签名
    进行MD5编码,即:MD5(secretCode + param1 + value1 + param2 + value2 + … + paramN + valueN+ secretCode) )
    <5>.转换大写
    再转换成大写字母,即:MD5(secretCode + param1 + value1 + param2 + value2 + … + paramN + valueN+ secretCode) ).toUpper()

    *****************************************************************
    容器回调参数签名规则(版本号验证)

    1.容器回调参数签名的意义
    对开发者而言,从此不需要依赖于Notify通知消息或者taobao.appstore.subscribe.get来给用户开通订购关系。开发者只需对从容器过来的访问请求进行签名验证,一旦校验通过,即可让用户访问该应用。即:完全信任淘宝容器过来的访问请求。关于用户的订购关系,后续我们会在合作伙伴后台里提供查询和导出功能,同时保留API查询功能

    2.参数说明
    目前,在使用淘宝箱订购的应用时,系统会跳转到"用户TOP授权码"页面,需要用户同意"免责声明 ",该页面出接收回调签名参数外,还接收如下四个请求参数:
    参数名  类型  描述
    leaseId Long 插件实例ID
    versionNo Long 用户订购的应用版本号
    appkey  String 应用的AppKey
    timestamp Long 当前系统的时间戳
    (注:考虑传递明文参数的安全性,需要对以上参数进行签名)

    3.签名规则

    <1>.排序:
    根据参数名称,将以上四个请求参数,按照字母先后顺序排序,例如:leaseId=51865,versionNo=1,appkey=93996,timestamp=1287547223869,排好序为:appkey=93996,leaseId=51865,timestamp=1287547223869,versionNo=1
    <2>.拼装:
    将以上排好序的参数键值对,拼装成串,例如:appkey=93996,leaseId=51865,timestamp=1287547223869,versionNo=1拼装为:appkey93996leaseId51865timestamp1287547223869versionNo1
    <3>.签名(utf-8编码)
    将secret同时拼接到参数字符串头、尾部,进行md5加密,再转化成大写,格式是:uppercase(hex(md5(secretkey1value1key2value2...secret))。 例如:secert= c1927d998894b85dfab19cbcc8aee93b, sign=uppercase(hex(md5(c1927d998894b85dfab19cbcc8aee93bappkey93996leaseId51865timestamp1287547223869versionNo1c1927d998894b85dfab19cbcc8aee93b))) = 639B98FFD3B33D275238FA5B476AAD52
    <4>.验证签名
    将请求参数sign的值与以上步骤计算出来的sign比较,如果相等,则签名验证通过,否则签名验证失败 可选地,可以判断当前系统的时间戳与请求参数timestamp(精确到毫秒级别)进行比较,如果超过一定的时间如6分钟,则拒绝该次请求

  • 相关阅读:
    【BSP视频教程】STM32H7视频教程第13期:系统讲解CortexM7内核MPU和Cache,理解通透(20220417)
    H7TOOL发布固件V2.15, 脱机烧录增加瑞萨,合泰以及IS25WP全系列SPI FLASH等(20220414)
    【DSP视频教程】DSP视频教程第6期:Matlab和VSCode联调,使用贼舒服,大大方便测试验证,全程无需打开Matlab(20220409)
    【STM32H7教程】第94章 STM32H7的SPI总线应用之双机通信(DMA方式)
    《安富莱嵌入式周报》第261期:2022.04.112022.04.17
    大文件上传
    【virtualBox】【vagrant】网络地址问题ssh工具连接不上/主机ping虚拟机ping不通
    oracle获取表结构
    k8s部署velero去备份etcd
    1 k8s组件介绍以及kubeasz二进制安装
  • 原文地址:https://www.cnblogs.com/SanMaoSpace/p/2143001.html
Copyright © 2020-2023  润新知