NAC_Blockchain/ISSUE_WALLET_FIX_20260310.md

3.8 KiB
Raw Blame History

工单:预售网站钱包连接与购买功能修复

日期: 2026-03-10
状态: 已完成并部署
部署服务器: 43.224.155.27 (AI服务器)
部署目录: /www/wwwroot/nac-presale-test
访问地址: https://pre-sale.newassetchain.io


问题描述

用户反映:

  1. 购买按钮无法点击(永远禁用状态)
  2. "Add XIC to Wallet" 按钮不存在
  3. 钱包连接对中国用户常用钱包TokenPocket、OKX等支持不完整

根本原因分析

问题1购买按钮永远禁用严重

文件: client/src/lib/contracts.ts
原因: maxPurchaseUSDT = 0,导致验证逻辑 isValidAmount = usdtAmount > 0 && usdtAmount <= 0 永远为 false,购买按钮被禁用。

问题2Add XIC to Wallet 按钮缺失

文件: client/src/pages/Home.tsx
原因: 代码中从未实现此功能,需要新增。

问题3钱包检测逻辑不完整

文件: client/src/hooks/useWallet.ts
原因: detectProvider() 函数仅检测 window.ethereum,未处理中国钱包的多种注入方式(window.okxwalletwindow.bitkeep.ethereumproviders[] 数组等)。


修复内容

修复1contracts.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);

修复2Home.tsx - 新增 Add XIC to Wallet 按钮

在 BSC 网络购买面板底部新增按钮,使用 wallet_watchAsset 方法:

  • 支持 MetaMask、TokenPocket、OKX、Bitget 等所有 EVM 钱包
  • 用户拒绝时静默处理(不显示错误)
  • 中英文双语支持

修复3useWallet.ts - 完整重写钱包检测逻辑

新增多钱包支持,优先级:

  1. TokenPocket (window.ethereum.isTokenPocket)
  2. OKX Wallet (window.okxwalletwindow.ethereum.isOKExWallet)
  3. Bitget Wallet (window.bitkeep.ethereum)
  4. Trust Wallet
  5. MetaMask
  6. 其他 EVM 钱包

改进错误处理:

  • -32002 错误:给出"请完成钱包初始化"的中文提示
  • 自动检测重试最多5次间隔递增600ms × attempt

部署流程

  1. 在 NAC_AI 沙盒修改代码
  2. 本地构建验证(pnpm run build 成功)
  3. 备份 AI 服务器上的原始文件(.bak.TIMESTAMP
  4. 上传修复文件到 /www/wwwroot/nac-presale-test/
  5. 在 AI 服务器上重新构建(pnpm run build
  6. PM2 重启服务(pm2 restart nac-presale-test
  7. 访问 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