Skip to content

为SAAS自己平台提供接口方案

验证用户合法流程

采用的是随机salt+SHA-256的加盐哈希

准备工作

  1. 调用django/utils/crypto.py里的get_random_string方法生成一个16位秘钥key,把这个秘钥、以及生成一个唯一递增的5位数AppId保存在tbl_partner里面。

  2. 把上面生成的秘钥和AppID微信发给加盟商。

加盟商加密过程:

1. 生成一个8位的盐值salt、一个当前unix时间戳timestamp、一个随机数random_num(0-999之间)
2. 把AppId、timestamp、random_num、key组合成string,并进行utf-8编码
3. 使用salt和上面编码的字符串进行sha256加密,循环加密5次,然后返回salt+加密后字符串
4. 把上面返回的结果进行base64编码。

发送参数:Appid + timestamp + random_num + 加密后key+ 接口所需参数

服务解密过程:

1. 判断timestamp时间,如果时间和现在时间相差大于1小时,返回重新创建。
2. 使用Appid查询db,获取key值,把传过来的值进行上面加密的算法,salt通过传递过来的key值进行base64解码取前8位。
3. 比较算出的值是否和传递过来的值一致,以进行后续的数据组织。

各语言生成盐值salt方法:屏幕快照 2017-06-22 上午9.47.10

DB tbl_partner表新增字段


open_secret   "gkdvpmd8o26augs8hs38778lra9fldw1" # 手动生成给saas的key,用于加密
appid         12345  # 唯一字段

接口

查询接口

接口名:/partner_site/orders
Method:POST
请求:
    order_id    M   str     订单号
    appid       M   str     saas标识号
    timestamp   M   str     unix时间戳,长度是10位
    random_num  M   str     随机数(0-999之间)
    key         M   str     经过加密的值

响应:
    code    M   int     返回码,0表示成功,其他表示错误
    msg     M   string  错误信息
    data    M   string    数据字段为订单表字段;
示例: