喜欢的老哥给个鸡腿,点个赞啥的,下面的内容来自deepseek
项目地址:

  • 服务端(Cloudflare Workers + D1):https://github.com/im-webb/vmq-cf-worker
  • 监控端(Android / Kotlin):https://github.com/im-webb/vmq-monitor-android

两个项目README 里有截图、部署命令和常见问题。

这是什么

一套「个人收款码 + 手机监听通知」的免签收款系统。服务端是 V免签(vmqphp)的 TypeScript / Workers 重写,监控端是 Kotlin 原生 Android App。

适合的场景:自己的小站想收几块、几十块,但没有或不想接微信/支付宝的商户资质。钱直接进你自己的个人收款码,不经过任何第三方支付网关,也没有资金池。

流程:

用户扫码付款
      ↓
微信/支付宝到账通知
      ↓
Android 监控端监听通知 → 识别平台和金额 → 签名 → POST /appPush
      ↓
Workers 按金额匹配订单 → 标记已支付 → 回调你的 notify_url

和原版 V免签的区别

原版 V免签 本项目
服务端 PHP + MySQL + VPS Cloudflare Workers + D1
后台 PHP 页面 React + shadcn SPA
监控端 安卓挂机软件 Kotlin 原生 App
部署成本 需要服务器和数据库 免费额度内零成本

上游以 MIT 发布,本项目是重写,不是简单套壳。已经接过易支付的商城,改个网关地址和通讯密钥就能用。

服务端做了什么

  • 全部跑在 Cloudflare:Workers + D1 + Assets,不用买 VPS,也不用维护 MySQL
  • 兼容易支付协议:新接口 /api/order/create、/api/order/status;旧版 /submit.php 也还能用
  • 双通道回调:服务端异步回调(8 次退避重试)+ 浏览器回跳兜底
  • 金额池防串单:同一金额同一时间只允许一笔待支付订单
  • React + shadcn 后台 SPA,深色模式;/setup 初始化,没有默认密码
  • 通道管理、收款码上传、监控端心跳(60 秒无心跳自动拒单)
  • 服务端支持微信 / 支付宝 / QQ / 数字人民币
  • README 里附了一份「AI Agent 指南」:安装、配置、对接、例行体检都有可整段复制的提示语

部署五步:

git clone https://github.com/im-webb/vmq-cf-worker.git
cd vmq-cf-worker
pnpm install
wrangler d1 create vmq
cp wrangler.example.jsonc wrangler.local.jsonc   # 填 database_id
pnpm db:remote
pnpm run deploy

部署完打开 /setup 创建管理员、设置后台别名和站点名,然后在「通道管理」加通道、传收款码。

注意两点:

  • 必须写 pnpm run deploy,pnpm deploy 是 pnpm 自己的命令,不会执行本项目脚本
  • 防抢注可以先设 SETUP_TOKEN,再用 /setup?token=... 打开

监控端做了什么

Kotlin 原生实现,minSdk 24(Android 7.0+),targetSdk 34:

  • 监听通知栏到账通知,识别平台和金额,签名后上报
  • 前台服务 + PARTIAL_WAKE_LOCK + 开机自启
  • 推送失败落 SQLite,指数退避重试,进程被杀也不丢单
  • 5 秒窗口去重,A → B → A 这种交错场景也不会漏判
  • 通讯密钥 AES-GCM 加密存储;地址固定 HTTPS,不允许明文降级
  • 扫码 / 相册 / 手工录入三种绑定方式,相册不申请存储权限
  • 不收集用户数据,没有统计和崩溃上报 SDK

已知限制:

  • 必须手动授予「通知使用权」,否则收不到通知
  • 建议加入电池优化白名单;部分国产 ROM 还要允许自启动/后台运行
  • 在系统里「强行停止」会导致通知监听失效,要去设置里关掉再打开
  • 手机要长期在线,适合小站,不适合高并发或高可用场景

技术栈

  • 服务端:TypeScript、Cloudflare Workers、D1、React 19、Vite、Tailwind、shadcn/ui
  • App:Kotlin、AGP 8.2、SQLite、zxing-android-embedded、Robolectric
  • 许可:MIT

适合谁

  • 有自己的小站/个人项目,想收小额款项
  • 有闲置 Android 手机可以长期挂机
  • 不想买 VPS、不想维护 PHP/MySQL
  • 能接受「手机通知」这条链路本身的可用性限制

几点说明

  • 部署后尽快完成 /setup,后台别名不要用 admin,通讯密钥不要外泄
  • 收款码图片以 base64 存在 D1,单张约 1.4MB 上限,普通收款码够用;大图建议改 R2
  • notify_url 必须是域名,不能用裸 IP
  • 仅供个人学习与自用

截图:

(配图 1:前台首页)
(配图 2:后台概览)
(配图 3:监控面板)
(配图 4:配置面板)

欢迎提 issue / PR,觉得有用可以点个 star。有问题帖子里问,我尽量回。