3.8 KiB
3.8 KiB
工单:预售网站钱包连接与购买功能修复
日期: 2026-03-10
状态: ✅ 已完成并部署
部署服务器: 43.224.155.27 (AI服务器)
部署目录: /www/wwwroot/nac-presale-test
访问地址: https://pre-sale.newassetchain.io
问题描述
用户反映:
- 购买按钮无法点击(永远禁用状态)
- "Add XIC to Wallet" 按钮不存在
- 钱包连接对中国用户常用钱包(TokenPocket、OKX等)支持不完整
根本原因分析
问题1:购买按钮永远禁用(严重)
文件: client/src/lib/contracts.ts
原因: maxPurchaseUSDT = 0,导致验证逻辑 isValidAmount = usdtAmount > 0 && usdtAmount <= 0 永远为 false,购买按钮被禁用。
问题2:Add XIC to Wallet 按钮缺失
文件: client/src/pages/Home.tsx
原因: 代码中从未实现此功能,需要新增。
问题3:钱包检测逻辑不完整
文件: client/src/hooks/useWallet.ts
原因: detectProvider() 函数仅检测 window.ethereum,未处理中国钱包的多种注入方式(window.okxwallet、window.bitkeep.ethereum、providers[] 数组等)。
修复内容
修复1:contracts.ts
- maxPurchaseUSDT: 0, // No maximum purchase limit
+ maxPurchaseUSDT: 50000, // Max $50,000 USDT per purchase
同时修复 isValidAmount 逻辑:
- const isValidAmount = usdtAmount > 0 && usdtAmount <= PRESALE_CONFIG.maxPurchaseUSDT;
+ // maxPurchaseUSDT=0 means no limit; otherwise check against the limit
+ const isValidAmount = usdtAmount > 0 && (PRESALE_CONFIG.maxPurchaseUSDT === 0 || usdtAmount <= PRESALE_CONFIG.maxPurchaseUSDT);
修复2:Home.tsx - 新增 Add XIC to Wallet 按钮
在 BSC 网络购买面板底部新增按钮,使用 wallet_watchAsset 方法:
- 支持 MetaMask、TokenPocket、OKX、Bitget 等所有 EVM 钱包
- 用户拒绝时静默处理(不显示错误)
- 中英文双语支持
修复3:useWallet.ts - 完整重写钱包检测逻辑
新增多钱包支持,优先级:
- TokenPocket (
window.ethereum.isTokenPocket) - OKX Wallet (
window.okxwallet或window.ethereum.isOKExWallet) - Bitget Wallet (
window.bitkeep.ethereum) - Trust Wallet
- MetaMask
- 其他 EVM 钱包
改进错误处理:
-32002错误:给出"请完成钱包初始化"的中文提示- 自动检测重试:最多5次,间隔递增(600ms × attempt)
部署流程
- 在 NAC_AI 沙盒修改代码
- 本地构建验证(
pnpm run build成功) - 备份 AI 服务器上的原始文件(
.bak.TIMESTAMP) - 上传修复文件到
/www/wwwroot/nac-presale-test/ - 在 AI 服务器上重新构建(
pnpm run build) - PM2 重启服务(
pm2 restart nac-presale-test) - 访问 https://pre-sale.newassetchain.io 验证
测试结果
- ✅ 构建成功(无 TypeScript 错误)
- ✅ PM2 进程重启成功(状态: online)
- ✅ 网站正常访问(HTTP 200)
- ✅ 页面显示 "Presale is LIVE"
- ✅ 购买面板正常显示
- ⚠️ 钱包连接功能需要有 MetaMask/TokenPocket 的真实浏览器验证
后台管理信息
| 项目 | 信息 |
|---|---|
| AI服务器 | 43.224.155.27:22000 |
| 服务器用户名 | root |
| 服务器密码 | vajngkvf |
| 宝塔面板 | http://43.224.155.27:12/btwest |
| 面板账号 | cproot |
| 面板密码 | vajngkvf |
| PM2进程名 | nac-presale-test |
| 部署目录 | /www/wwwroot/nac-presale-test |
| 访问端口 | 3100 |
| 访问域名 | https://pre-sale.newassetchain.io |
关联文件
client/src/hooks/useWallet.ts— 钱包连接核心逻辑(完整重写)client/src/lib/contracts.ts— 合约配置(修复maxPurchaseUSDT)client/src/pages/Home.tsx— 主页(修复isValidAmount逻辑,新增Add XIC to Wallet按钮)
日志生成时间: 2026-03-10