天天看点

python接口测试实战--sign签名一、背景二、接口签名规范三、实现代码

生成sign签名值

  • 一、背景
  • 二、接口签名规范
  • 三、实现代码

一、背景

最近测试的项目由于需要给第三方调用,所以增加了安全性的认证,所有的接口调用都需要签名进行验签,

于是研究了一下使用python按照接口签名规范生成sign值。

二、接口签名规范

1、请求参数中的 sign 参数和为空的参数去除后,剩余的多个键值对,将键按照字典序排序,

并以key1=value1&key2=value2的格式拼成一个字符串

2、拼接的字符串需要URLEncode

3、将开发者的key拼接在第一步中排序后的字符串后面得到待签名字符串

4、使用md5算法加密待加密字符串并转为大写即为sign

三、实现代码

下面为实现的

代码片

import time
import requests
import  json
import urllib,hashlib

url = "http://www.xxx.xx"
#获取当前的时间戳
stamp = time.time()
print(stamp)
#转换为int类型的13位时间戳
timestam = int(round(stamp*1000))
print(timestam)
time_new = str(timestam)
print(type(time_new))


data ={
    'appId':'3301820001',
    "outTradeNo":"20201026001",
    "amount":"100",
    "body":"test",
    "timestamp":time_new,
    "notifyUrl":"http://localhost:8080/notify",
}

#将键按照字典序排序
data_order = sorted(data.items(),key=lambda x:x[0],reverse=False)

#将列表转化为字典
data_new = dict(data_order)
print(data_new)

#将key=value键值对进行url编码
datanew = urllib.parse.urlencode(data_new)


datadic = datanew + "&key=BF1BDE5A649724056F904A9335B1C1C7455655"
print(datadic)


#创建md5对象
m = hashlib.md5()

m= hashlib.md5(datadic.encode())
data_md5 = m.hexdigest()
#将小写字母切换为大写字母
sign=data_md5.upper()
print(sign)