# bus-ticketing-x402 **Repository Path**: ReactSpring/bus-ticketing-x402 ## Basic Information - **Project Name**: bus-ticketing-x402 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-13 - **Last Updated**: 2025-11-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 巴士售票系统 - X402支付集成 基于X402区块链支付协议的现代化巴士售票系统,支持USDC支付购买车票。 ## 功能特性 - 🚌 **多路线支持** - 支持多条巴士路线和班次管理 - 🪑 **座位选择** - 可视化座位选择,实时座位状态显示 - 💰 **X402支付** - 使用USDC进行无摩擦的加密货币支付 - 🎫 **电子车票** - 生成包含二维码的电子车票 - 📱 **移动友好** - 响应式设计,支持移动设备订票 - 🔒 **安全可靠** - 基于区块链的支付验证系统 ## 技术栈 - **后端**: Node.js + Express.js - **支付**: Coinbase X402 Protocol (Base Sepolia Testnet) - **前端**: 原生HTML/CSS/JavaScript - **部署**: Vercel Serverless ## 快速开始 ### 环境要求 - Node.js 18+ - MetaMask或其他Web3钱包 - Base Sepolia测试网USDC ### 安装依赖 ```bash npm install ``` ### 环境配置 创建 `.env` 文件: ```env WALLET_ADDRESS=your_ethereum_wallet_address_here SOLANA_WALLET_ADDRESS=your_solana_wallet_address_here PORT=4022 NODE_ENV=development ``` ### 启动开发服务器 ```bash npm run dev ``` 访问 http://localhost:4022 开始使用。 ## 系统架构 ``` bus-ticketing-x402/ ├── api/ │ └── index.js # Express服务器和X402中间件 ├── handlers/ │ ├── bookingHandler.js # 订票业务逻辑 │ ├── seatHandler.js # 座位管理 │ └── ticketHandler.js # 车票生成和管理 ├── public/ │ ├── index.html # 主页面 │ ├── seat-selection.html # 座位选择页面 │ ├── payment.html # 支付页面 │ ├── ticket.html # 电子车票页面 │ ├── booking-history.html # 订票历史 │ ├── css/ │ │ └── style.css # 样式文件 │ └── js/ │ ├── main.js # 主要JavaScript功能 │ ├── seat-map.js # 座位图组件 │ └── booking.js # 订票逻辑 ├── data/ │ └── routes.json # 路线和班次数据 └── utils/ ├── log.js # 日志工具 ├── qrcode.js # 二维码生成工具 └── storage.js # 简单数据存储 ``` ## API端点 - `GET /` - 主页面 - `GET /routes` - 获取所有路线 - `GET /routes/:routeId/seats` - 获取座位状态 - `GET /payment` - X402支付页面 - `GET /confirm-booking` - 确认订票(X402保护) - `GET /ticket/:bookingId` - 查看车票 - `GET /booking-history` - 订票历史 ## X402支付流程 1. **选择路线和座位** → 用户选择出行路线和座位 2. **确认订单** → 显示订单详情和价格 3. **X402支付** → 跳转到支付页面进行USDC支付 4. **支付验证** → X402中间件自动验证支付 5. **生成车票** → 支付成功后生成电子车票 6. **发送确认** → 用户获得包含二维码的电子车票 ## 部署 ### Vercel部署 ```bash npm install -g vercel vercel --prod ``` ### 环境变量设置 在Vercel控制台设置: - `WALLET_ADDRESS`: 你的收款钱包地址 - `PORT`: 4022 (Vercel自动处理) - `NODE_ENV`: production ## 支付配置 ### 支持的支付方式 1. **X402协议支付** (以太坊生态) - **网络**: Base Sepolia Testnet (开发) / Base Mainnet (生产) - **货币**: USDC - **钱包**: MetaMask, Coinbase Wallet, WalletConnect等 - **配置**: `WALLET_ADDRESS` (以太坊收款地址) 2. **Phantom钱包支付** (Solana生态) - 新增 - **网络**: Solana Mainnet - **货币**: USDC (SPL Token) - **钱包**: Phantom, Solflare等Solana钱包 - **配置**: `SOLANA_WALLET_ADDRESS` (Solana收款地址) ### 支付流程 1. **选择路线和座位** → 用户选择出行路线和座位 2. **确认订单** → 显示订单详情和价格 3. **选择支付方式** → 选择X402或Phantom支付 4. **完成支付** → 使用对应钱包完成支付 5. **支付验证** → 系统验证链上交易 6. **生成车票** → 支付成功后生成电子车票 ## 开发指南 ### 添加新路线 在 `data/routes.json` 中添加新路线: ```json { "id": "route_003", "name": "北京 - 天津", "departure": "北京站", "arrival": "天津站", "duration": "2小时", "basePrice": 50, "schedule": ["08:00", "10:00", "14:00", "16:00"] } ``` ### 自定义座位布局 修改 `public/js/seat-map.js` 中的座位配置: ```javascript const busLayout = { rows: 12, seatsPerRow: 4, aislePosition: 2 }; ``` ## 测试 使用Base Sepolia测试网进行测试: 1. 获取测试网USDC 2. 连接MetaMask钱包 3. 完成购买流程 ## 许可证 MIT License ## 贡献 欢迎提交Issue和Pull Request!