diff --git a/README.md b/README.md index a2c7262..1d86aba 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ![Project Logo](frontend/public/liangji_logo.svg) ## 📖 项目简介 - +npm run dev:weapp Quant Speed Market 是一个基于现代技术栈构建的综合性平台,旨在为用户提供从商品购买、技术交流到 AI 工具使用的全方位体验。项目采用前后端分离架构,包含 Django 后端 API、React Web 管理端以及 Taro 微信小程序客户端。 ## ✨ 功能特性 @@ -30,7 +30,6 @@ Quant Speed Market 是一个基于现代技术栈构建的综合性平台,旨 - **Core**: React 19 + Vite 7 - **UI Library**: Ant Design 6 - **3D Engine**: Three.js + @react-three/fiber -- **State Management**: React Context - **Routing**: React Router v7 ### Miniprogram (小程序) diff --git a/backend/shop/__pycache__/views.cpython-312.pyc b/backend/shop/__pycache__/views.cpython-312.pyc index 494b96e..25abb7c 100644 Binary files a/backend/shop/__pycache__/views.cpython-312.pyc and b/backend/shop/__pycache__/views.cpython-312.pyc differ diff --git a/backend/shop/views.py b/backend/shop/views.py index 42f76d1..55e1891 100644 --- a/backend/shop/views.py +++ b/backend/shop/views.py @@ -41,7 +41,7 @@ def patched_request(self, *args, **kwargs): return original_request(self, *args, **kwargs) Core.request = patched_request -def get_wechat_pay_client(): +def get_wechat_pay_client(pay_type=WeChatPayType.NATIVE): """ 获取微信支付 V3 客户端实例的辅助函数 """ @@ -108,7 +108,7 @@ def get_wechat_pay_client(): try: wxpay = WeChatPay( - wechatpay_type=WeChatPayType.NATIVE, + wechatpay_type=pay_type, mchid=mch_id, private_key=private_key, cert_serial_no=serial_no, @@ -699,7 +699,7 @@ class OrderViewSet(viewsets.ModelViewSet): return Response({'error': '支付系统维护中'}, status=status.HTTP_503_SERVICE_UNAVAILABLE) # 初始化支付客户端 - wxpay, error_msg = get_wechat_pay_client() + wxpay, error_msg = get_wechat_pay_client(pay_type=WeChatPayType.JSAPI) if not wxpay: return Response({'error': error_msg}, status=500) @@ -717,6 +717,12 @@ class OrderViewSet(viewsets.ModelViewSet): else: description = f"支付订单 {order.id}" + print(f"准备发起微信支付(小程序):") + print(f" OutTradeNo: {out_trade_no}") + print(f" Amount: {amount_in_cents} 分") + print(f" OpenID: {user.openid}") + print(f" NotifyURL: {wechat_config.notify_url}") + # 统一下单 (JSAPI) code, message = wxpay.pay( description=description, @@ -726,6 +732,8 @@ class OrderViewSet(viewsets.ModelViewSet): notify_url=wechat_config.notify_url ) + print(f"微信支付响应: Code={code}, Message={message}") + result = json.loads(message) if code in range(200, 300): prepay_id = result.get('prepay_id') diff --git a/frontend/src/pages/activity/Detail.jsx b/frontend/src/pages/activity/Detail.jsx index e93ee1b..42a6cb7 100644 --- a/frontend/src/pages/activity/Detail.jsx +++ b/frontend/src/pages/activity/Detail.jsx @@ -47,22 +47,23 @@ const ActivityDetail = () => { refetchOnMount: 'always', // Force refetch on mount }); + //// / // Force a refresh if needed (as requested by user) - // useEffect(() => { - // // 1. Force React Query refetch - // refetch(); + useEffect(() => { + // 1. Force React Query refetch + refetch(); - // // 2. Hard refresh logic after 1 second delay - // const timer = setTimeout(() => { - // const hasRefreshedKey = `has_refreshed_activity_${id}`; - // if (!sessionStorage.getItem(hasRefreshedKey)) { - // sessionStorage.setItem(hasRefreshedKey, 'true'); - // window.location.reload(); - // } - // }, 0); + // 2. Hard refresh logic after 1 second delay + const timer = setTimeout(() => { + const hasRefreshedKey = `has_refreshed_activity_${id}`; + if (!sessionStorage.getItem(hasRefreshedKey)) { + sessionStorage.setItem(hasRefreshedKey, 'true'); + window.location.reload(); + } + }, 500); - // return () => clearTimeout(timer); - // }, [id, refetch]); + return () => clearTimeout(timer); + }, [id, refetch]); const signUpMutation = useMutation({ mutationFn: (values) => signUpActivity(id, { signup_info: values || {} }),