如何根据payload生成中英文签名python

How to generate signature based on payload with both Chinese and English in it python

我尝试通过下面的python代码生成签名(签名),多次编辑,但总是得到错误的签名,如果有人能帮助解决这个问题,我将不胜感激:

import hashlib
import json

import requests

nick = ['奇思种子']
key = 'd0da37aaab474d0195cf649c889f8d34'
param = {"method":"gy.erp.shop.get","appkey":"114888","sessionkey":"3fa8000e6e844a5d865c27d4e7e1175c","page_size":"100"}
# param['nick'] = str(nick[0].encode('utf-8')) 
param['nick'] = str(nick[0]) 
pjson = json.dumps(param)


postdata = {'param': pjson }

str1 = key + pjson + key 
str2 = str1.replace(": ", ":") 
str3 = str2.replace(", ", ",") 

md = hashlib.md5()
md.update(str3.encode())
sign = md.hexdigest().upper()
param["sign"] = sign

pjson2 = json.dumps(param)
str_2 = pjson2.replace(": ", ":") 
str_3 = str_2.replace(", ", ",") 

您必须将 ensure_ascii 属性设置为 False。

import hashlib
import json

import requests

nick = ['奇思种子']
key = 'd0da37aaab474d0195cf649c889f8d34'
param = {"method":"gy.erp.shop.get","appkey":"114888","sessionkey":"3fa8000e6e844a5d865c27d4e7e1175c","page_size":"100"}
# param['nick'] = str(nick[0].encode('utf-8')) 
param['nick'] = str(nick[0]) 
pjson = json.dumps(param, ensure_ascii=False)


postdata = {'param': pjson }

str1 = key + pjson + key 
str2 = str1.replace(": ", ":") 
str3 = str2.replace(", ", ",") 

md = hashlib.md5()
md.update(str3.encode('utf-8'))
sign = md.hexdigest().upper()
param["sign"] = sign

pjson2 = json.dumps(param)
str_2 = pjson2.replace(": ", ":") 
str_3 = str_2.replace(", ", ",")