This commit is contained in:
2026-02-12 23:26:40 +08:00
parent 6fdb525a9b
commit 82c6e9989b
4 changed files with 26 additions and 18 deletions

View File

@@ -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 (小程序)

View File

@@ -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')

View File

@@ -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 || {} }),