UniApp+FastAdmin公益众筹平台搭建实录:从源码到上线
声明:本文仅供技术学习参考,不构成任何投资建议或运营指导;任何实际部署必须遵守当地法律法规,禁止用于任何违法违规用途。
最近帮客户部署了一套基于UniApp+FastAdmin的公益众筹平台,对方是做校园爱心助学项目的。源码全开源,后台基于ThinkPHP的FastAdmin框架,前端一套UniApp代码同时出H5和小程序。部署过程不算复杂,但支付回调、SSL证书和域名白名单这几个点来回折腾了两三遍。下面把实测流程和踩坑点记下来,给同样要搭这类系统的朋友参考。
一、项目概况与实测功能
这套系统定位是轻量级公益众筹,核心就是“发起项目—在线捐赠—进度公示—资金监管”。我实测了后台和前端两条线,整体逻辑比较清晰。
1.1 后台管理实测
后台入口默认是 /admin.php,账号密码 admin/admin123,第一次登录必须改密码。FastAdmin自带的CRUD生成器很省事,项目、用户、订单、提现、资金流水这些表都已经有现成界面。实测中我最喜欢“项目审核”页:能看到待审、已通过、已驳回三种状态,还能批量上下架。资金流水支持按项目ID、用户手机号、时间区间筛选,导出Excel做财务对账基本够用。
1.2 前端用户端体验
UniApp前端我先用H5跑通。首页是瀑布流列表,pages/project/detail 是项目详情,捐赠按钮跳到 pages/donate/pay。页面支持微信、支付宝两种支付方式,金额可以选固定档位,也可以自定义。项目详情页有进度条、已筹金额、参与人数,底部有分享按钮,点击生成带二维码的 canvas 海报。

二、部署要点与踩坑记录
我的环境是宝塔面板 + Nginx + PHP 7.4 + MySQL 5.7 + Redis 6。源码上传后,站点运行目录一定要指向 public,否则路由会全部 404。
2.1 服务器环境配置
Nginx 里 root 改成 /public,并加上 TP 的 rewrite 规则:
if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; }
同时 upload_max_filesize 和 post_max_size 调到 20M,开启 gzip。重点:SSL 证书必须配置,微信支付回调只认 HTTPS,且域名必须备案。
2.2 支付接口接入
微信支付配置在 application/extra/pay.php 或 .env 里,字段包括 APPID、MCHID、APIV3KEY,以及证书路径 cert/apiclient_cert.pem 和 key/apiclient_key.pem。测试阶段我会发一个 0.01 元的订单,看 /api/pay/notify 接口能否收到异步通知。支付宝需要配置 APPID、应用公钥、应用私钥、异步通知地址,注意公钥和私钥别填反。
2.3 二开注意事项
FastAdmin 二开建议用命令行 php think crud -c 控制器名 生成基础代码,模型和验证器会自动建好。UniApp 端主要改 pages 目录和 components,API 基地址在 utils/request.js 和 manifest.json 里各放一份。升级框架前先备份 application 目录和数据库,避免把自定义字段覆盖掉。


亮点提示:支付回调是最容易被忽略的环节。建议先用小额订单或沙箱环境跑通“下单→支付→回调→改状态”整条链路,再开放正式捐赠。否则会出现用户付了款,后台订单状态还是待支付的尴尬。
三、适合人群与使用建议
这套系统适合公益组织、高校社团、企业内部CSR项目使用,也适合开发者学习 UniApp+FastAdmin 全栈流程。但如果要接入真实捐赠,必须确认主体资质、资金监管和发票资质,不能直接用个人账号收款。所有使用请遵守相关法律法规,禁止任何违法违规用途。

四、常见问题
问:PHP版本一定要7.4吗?
答:官方推荐7.4,8.0也能跑,但要关闭部分严格模式,并把 runtime 目录权限设为可写,否则会有警告和日志写不进去的问题。
问:微信支付回调不到服务器?
答:先确认域名已备案且是HTTPS,再检查Nginx rewrite是否把 /api/ 路由转到了 index.php。证书路径建议用绝对路径,避免CLI和Web运行时的路径差异。
问:后台验证码刷不出来?
答:通常是GD库没装,或者session保存目录没权限。宝塔里打开PHP的GD扩展,并将 /runtime 目录权限放开即可。
问:数据库导入.sql报max_allowed_packet错误?
答:在MySQL配置里把 max_allowed_packet 改成 64M 或更大,保存后重启MySQL服务再导入。
问:小程序编译后请求失败?
答:检查微信小程序后台的 request 合法域名是否已添加,并确认服务器域名支持HTTPS。另外开发阶段可以勾选“不校验合法域名”做本地测试。
声明:本文仅供技术学习参考,不构成任何投资建议或运营指导;任何实际部署必须遵守当地法律法规,禁止用于任何违法违规用途。
-
Alipay QR Code Scan
-
WeChat Scan Pay