# 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
### 虚拟商品自动发卡平台
**卖卡密 · 卖账号 · 卖充值码 · 卖序列号**
付款即到 · 没有物流 · 没有快递 · 没有收货地址
[](LICENSE)
[](https://php.net)
[](https://mysql.com)
[](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** 支持一下!