# vshop虚拟电商平台 **Repository Path**: wou/vshop ## Basic Information - **Project Name**: vshop虚拟电商平台 - **Description**: 虚拟商品 自动发卡 卡密系统 发卡平台 电商 PHP Laravel 开源 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: https://www.97dnf.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2026-08-07 - **Last Updated**: 2026-08-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
VShop # VShop ### 虚拟商品自动发卡平台 **卖卡密 · 卖账号 · 卖充值码 · 卖序列号** 付款即到 · 没有物流 · 没有快递 · 没有收货地址 [![License](https://img.shields.io/badge/license-Commercial-blue.svg)](LICENSE) [![PHP](https://img.shields.io/badge/PHP-%3E%3D7.4-777BB4.svg)](https://php.net) [![MySQL](https://img.shields.io/badge/MySQL-%3E%3D5.6-4479A1.svg)](https://mysql.com) [![Version](https://img.shields.io/badge/version-3.3.2-brightgreen.svg)](version.json) [📋 更新日志](docs/CHANGELOG.md)
--- ## ❓ 为什么要做 VShop 你在卖卡密、充值码、序列号——但用 WooCommerce / Niushop 搭站,里面塞满了物流、仓库、收货地址。你的商品是一串字符,为什么非要装一辆快递车? **VShop 从第一行代码就只为虚拟商品设计。** | | 通用电商系统 | VShop | |:---:|:---|:---| | 📦 核心模型 | 实体商品 + 物流 | 虚拟商品 + **自动发卡** | | 🚚 发货方式 | 快递 / 自提 | **付款后系统自动发送卡密** | | 📋 库存管理 | SKU + 仓库 | 卡密池,卖一张少一张 | | 📍 物流模块 | 必选 | **不存在** | | 🏠 收货地址 | 必填 | **不需要** | | 👤 典型用户 | 卖衣服 / 卖食品 | **卖卡密 / 卖账号 / 卖充值码** | > 💡 **如果你的商品是"一串字符"而不是"一个包裹",VShop 就是为你做的。** --- ## 🎯 适用场景 | 场景 | 举例 | |:---|:---| | 🎮 游戏充值站 | 游戏点卡、充值码、CDK 激活码 | | 💿 软件授权站 | 序列号、注册码、授权码 | | 🔑 账号交易平台 | 各类平台账号买卖 | | 📱 虚拟卡密站 | 电话卡、会员卡、优惠券码 | | 📚 数字内容站 | 课程码、兑换码、资源提取码 | --- ## ✨ 核心功能 ### 🎫 自动发卡 — 3 秒完成交易 ``` 买家下单 → 支付成功 → 系统从卡密池取码 → 自动发送给买家 → 库存 -1 ``` - 卡密批量导入(文本 / Excel 粘贴,一次导入数千条) - 库存耗尽自动下架,补卡后自动上架 - 一个商品可绑定多批卡密 - 买家付款后即时收到卡密,无需人工干预 ### 🏪 多商户入驻 - 商户自主申请 → 平台审核 → 独立后台 - 每个商户管理自己的商品、卡密、订单 - 订单自动结算,商户可提现,完整资金流水 ### 💰 支付集成 | 支付方式 | 说明 | |:---|:---| | 余额支付 | 站内余额,内置 | | 支付宝 | 内置 | | 易支付 | [插件](plugins/epay/),一键接入几十家支付通道 | | 自定义 | 插件机制可扩展任意支付方式 | ### 🔐 安全防护 - `PDO` 预处理防 SQL 注入 - `CSRF` 令牌 + `XSS` 过滤 - 文件上传安全检测 + 操作日志审计 ### 🧩 可扩展架构 - **应用中心** — 后台在线安装插件和主题 - **Hook 钩子** — 声明式插件注册,Discuz 风格架构 - **主题系统** — 视图覆盖回退,主题可声明 `functions.php` - **一键升级** — 后台点击即更新,无需手动替换文件 --- ## 🛠 技术栈 | 层级 | 技术 | |:---|:---| | 后端语言 | PHP 8.0+ | | 数据库 | MySQL 5.7+ / 8.0 | | Web 服务器 | Nginx / Apache | | PHP 扩展 | pdo, pdo_mysql, mbstring, openssl, json | | 前端 | 原生 CSS + JS,零框架依赖 | --- ## ⚡ 5 分钟部署 ### 方式一:浏览器安装(推荐) ``` 下载源码 → 解压上传 → 配置伪静态 → 访问 install.php → 完成 ``` 1. 下载源码包并解压 2. 上传到网站根目录 3. 配置伪静态规则(见下方) 4. 访问 `http://你的域名/install.php` → 跟着向导走 ### 方式二:Git 安装 ```bash git clone <你的仓库地址> cd vshop cp config/app.example.php config/app.php # 编辑 config/app.php 填入数据库信息 chmod -R 755 storage/ ``` ### 伪静态规则 > ⚠️ **部署必读**:CSS/JS/图片等静态资源位于 `public/` 子目录,HTML 中以 `/public/...` 路径引用。 > Nginx 的 `root` 必须指向 **vshop 根目录**(即包含 `index.php` 和 `public/` 的目录), > 否则 `/public/css/*.css` 会 404 或被重写到 PHP,导致样式不加载。 > 同时强烈建议在 VShop 后台「系统设置 → 基础设置 → 站点URL」填写 `https://你的域名`, > 以避免 Nginx `server_name` 与实际访问域名不一致时资源 URL 指向错误域名。
Nginx(完整 server 块示例,推荐) ```nginx server { listen 80; listen 443 ssl; # 必须填写真实访问域名,不要用 _ 或内网主机名 server_name your-domain.com; # root 必须指向 vshop 根目录(含 index.php 和 public/) root /www/wwwroot/vshop; index index.php index.html; # SSL 证书(按需配置) # ssl_certificate /path/to/fullchain.pem; # ssl_certificate_key /path/to/privkey.pem; # 静态资源(/public/ 下的 css/js/图片)直接返回,不经过 PHP location /public/ { try_files $uri =404; # 静态资源缓存 30 天 expires 30d; add_header Cache-Control "public, immutable"; } # 上传文件 location /public/uploads/ { try_files $uri =404; } # 主题资源 location /themes/ { try_files $uri =404; } # 伪静态:非静态文件请求转给 PHP location / { try_files $uri $uri/ /index.php?$query_string; } # PHP-FPM location ~ \.php$ { fastcgi_pass unix:/tmp/php-cgi-74.sock; # 按实际 PHP-FPM 配置调整 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 关键:传递真实 Host 给 PHP,确保 asset() 生成正确域名 fastcgi_param HTTP_HOST $host; fastcgi_param SERVER_NAME $host; # 反向代理 HTTPS 透传(若用 CDN/反代,确保 PHP 能识别 https) fastcgi_param HTTPS $https_flag; include fastcgi_params; } # 禁止访问敏感目录 location ~ ^/(app|config|storage|database|cron|tests)/ { deny all; } } ``` **仅伪静态规则(已有 server 块只需补这段)**: ```nginx location /public/ { try_files $uri =404; expires 30d; } location / { try_files $uri $uri/ /index.php?$query_string; } ```
Nginx(旧版简写,不推荐) ```nginx if (!-e $request_filename) { rewrite ^(.*)$ /index.php?$query_string last; } ``` > ⚠️ 此规则依赖 `root` 正确指向 vshop 根目录,且未明确处理 `/public/` 静态资源, > 在部分面板(如宝塔)默认配置下可能导致 CSS 不加载,建议使用上方完整示例。
Apache ```apache RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L] ```
--- ## 📁 项目结构 ``` vshop/ ├── app/ # 应用核心 │ ├── Controllers/ # 控制器 │ ├── Models/ # 模型 │ ├── Services/ # 服务层 │ └── helpers.php # 全局助手函数 ├── config/ # 配置文件 ├── cron/ # 定时任务 ├── database/ # 数据库迁移 ├── plugins/ # 插件目录 │ └── epay/ # 易支付插件 ├── public/ # 静态资源 ├── resources/ # 视图模板 ├── storage/ # 存储目录(需可写) ├── themes/ # 主题目录 ├── index.php # 入口 └── install.php # 安装向导 ``` --- ## 🔌 插件开发 VShop 采用 Discuz 风格声明式插件架构,通过 `plugin.json` 声明 hooks、settings、menu、payment_methods,系统自动消费注册,无需手动编码: ```json { "id": "my-plugin", "name": "我的插件", "version": "1.0.0", "hooks": { "order_paid": "MyPlugin\\onOrderPaid" }, "menu": { "title": "插件管理", "icon": "puzzle" } } ``` 📖 详见 [插件开发文档](docs/plugin-development.md) --- ## 📄 开源协议 MIT License — 可免费商用,可修改,可分发,无任何限制。 ---
### 🌐 联系我们 如需购买授权或技术支持,请联系 VShop 官方。 如果 VShop 对你有帮助,给个 ⭐ **Star** 支持一下!