diff --git a/.idea/misc.xml b/.idea/misc.xml
index ebed596..8f4d21c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -3,4 +3,5 @@
+
\ No newline at end of file
diff --git a/.idea/table_game_project.iml b/.idea/table_game_project.iml
index bac11bc..776095d 100644
--- a/.idea/table_game_project.iml
+++ b/.idea/table_game_project.iml
@@ -2,7 +2,7 @@
-
+
diff --git a/backend/app/main.py b/backend/app/main.py
index c35cc4e..7acd46a 100644
--- a/backend/app/main.py
+++ b/backend/app/main.py
@@ -47,7 +47,7 @@ initialize_database()
# 注册路由
app.include_router(admin_login.router, prefix="/admin", tags=["Admin"])
# 管理员对用户的操作接口
-app.include_router(admin_user.router, prefix="/admin", tags=["Admin-User"])
+app.include_router(admin_user .router, prefix="/admin", tags=["Admin-User"])
# 管理员订单管理路由
app.include_router(admin_order.router, prefix="/admin", tags=["Admin-Order"])
app.include_router(admin_game.router, prefix="/admin", tags=["Admin-Game"])
diff --git a/backend/app/routers/user_order.py b/backend/app/routers/user_order.py
index c07f63e..a56fceb 100644
--- a/backend/app/routers/user_order.py
+++ b/backend/app/routers/user_order.py
@@ -40,7 +40,7 @@ with open('backend/cert/apiclient_key.pem') as f:
CERT_SERIAL_NO = config.get('wechat','cert_serial_no')
APIV3_KEY = config.get('wechat','apiv3_key')
APPID = config.get('wechat','appid')
-NOTIFY_URL = 'https://table-game-backend.miniprogram.ahaostudio.tech/user/order/paystatus/'
+NOTIFY_URL = 'https://table-game-backend.miniprogram.ahaostudio.tech/user/orders/paystatus/'
CERT_DIR = './cert'
PARTNER_MODE = False
PROXY = None
@@ -284,7 +284,9 @@ async def wxpay_notify(request: Request):
# 获取回调数据
headers = dict(request.headers)
body_bytes = await request.body()
-
+ print(body_bytes)
+ body_unicode = body_bytes.decode('utf-8')
+ print(body_unicode)
# 验证微信支付签名
if not wxpay.verify(headers, body_bytes):
logging.warning("签名验证失败")
@@ -292,8 +294,11 @@ async def wxpay_notify(request: Request):
# 解密回调数据
result = wxpay.decrypt_callback(headers, body_bytes)
+ print(result)
out_trade_no = result.get('out_trade_no')
+ print(out_trade_no)
transaction_id = result.get('transaction_id')
+ print(transaction_id)
if not out_trade_no or not transaction_id:
return JSONResponse(content={"code": "FAIL", "message": "缺少必要参数"}, status_code=400)
diff --git a/backend/app/services/admin_game_service.py b/backend/app/services/admin_game_service.py
index 65743fd..6454b03 100644
--- a/backend/app/services/admin_game_service.py
+++ b/backend/app/services/admin_game_service.py
@@ -39,7 +39,7 @@ def create_game(token: str, game) -> dict:
"""
INSERT INTO games
(game_name, game_type, description, min_players, max_players, duration, price, difficulty_level, is_available, quantity, long_description)
- VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
+ VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
""",
(
game.game_name,
diff --git a/backend/config.conf b/backend/config.conf
index 27b0c55..b871e5c 100644
--- a/backend/config.conf
+++ b/backend/config.conf
@@ -1,9 +1,9 @@
[mysql]
host = localhost
-port = 3306
-user = tguser
-password = jagxor-xokwis-dekqE6
-database = table_game
+port = 3307
+user = root
+password = mysql_YDnNkC
+database = tg01
[jwt]
key = jagxor-xokwis-dekqE6
diff --git a/backend/redis_test.py b/backend/redis_test.py
new file mode 100644
index 0000000..0f64f98
--- /dev/null
+++ b/backend/redis_test.py
@@ -0,0 +1,13 @@
+import redis
+
+# 创建 Redis 连接对象,连接到本地 Redis 实例
+redis_client = redis.Redis(host='localhost', port=6379, db=0)
+
+# 测试 Redis 连接是否正常
+try:
+ # 使用 ping 命令测试连接
+ redis_client.ping()
+ print("Successfully connected to Redis!")
+except redis.ConnectionError:
+ print("Failed to connect to Redis!")
+
diff --git a/demo.log b/demo.log
index 79d655e..49d147d 100644
--- a/demo.log
+++ b/demo.log
@@ -485,3 +485,48 @@ AttributeError: 'WeChatPay' object has no attribute 'verify'
2025-03-10 06:56:57,517 - 41712 - DEBUG: Response status code: 200
2025-03-10 06:56:57,518 - 41712 - DEBUG: Response headers: {'Server': 'nginx', 'Date': 'Sun, 09 Mar 2025 22:56:57 GMT', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': '52', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=8', 'Cache-Control': 'no-cache, must-revalidate', 'X-Content-Type-Options': 'nosniff', 'Request-ID': '08B9B9B8BE0610AE0118A1AA8C5820ABB204289E8502-0', 'Content-Language': 'zh-CN', 'Wechatpay-Nonce': '3a1c171e4f7220784474913327ccd6dc', 'Wechatpay-Signature': 'M3TQvOadhQQwh99p6nA5KzKh6KE3PzEPhdnO45AqXLQEsVGB0k6lGODZ8E1pHE56oBR13AbMmCy9KLGpWnviD3Rl05MaMLAO0KvHVRUBh7HcyGKjPYT5Ul9MSL0AaNK59ziet6CKClQmiupiwXtFuTkt2DcLcgelzd86MIqRQxxkVLl5xWyuRh0gTMo7YJs/yAOxaFKjRjUxbKvY/Go5eB9JcFCLjwkJD7eQJz9dVITPXa96Meu0teekmpcSNBJyF/NfA95Dj33mxvmAMt1ohY58XVT8uG3mJmMJIqZakPW10sX4eABSl2XTM1NgwgMltkJ4tboxDvYNtKD+yLvX7Q==', 'Wechatpay-Timestamp': '1741561017', 'Wechatpay-Serial': '71557EDA8012268B4428C3D6C988C301F1906C59', 'Wechatpay-Signature-Type': 'WECHATPAY2-SHA256-RSA2048'}
2025-03-10 06:56:57,518 - 41712 - DEBUG: Response content: {"prepay_id":"wx100656574693846bf3706e382f888f0001"}
+2025-03-12 18:27:17,318 - 14644 - DEBUG: /etc/localtime found
+2025-03-12 18:27:17,319 - 14644 - DEBUG: 1 found:
+ {'/etc/localtime is a symlink to': 'Asia/Shanghai'}
+2025-03-12 18:27:59,741 - 14685 - DEBUG: /etc/localtime found
+2025-03-12 18:27:59,742 - 14685 - DEBUG: 1 found:
+ {'/etc/localtime is a symlink to': 'Asia/Shanghai'}
+2025-03-12 18:29:02,802 - 14713 - DEBUG: /etc/localtime found
+2025-03-12 18:29:02,803 - 14713 - DEBUG: 1 found:
+ {'/etc/localtime is a symlink to': 'Asia/Shanghai'}
+2025-03-13 01:39:13,358 - 18448 - DEBUG: /etc/localtime found
+2025-03-13 01:39:13,360 - 18448 - DEBUG: 1 found:
+ {'/etc/localtime is a symlink to': 'Asia/Shanghai'}
+2025-03-13 01:40:23,445 - 18466 - DEBUG: /etc/localtime found
+2025-03-13 01:40:23,446 - 18466 - DEBUG: 1 found:
+ {'/etc/localtime is a symlink to': 'Asia/Shanghai'}
+2025-03-13 01:44:20,476 - 18509 - DEBUG: /etc/localtime found
+2025-03-13 01:44:20,477 - 18509 - DEBUG: 1 found:
+ {'/etc/localtime is a symlink to': 'Asia/Shanghai'}
+2025-03-13 01:50:06,243 - 18543 - DEBUG: /etc/localtime found
+2025-03-13 01:50:06,244 - 18543 - DEBUG: 1 found:
+ {'/etc/localtime is a symlink to': 'Asia/Shanghai'}
+2025-03-13 01:50:56,212 - 18608 - DEBUG: /etc/localtime found
+2025-03-13 01:50:56,214 - 18608 - DEBUG: 1 found:
+ {'/etc/localtime is a symlink to': 'Asia/Shanghai'}
+2025-03-13 01:57:51,822 - 18608 - DEBUG: Request url: https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi
+2025-03-13 01:57:51,823 - 18608 - DEBUG: Request type: POST
+2025-03-13 01:57:51,823 - 18608 - DEBUG: Request headers: {'Content-Type': 'application/json', 'Accept': 'application/json', 'User-Agent': 'wechatpay v3 api python sdk(https://github.com/minibear2021/wechatpayv3)', 'Authorization': 'WECHATPAY2-SHA256-RSA2048 mchid="1709464037",nonce_str="79093256D750476CAFEC94A5AB21EA52",signature="X0Udhp3es4SytZUq5JdP4E5IZZ10PTtVHJMUaC9y616Ff1AdLe7oJOzu26qQbNIPUgsgLj9I0QP+HBMKvg8tD4BdKC+qnahMei7M8mnTSoAJOv8LaKewAv30+FHzLXuAjwOXdy8l15ke8UgfR0uYH2GpgLVrFOASnGdcNMz9qpnxrisHARMJBM2ax/l2bYDe95eZITCD4PdcnO3l397vQTdbZ2nNDfV8s8xUXY4QkZ7e0olTJP6AVGNReo1mnPVaIkYXSFgH0uf2KgRY0GNM01eFQW0s2AYaPpq18zFSIgj05iOLFJATJsyPeHws/OYsg24wnhjXBXEybMR+voTv3Q==",timestamp="1741802271",serial_no="214EA0DFFD516E0E88BCBAD28D525D967C0FEF10"'}
+2025-03-13 01:57:51,823 - 18608 - DEBUG: Request params: {'notify_url': 'https://table-game-backend.miniprogram.ahaostudio.tech/user/orders/paystatus/', 'description': '即墨区小鲨桌游店-第B001桌-订单结算', 'out_trade_no': 'XA1C3Bfe', 'amount': {'total': 18}, 'payer': {'openid': 'op5Zb7IaP_awBMJiULYMo28TzVbU'}, 'appid': 'wx2c0e64b724b6dec4', 'mchid': '1709464037'}
+2025-03-13 01:57:51,834 - 18608 - DEBUG: Starting new HTTPS connection (1): api.mch.weixin.qq.com:443
+2025-03-13 01:57:52,327 - 18608 - DEBUG: https://api.mch.weixin.qq.com:443 "POST /v3/pay/transactions/jsapi HTTP/1.1" 200 52
+2025-03-13 01:57:52,328 - 18608 - DEBUG: Response status code: 200
+2025-03-13 01:57:52,328 - 18608 - DEBUG: Response headers: {'Server': 'nginx', 'Date': 'Wed, 12 Mar 2025 17:57:52 GMT', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': '52', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=8', 'Cache-Control': 'no-cache, must-revalidate', 'X-Content-Type-Options': 'nosniff', 'Request-ID': '08A096C7BE06104C188F978EAA012084A10328B8E203-0', 'Content-Language': 'zh-CN', 'Wechatpay-Nonce': 'e83a3cb46c84a92d9ccca6db86b4b4b8', 'Wechatpay-Signature': 'maDroAc+d5NtzpYzBUfar8By8i08I3gJAbpPuv4V7/0EY7K7LCw5vGR+ycJGwHjsU6SgUUZfZSbL6EtD6BbtDnwG51iykSRNGAgQWzkMIM6lTcBWa445ch9s2rm4KHzKQ8wwCaXpKSg2kPTtJJdWAqAG9Hv2+uihn99NnwMXgrz5FSHRiDAMcNH608ayjsdSjsWd45TT51paVKPGyMA9TlOx+eMoSlX6mGc9IJ2SxqmKFvscC5YTqwOvOjvLgtR4Q6U50VS4u+Q/3iBtZfZzIH8fkVfX3DUN/HFu3M35oWcUvCqGTcLDtdw302JsBqsq7Xy+MLsPQB3BzCVG1CdcEg==', 'Wechatpay-Timestamp': '1741802272', 'Wechatpay-Serial': '71557EDA8012268B4428C3D6C988C301F1906C59', 'Wechatpay-Signature-Type': 'WECHATPAY2-SHA256-RSA2048'}
+2025-03-13 01:57:52,328 - 18608 - DEBUG: Response content: {"prepay_id":"wx13015752320196915781ccdcb56c4e0001"}
+2025-03-13 02:04:01,320 - 18608 - ERROR: 回调处理异常: 'WeChatPay' object has no attribute 'verify'
+Traceback (most recent call last):
+ File "/Users/haochen/PycharmProjects/table_game/backend/app/routers/user_order.py", line 289, in wxpay_notify
+ if not wxpay.verify(headers, body_bytes):
+ ^^^^^^^^^^^^
+AttributeError: 'WeChatPay' object has no attribute 'verify'
+2025-03-13 02:04:05,643 - 18608 - ERROR: 回调处理异常: 'WeChatPay' object has no attribute 'verify'
+Traceback (most recent call last):
+ File "/Users/haochen/PycharmProjects/table_game/backend/app/routers/user_order.py", line 289, in wxpay_notify
+ if not wxpay.verify(headers, body_bytes):
+ ^^^^^^^^^^^^
+AttributeError: 'WeChatPay' object has no attribute 'verify'