payHook / server /notify.py
rogerxavier's picture
Update server/notify.py
e07a807 verified
from fastapi import APIRouter, HTTPException, Request
from fastapi.responses import JSONResponse
from .hook import *
from .pydanticModel import *
from .dao import tableStore
router = APIRouter()
#afdian的回调是post huggingfaceb不知道抽什么风只能二级路由
@router.get('/uu',response_model=AfdianResp)
@router.post('/uu',response_model=AfdianResp)
async def update_balance(afdianHookjson: AfdianHookJson):
resp = {'ec': 200}
# 检查 ec 是否为 200
if afdianHookjson.ec != 200:
return {'ec': "afdian hook错误,ec 不是 200"}
# 提取订单详情和可选参数
order_details = afdianHookjson.data.order
custom_order_id = order_details.custom_order_id
total_amount = order_details.total_amount
table_store = tableStore(ots_client=router.ots_client, table_name=router.table_name)
if all([custom_order_id is not None, total_amount is not None]):
# 说明是余额类型
try:
# 先给mysql的数据库添加 - 这个毕竟久 稳定 但是不应该影响其他数据库添加(万一不用了)--------------------
updateBalance(email=custom_order_id, amount=total_amount)
# 先给mysql的数据库添加 - 这个毕竟久 稳定 但是不应该影响其他数据库添加(万一不用了)--------------------
except Exception as e:
print("updateBalance v2b digitalocean mysql failed",e)
try:
#应该改成从原来的余额基础上加total_amount的值
table_store.getUserInfo(email=custom_order_id)
cur_balance = table_store.balance
balance_new = cur_balance+ total_amount
# 更新余额列
update_balance_result = table_store.updateColumnByPrimaryKey(
key=router.key,
key_value=custom_order_id,
update_column='balance',
update_column_value=balance_new
)
if update_balance_result:
return resp #全部成功运行则返回爱发电要求的ec =200
else:
return {'ec': "updateBalance tablestore 结果失败"}
except Exception as e:
print(e)
return {'ec': "尝试 updateBalance tablestore 失败"}
else:
#这个直接返回200吧,反正测试接口的时候需要 ,平时也不用到
# return {'ec': "afdian hook custom_order_id 或者 total_amount 为 None"}
return resp
# test
# @router.post('/uu')
# async def prinf_test_json(request: Request):
# json_data = await request.json()
# print("收到afdian请求:", json_data)
# return {'ec': 200}