如何用1小时搭建免费自动发卡商城:独角数卡 dujiaoka 完整部署与二次开发指南
如何用1小时搭建免费自动发卡商城:独角数卡 dujiaoka 完整部署与二次开发指南
【免费下载链接】dujiaoka🦄独角数卡(自动售货系统)-开源站长自动化售货解决方案、高效、稳定、快速!🚀🚀🎉🎉项目地址: https://gitcode.com/gh_mirrors/du/dujiaoka
独角数卡 dujiaoka 是一款基于 Laravel 框架开源免费的自动售货系统,帮你在线售卖卡密、会员账号等虚拟商品并实现自动发货。本文带你摸清它的分层架构、订单状态流转、支付通道扩展方式,并给出一套可直接照做的部署步骤。
它解决什么问题:凌晨三点还有人下单怎么办
想象一下:你卖游戏点卡或视频会员,客户在凌晨三点下单,你睡醒才想起去发货,体验极差,单量也上不去。手工流程里藏着三个真痛点:
- 发货靠人肉:复制卡密、填订单号,一单几十秒,日单量过百就忙不过来;
- 收款对账乱:支付宝、微信、PayPal 各走各的渠道,分不清哪笔钱对应哪张卡;
- 过期单没人管:客户下单不付款,库存白占着,也没人回收。
dujiaoka 的定位就是把这些环节全自动跑完:客户选商品、付钱,系统在秒级内分配卡密、回写订单状态、发送邮件,并通过 Server酱、Telegram 等渠道通知你。它适合独立站长、虚拟商品卖家和想自建发卡平台的开发者,不依赖任何第三方 SaaS,数据完全留在自己的服务器上。
底层是怎么搭起来的:Laravel 分层 + Dcat Admin 双入口
系统底座是 Laravel 6(PHP ^7.2.5 或 8.0,见 composer.json),后台界面用 Dcat Admin(一个基于 Laravel 的开源管理框架)搭建。整个app/目录按职责切得很干净:
app/Service/:业务核心层。下单、发卡、计价、支付配置等逻辑都在这里,控制器只做参数搬运;app/Models/:Eloquent 数据模型,Order、Goods、Carmis、Coupon、Pay 五张主表对应五大业务对象,均带软删除;app/Http/Controllers/Pay/:支付网关目录,每个渠道一个控制器;app/Admin/:后台管理的全部页面与操作(商品、订单、优惠券、统计图表);app/Jobs/:队列任务,负责订单过期、邮件、各类推送;public/assets/:三套前台模板(unicorn、luna、hyper),后台一键切换。
请求进来后先过 DujiaoBoot 中间件:检查是否已安装(install.lock)、是否用 QQ/微信内置浏览器访问(可展示提示页)、加载语言与极验配置,再放行到具体控制器。
核心功能是怎么跑起来的:一张订单的单向旅程
选三个最核心的模块看数据流。
订单状态机:状态常量定义在 Order 模型——待支付 → 待处理/已完成 → 失败/过期/异常。OrderProcessService 是总调度:
createOrder()生成 16 位订单号,按优惠券、批发价逐级算出实付金额,落库后立刻 dispatch 一个OrderExpired延迟队列任务(默认 5 分钟不付款自动过期);- 支付回调进来后走
completedOrder(),先做金额比对防篡改,再按商品类型分流; - 发货后销量累加,异步触发邮件与推送。
自动发卡:processAuto()按"商品 + 未售出状态"批量取足数量的卡密,写入订单详情并把卡密置为已售;库存不足则把订单标为异常。手动处理订单则转入待处理状态,邮件通知管理员。
支付网关:渠道配置存在pays表(跳转/扫码两种模式、PC/移动/通用三种端),PayService 按标识取出启用的网关。支付路由文件 为每个渠道注册两条路由——gateway发起支付、notify_url接收回调,内置支付宝、微信、PayPal、Stripe、易支付、epusdt 等 12 个渠道。
| 模块 | 关键路径 | 主要功能 | 技术特点 |
|---|---|---|---|
| 订单处理 | app/Service/OrderProcessService.php | 建单、验款、发货、状态流转 | 事务包裹、延迟队列过期、金额比对 |
| 商品与卡密 | app/Service/GoodsService.php | 分组展示、库存统计、卡密分配 | 分组关联查询、未售卡密计数 |
| 支付网关 | app/Http/Controllers/Pay/ | 12 渠道下单与回调 | 一渠道一控制器、路由统一模式 |
从零跑起来:6 步部署 dujiaoka
👉环境要求:PHP 7.2.5+/8.0、MySQL 5.7+(或 MariaDB)、Composer、Nginx;建议再装 Redis 并开启 OPcache。
- 拉取代码
git clone https://gitcode.com/gh_mirrors/du/dujiaoka- 装依赖
composer install- 建库建用户:在 MySQL 里创建一个空数据库和授权账号(用图形化管理工具或直接执行
CREATE DATABASE均可)。 - 配置 Nginx:网站根目录指向
public/,location /用try_files $uri $uri/ /index.php?$query_string;兜底,PHP 交给 fpm。 - 走 Web 安装向导:浏览器打开域名进入安装页,填数据库连接、网站 URL 和 Redis 密码,一键导入 install.sql 并创建管理员。
- 收尾并启动队列:把
.env里APP_DEBUG改为false,再用 Supervisor 拉起常驻队列(过期判定、邮件、推送都靠它):
php artisan queue:work✅ 到这里,前台能下单、后台能发货,整条链路就跑通了。
怎么改出自己的版本:三个最常见的二开路径
- 接一个新支付渠道:在
app/Http/Controllers/Pay/下新建控制器继承 PayController,实现gateway(发起支付)和notifyUrl(回调验签后调用completedOrder),再到路由文件里补两行注册即可; - 改发货逻辑:继承
OrderProcessService覆写processAuto,比如按商品类型走不同发货策略,原逻辑保留在parent::里随时兜底; - 换前台皮肤:三套模板已放在
public/assets/下,后台可切换;想完全定制就照其中一套的目录结构新建模板即可。
💡 性能与生产环境要点:
- 队列 Worker 按机器核数开 2~4 个进程,高峰期发货不排队;
- 热点配置(支付开关、订单过期时长)走 Redis 缓存,避免每次读库;
- 开启 OPcache,并为
orders.order_sn、carmis.status等高频查询字段确认有索引; - 生产环境务必
APP_DEBUG=false、启用 HTTPS,回调接口做好 IP 白名单与签名校验; - 数据库每日备份,卡密表尤其要做异地存储。
值不值得用:和同类方案的差异
对比"自己拿 Laravel 从零搭",它把发卡、收款、后台、模板四块最耗时间的东西都做完了,省下的通常是数周时间;对比商业发卡软件,它 MIT 协议、完全免费,代码可读可改,支付渠道和发货规则都攥在自己手里。它的取舍也直白:功能以虚拟商品售卖为边界,如果你要做实物电商,Laravel 生态里的电商组件可能更合适。需要提醒的是,原仓库已进入停更状态,作者转向了新版项目,生产部署前建议先评估版本与后续维护策略。总的来说,只要你的场景是虚拟商品自动售卖,dujiaoka 依然是门槛最低、可控性最高的开源选择之一。
【免费下载链接】dujiaoka🦄独角数卡(自动售货系统)-开源站长自动化售货解决方案、高效、稳定、快速!🚀🚀🎉🎉项目地址: https://gitcode.com/gh_mirrors/du/dujiaoka
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考