Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xqh_temu_api
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
lqy
xqh_temu_api
Commits
c3fbce7a
提交
c3fbce7a
authored
2月 11, 2026
作者:
刘擎阳
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1.优化
上级
ee8a75bf
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
31 行增加
和
8 行删除
+31
-8
util.py
app/util.py
+31
-8
没有找到文件。
app/util.py
浏览文件 @
c3fbce7a
...
...
@@ -74,23 +74,46 @@ def calculate_sign(json_data, app_secret):
return
md5_hash
def
build_response
(
success
,
error_code
,
error_msg
,
request_id
=
None
,
result
=
None
):
"""
统一构建返回结构的方法
"""
return
{
"success"
:
success
,
"errorCode"
:
error_code
,
"errorMsg"
:
error_msg
,
"requestID"
:
request_id
if
request_id
else
""
,
# 如果没有ID则返回空字符串
"serverTimeMs"
:
int
(
time
.
time
()
*
1000
),
"result"
:
result
,
}
def
check_sign
(
f
):
@functools.wraps
(
f
)
def
decorated_function
(
*
args
,
**
kwargs
):
# 初始化 request_id,防止解析 JSON 失败时报错
request_time
=
datetime
.
utcnow
()
timestamp
=
int
(
time
.
time
())
request_id
=
request_time
.
strftime
(
"
%
Y
%
m
%
d
%
H
%
M
%
S"
)
+
str
(
timestamp
)
try
:
# 获取原始请求体 JSON
#
1.
获取原始请求体 JSON
data
=
request
.
get_json
(
force
=
True
,
silent
=
True
)
if
not
data
:
return
jsonify
(
{
"code"
:
400
,
"msg"
:
"Invalid JSON"
}),
400
#
获取请求中的
签名
return
jsonify
(
build_response
(
False
,
400
,
"Invalid JSON Body"
,
request_id
))
#
3. 获取客户端
签名
client_sign
=
data
.
get
(
'sign'
,
''
)
# 计算服务端签名
if
not
client_sign
:
return
jsonify
(
build_response
(
False
,
401
,
"Missing Signature"
,
request_id
))
# 4. 计算服务端签名
server_sign
=
calculate_sign
(
data
,
APP_SECRET
)
# 对比签名
#
5.
对比签名
if
client_sign
!=
server_sign
:
# 实际开发建议记录日志: print(f"Client: {client_sign}, Server: {server_sign}")
return
jsonify
({
"code"
:
401
,
"msg"
:
"Invalid Signature"
}),
401
# 调试用(生产环境建议记录到日志文件)
# print(f"Client: {client_sign}, Server: {server_sign}")
return
jsonify
(
build_response
(
False
,
401
,
"Invalid Signature"
,
request_id
))
# 6. 验证通过,执行原有业务逻辑
return
f
(
*
args
,
**
kwargs
)
except
Exception
as
e
:
return
jsonify
({
"code"
:
500
,
"msg"
:
str
(
e
)}),
500
# 捕获所有未预料的异常,保持返回格式一致
return
jsonify
(
build_response
(
False
,
500
,
f
"Server Error: {str(e)}"
,
request_id
)),
500
return
decorated_function
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论