From 0ea5975c685f91a229cb27c4443200bd18fc6ef6 Mon Sep 17 00:00:00 2001 From: jeremygan2021 Date: Tue, 10 Feb 2026 22:31:00 +0800 Subject: [PATCH] gunicorn --- backend/shop/views.py | 21 ++++++++++++++++++--- docker-compose.yml | 3 ++- frontend/src/pages/ProductDetail.jsx | 3 +++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/backend/shop/views.py b/backend/shop/views.py index 407701a..56c0576 100644 --- a/backend/shop/views.py +++ b/backend/shop/views.py @@ -33,9 +33,13 @@ def get_wechat_pay_client(): """ 获取微信支付 V3 客户端实例的辅助函数 """ + print(f"正在获取微信支付配置...") wechat_config = WeChatPayConfig.objects.filter(is_active=True).first() if not wechat_config: + print("错误: 数据库中没有激活的 WeChatPayConfig") return None, "支付配置未找到" + + print(f"找到配置: ID={wechat_config.id}, MCH_ID={wechat_config.mch_id}") # 1. 严格清理所有配置项的空格和换行符 mch_id = str(wechat_config.mch_id).strip() @@ -135,6 +139,10 @@ def pay(request): 微信支付 V3 Native 下单接口 参数: goodid, quantity, customer_name, phone_number, shipping_address, ref_code """ + print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] 进入 pay 接口") + print(f"Request Headers: {request.headers}") + print(f"Request Data: {request.data}") + # 1. 获取并验证请求参数 good_id = request.data.get('goodid') quantity = int(request.data.get('quantity', 1)) @@ -144,18 +152,25 @@ def pay(request): ref_code = request.data.get('ref_code') if not all([good_id, customer_name, phone_number, shipping_address]): - return Response({'error': '缺少必要参数: goodid, customer_name, phone_number, shipping_address'}, status=status.HTTP_400_BAD_REQUEST) + missing_params = [] + if not good_id: missing_params.append('goodid') + if not customer_name: missing_params.append('customer_name') + if not phone_number: missing_params.append('phone_number') + if not shipping_address: missing_params.append('shipping_address') + print(f"支付接口缺少参数: {missing_params}, 接收到的数据: {request.data}") + return Response({'error': f'缺少必要参数: {", ".join(missing_params)}'}, status=status.HTTP_400_BAD_REQUEST) # 2. 获取支付配置并初始化客户端 wxpay, error_msg = get_wechat_pay_client() if not wxpay: - return Response({'error': error_msg}, status=status.HTTP_400_BAD_REQUEST) + print(f"支付配置错误: {error_msg}") + return Response({'error': f'支付配置错误: {error_msg}'}, status=status.HTTP_400_BAD_REQUEST) # 3. 查找商品和销售员,创建订单 - # ... (此处省略中间逻辑,保持不变) ... try: product = ESP32Config.objects.get(id=good_id) except ESP32Config.DoesNotExist: + print(f"商品不存在: {good_id}") return Response({'error': f'找不到 ID 为 {good_id} 的商品'}, status=status.HTTP_404_NOT_FOUND) salesperson = None diff --git a/docker-compose.yml b/docker-compose.yml index 5362002..9b66fde 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,8 @@ services: backend: build: ./backend - command: sh -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000" + # 使用 gunicorn 替代 runserver,提高稳定性 + command: sh -c "python manage.py migrate && gunicorn --bind 0.0.0.0:8000 config.wsgi:application" volumes: - ./backend:/app ports: diff --git a/frontend/src/pages/ProductDetail.jsx b/frontend/src/pages/ProductDetail.jsx index 08de8b4..85ff18d 100644 --- a/frontend/src/pages/ProductDetail.jsx +++ b/frontend/src/pages/ProductDetail.jsx @@ -49,9 +49,12 @@ const ProductDetail = () => { quantity: values.quantity, customer_name: values.customer_name, phone_number: values.phone_number, + // 如果是自提,手动设置地址,否则使用表单中的地址 shipping_address: isPickup ? '线下自提' : values.shipping_address, ref_code: refCode }; + + console.log('提交订单数据:', orderData); // 调试日志 const response = await nativePay(orderData); message.success('订单已创建,请完成支付'); navigate(`/payment/${response.data.order_id}`, {