request 中url拼接排序參數與簽名算法


一、參數要求:

{

appId:應用在后台創建應用時分配的應用編號,與應用密鑰一一對應

sign:按照當前請求參數名的字母序進行升序排列(排序時區分大小寫,除sign外,其它值不為空的參數都參與簽名), 將所有參數值組合以key=value 的形式拼成一個新字符串,不同參數值“&”之間沒有任何分隔符,最后加上對應的簽名密鑰appKey 進行簽名運算。 如進行MD5簽名運算的串為 MD5(key1=value1&key2=value2appKey)

time: 1970年以來的毫秒數,每次請求都要更新,有效期5分鍾

version: 接口版本號,目前默認寫1.0

}

二、請求path示例:http://test.com/**/**?account=string&appId=string&sign=string&time=0&version=string

三、代碼實現:

 
        
# coding=utf-8
from urllib.parse import urlencode
from collections import OrderedDict
import hashlib
from base_utils.crypte import Md5
import time

params = {
            "version": "1.0",
            "account": "zhangsan",
            "appId": "gyAppId",
            "time": int(time.time() * 1000)
        }

def md5(self, data):
     self.md5 = hashlib.md5()
     self.md5.update(data.encode("utf-8"))
     return self.md5.hexdigest()

def url_join(server, uri, appkey, params):
    args = OrderedDict()
    for key in sorted(params.keys()):
        args.update({key: params[key]})
    nparams = urlencode(args)
    args = urlencode(args) + appkey
    sign = Md5().md5(args)
    prefix, suffix =nparams.split("&time=")
    print("".join([server, uri, '?',prefix,
                   "&sign=", sign, "&time=", suffix]))
    return "".join([server, uri, '?',prefix,
                   "&sign=", sign, "&time=", suffix])
 
        




 
 
        
 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM