V免签重构版使用手册

温馨提示:本文最后更新于 2026-11-04 23:18:17, 内容可能具有时效性,若有错误或已失效,请在下方 留言 或联系 QQ33329760。

软件介绍

V免签是一套面向个人开发者的免签约收款解决方案。它不需要营业执照,也不需要申请官方商户号,只要有一台闲置的安卓手机,就能把个人微信、支付宝的收款码变成可以自动回调的支付接口。

整套系统由三个部分组成:

  • 网站后台:部署在你的服务器上,负责生成订单、展示收款二维码、接收回调并通知你的业务系统。
  • 监控端 App:安装在闲置的安卓手机上,负责监听微信、支付宝的收款到账通知。
  • 你的业务站点:通过接口调用 V免签创建订单,用户付款后由 V免签把结果回调给你。

工作流程是这样的:你的网站调用接口创建订单 → V免签生成一个带具体金额的专属二维码 → 用户扫码付款 → 手机上的监控端收到到账通知 → 监控端把消息推送到服务器 → 服务器匹配订单金额 → 确认收款成功 → 回调你的网站完成业务逻辑。

当前版本为 V2.0,在原有基础上做了界面与稳定性的优化,并修复了若干长期存在的问题,具体变化见文末的更新说明。

运行环境要求

推荐使用宝塔面板部署,省去手动配置环境的时间。以下是具体的环境要求:

  • PHP:5.6 及以上,推荐 7.4(PHP 8.x 也能运行,但建议用 7.4 更稳)
  • MySQL:5.5 及以上,推荐 5.7
  • Web 服务器:Nginx 或 Apache 均可
  • 运行目录:必须指向 public 目录,这一步很关键,设置错了会打不开

PHP 扩展方面,以下必须开启,缺一不可:

扩展用途是否必需
PDO MySQL连接数据库必需
BCMath金额计算,不开会导致下单接口报错必需
GD 图片库二维码识别与图片处理必需
cURL异步回调、补单、检查更新必需
JSON接口数据格式必需
OpenSSL避免 HTTPS 回调出现证书问题推荐
mbstring正确处理中文字符推荐

安装部署步骤

下面以宝塔面板为例,从零开始完整走一遍。整个过程大约 10 分钟。

第一步:创建站点

登录宝塔面板,点击左侧「网站」→「添加站点」,填写你的域名,PHP 版本选择 7.4,同时创建一个 MySQL 数据库,把数据库名、用户名、密码记录下来,后面安装要用。

第二步:上传源码

把源码压缩包上传到站点根目录并解压。解压后目录结构里应该能看到 application、config、public 这几个文件夹。

【截图位置:上传源码后的目录结构】

第三步:设置运行目录

这一步最容易漏掉。进入「网站设置」→「网站目录」,把运行目录改为 /public 并保存。

如果不设置,访问站点会看到目录列表或者报错,安装向导也打不开。

【截图位置:网站目录 - 运行目录选择 public】

第四步:配置伪静态

进入「网站设置」→「伪静态」,在下拉框中选择 thinkphp,保存即可。这一步不配置的话,接口地址会全部 404。

【截图位置:伪静态选择 thinkphp】

第五步:设置默认文档

进入「网站设置」→「默认文档」,把 index.html 移到第一行。这样用户直接访问域名时,看到的是首页而不是接口报错页。

第六步:运行安装向导

浏览器访问 http://你的域名/install.php,会进入网页安装向导。向导共四步,跟着填就行。

1. 环境检查:系统自动检测 PHP 版本、各项扩展和目录权限。如果有项目显示红色,按照提示去 PHP 设置里开启对应扩展,然后刷新页面重新检测。

2. 数据库设置:填写数据库地址(一般是 127.0.0.1)、端口(3306)、数据库名、用户名、密码。填完可以点「测试连接」确认是否连通。如果没有提前创建数据库,勾选「自动创建数据库」即可。

3. 管理员设置:设置后台登录账号和密码,密码至少 6 位。这个账号密码就是以后登录后台用的,务必记牢。

4. 安装完成:系统自动建表、生成通讯密钥,并创建 install.lock 锁文件防止重复安装。完成后直接进入后台登录页。

【截图位置:安装向导的环境检查页面】

第七步:登录后台

访问 http://你的域名/aaa.html 进入后台登录页,用刚才设置的管理员账号登录。

登录成功后看到的就是后台首页,顶部是今日订单、今日收入等数据卡片,下面一块是服务器环境信息,可以确认 PHP 版本、MySQL 版本、GD 库等是否都正常。

【截图位置:后台首页】

后台系统设置详解

进入「系统设置」,这里有九个配置项,逐项说明。

后台账号 / 后台密码

就是登录后台用的账号密码。建议改成自己熟悉的,改完点保存会立即生效,下次登录用新密码。

订单有效期

填一个数字,单位是分钟。比如填 5,表示订单创建后 5 分钟内没付款就会自动失效。一般设置 5 到 10 分钟比较合适,太短用户来不及付,太长会占用金额区间。

异步回调

填写你业务网站上用来接收支付结果通知的地址。用户付款成功后,V免签会主动访问这个地址,把你的订单状态同步过去。

这个地址必须是外网可以访问的,而且服务器不能有防火墙拦截,否则回调会失败。

同步回调

用户付款完成后,浏览器会跳转到的页面地址。一般填你网站的支付成功页。

注意:同步回调只是给用户看的跳转,不能作为判断支付成功的依据,因为用户可以手动关掉页面不跳转。真正判断到账要看异步回调。

通讯密钥

系统安装时自动生成的一串字符,用来给接口请求签名,防止别人伪造订单。这个密钥要保密,泄露了别人就能伪造你的订单。

区分方式

有两个选项:金额递增、金额递减。

因为同一个收款码同一时间只能对应一笔订单,如果有两个用户同时付款就分不清谁是谁。系统用「微调金额」的办法解决:用户买 10 元,实际生成 10.01 元,靠这一分钱的差异识别是哪笔订单。递增就是从 0.01 开始往上加,递减就是从 0.99 开始往下减。

一般保持默认的「金额递增」就行。

微信码 / 支付宝码

上传你个人的收款二维码图片。这里是整个系统最关键的一步,具体操作见下一节。

收款码的准备与上传

必须使用无金额的固定收款码,也就是别人扫了之后自己输入金额那种,不能用「收款 XX 元」这种带金额的码。

微信收款码获取方法

  1. 打开微信,点右下角「我」→「服务」
  2. 点「收付款」→「二维码收款」
  3. 点「保存收款码」,图片会存到手机相册

支付宝收款码获取方法

  1. 打开支付宝,点「收付款」
  2. 切换到「扫码收款」
  3. 点右上角「保存图片」

上传到后台

回到后台「系统设置」,在「微信码」处点「上传收款二维码」,选中刚才保存的图片。上传成功后下方会出现二维码预览图。

支付宝码同理。两个码都上传好之后,点页面底部的「保存」按钮,看到提示「保存成功」才算完成。

【截图位置:系统设置中的微信码、支付宝码上传区域】

常见错误提醒:如果上传后预览图显示的是一个完全不同的二维码,说明系统识别错了,重新上传一次即可。如果提示「请上传微信无金额的收款二维码」,检查一下是不是用成了带金额的码。

监控端绑定

监控端是整个系统能自动识别到账的核心,没有它系统只能手动补单。

下载与安装

进入后台「监控端设置」,页面上有两个下载按钮:一个是「下载监控端」,取的是站点自带的安装包;另一个是「最新版监控端下载」,跳转到原作者的项目发布页。

下载 apk 后安装到一台安卓手机上。建议用闲置的旧手机,因为监控端需要长期开机运行。

绑定流程

  1. 在后台「监控端设置」页面,会看到一个用于绑定的二维码
  2. 打开手机上的监控端 App,点「扫码绑定」,扫描这个二维码
  3. 绑定成功后,后台「监控端状态」会显示为在线,「最后心跳」会显示当前时间

【截图位置:监控端设置页面的绑定二维码与状态显示】

手机端必要设置

这一步决定监控端能不能稳定工作,非常重要:

  • 给监控端 App 开启自启动权限
  • 在电池设置里把监控端设为不受限制,防止后台被系统杀掉
  • 关闭该 App 的电池优化
  • 允许通知读取权限,这是监听收款消息的前提
  • 手机保持联网和开机状态,不要开省电模式

如果后台显示「监控端已掉线」,通常是手机把 App 杀了,去电池设置里改成无限制再重新打开 App 即可。

订单管理

进入「订单列表」,可以看到所有订单记录,支持按支付方式、订单状态筛选。

每一行订单右侧有三个操作按钮:

  • 补单(刷新图标):手动把订单标记为已支付,并向你的服务器发送支付成功通知。用在监控端漏推、或者用户付款了但系统没识别到的情况。
  • 详情(列表图标):查看这笔订单的完整信息,包括订单号、金额、创建时间、支付状态等。
  • 删除(垃圾桶图标):删除这条订单记录。只删记录,不会退款。

页面上方还有两个批量清理按钮:「删除所有过期订单」和「删除七天前订单」,用来定期清理数据库,避免记录越积越多。

补单前请务必确认对方真的付了款,可以去微信或支付宝账单里核对金额和时间,补单等于直接给用户开通了服务。

【截图位置:订单列表与操作按钮】

对接自己的网站

如果你要把 V免签 接进自己的业务系统,需要在后台「Api说明」页面查看完整文档。这里说核心流程。

创建订单接口

请求地址:http://你的域名/createOrder

参数说明是否必传
payId你自己的订单号,需要保证唯一必传
type支付方式:1 为微信,2 为支付宝必传
price订单金额,单位元,支持两位小数必传
sign签名,防止伪造订单必传
param自定义参数,回调时会原样带回选传
isHtml是否返回支付页面,1 为返回,0 为返回 JSON选传

签名算法

签名是把几个参数拼起来做一次 MD5,公式如下:

md5(payId + param + type + price + 通讯密钥)

其中 param 如果没有传,就留空字符串,其他参数原样拼接,最后接上你在后台看到的通讯密钥。

返回结果

创建成功会返回类似下面的数据:

{
  "code": 1,
  "msg": "成功",
  "data": {
    "payId": "1547129707139",
    "orderId": "201901102220147500",
    "payType": 2,
    "price": 0.1,
    "reallyPrice": 0.1,
    "payUrl": "HTTPS://QR.ALIPAY.COM/FKX03500Z2ZYWA0ELYUB5D",
    "isAuto": 1,
    "state": 0,
    "timeOut": 5
  }
}

把 data.payUrl 的内容生成二维码展示给用户即可。reallyPrice 是系统微调后的实际金额,需要提示用户按这个金额付款,否则无法识别。

接收回调

用户付款成功后,V免签会向你在「异步回调」里填的地址发起请求,带上订单号、金额和签名。你的网站收到后,先用同样的方式验签,确认无误再把订单标记为已支付。

处理完记得返回成功标识,否则系统会认为通知失败,可能会重复推送。

完整测试流程

部署完成后,建议按下面的顺序完整跑一遍,确认每一环都通:

  1. 访问后台首页,确认服务器环境信息各项都有值,没有显示「-」
  2. 进入「系统设置」,确认微信码、支付宝码都已上传并保存成功
  3. 进入「监控端设置」,确认监控端状态为在线,最后心跳是刚刚的时间
  4. 用接口创建一笔 0.01 元的小额订单,记下返回的 payUrl
  5. 用另一台手机扫这个二维码,实际支付这笔金额
  6. 回到「订单列表」,确认这笔订单状态变成了已支付

六步全部通过,说明系统已经完全正常工作。如果卡在某一步,对照下面的常见问题排查。

常见问题与解决方案

访问网站显示 500 错误或一片空白

最常见的原因是 MySQL 服务没启动。去宝塔面板「软件商店」找到 MySQL,确认状态是「运行中」,如果停了就点启动。

如果 MySQL 正常,检查运行目录是否设成了 /public,以及伪静态是否选了 thinkphp。

安装向导打不开,提示 404

先确认访问地址是 域名/install.php。如果运行目录设置成了 public,那么 install.php 位于 public 目录内,直接访问域名根路径即可。

另外检查服务器根目录下是否已经存在 install.lock 文件。如果存在,说明系统认为已经安装过,会拒绝再次进入向导。需要重装的话,手动删除这个文件即可。

收款码上传后,扫码显示内容不对或扫不出来

先确认上传的是无金额的固定收款码,不是「收款 XX 元」这种带金额的码。

如果码本身没问题但预览图不对,重新上传一次。V2.0 已经修复了收款码内容含特殊符号时生成二维码信息残缺的问题,如果还遇到这种情况,建议升级到最新版本。

用户付款成功,但订单一直显示未支付

按这个顺序排查:

  • 先看「监控端设置」里状态是否在线、最后心跳是不是刚才的时间。掉线的话重新打开手机上的 App
  • 确认监控端有读取通知的权限,并且微信、支付宝的通知没有被系统屏蔽
  • 核对实际付款金额是否和订单显示的一致。少付或多付一分钱都匹配不上
  • 确认付款用的是你上传的那个收款码对应的账号,不是另一个微信号

如果都正常但还是没识别,去「订单列表」找到这笔订单,点「补单」手动标记为已支付。

金额对不上,用户付了但系统识别的是另一笔

这是并发订单导致的。当同一时间有多笔订单,系统靠微调金额区分,如果订单有效期设置得太长,占用区间就会变多,容易出现混乱。

把「订单有效期」改短一些,比如 5 分钟,能明显减少这种情况。另外「区分方式」保持「金额递增」通常比递减更稳定。

监控端提示已掉线,怎么都连不上

  • 检查手机是否联网,WiFi 和移动数据切换试一下
  • 在手机设置里找到监控端,把电池策略改成「无限制」,并开启自启动
  • 关掉省电模式,很多手机在省电模式下会强制杀掉后台 App
  • 如果服务器换了域名或者重新安装过,绑定关系会失效,需要重新扫码绑定

登录后台提示「尝试次数过多,请5分钟后再试」

这是 V2.0 新增的登录保护机制:同一个网络连续输错 5 次密码会锁定 5 分钟,防止别人暴力破解你的后台。

等 5 分钟自动解锁即可,不需要其他操作。如果确实忘记了密码,可以去数据库里找到 setting 表,把 vkey 为 pass 的那条记录的 vvalue 改成新密码。

异步回调一直收不到通知

  • 确认「异步回调」地址填写正确,并且在浏览器里能正常访问
  • 回调地址必须是外网能访问的,不能用 localhost 或内网 IP
  • 服务器如果开了防火墙、防 CC 或者安全狗之类的防护,需要把回调路径加入白名单
  • 域名如果接入了 CDN 并且开启了全站缓存,回调请求可能被缓存掉,建议对回调路径单独设置不缓存

后台首页服务器环境全部显示「-」

说明页面没能取到后台数据。先强制刷新页面(Ctrl + F5)试试,如果还是空的,检查一下是不是重新部署时覆盖了文件但没同步完整,或者浏览器缓存了旧版本页面。

修改了文件但网站没变化

基本上是缓存问题。按 Ctrl + F5 强制刷新;如果用的是 Nginx,可以在宝塔里清一下缓存;此外检查 CDN 是否需要刷新。

想重新安装系统

删除服务器根目录下的 install.lock 文件,然后重新访问 install.php 即可。注意重装会清空原有配置,收款码需要重新上传。

安全建议

  • 安装完成后,把后台密码改成一个复杂点的,不要用默认密码
  • 通讯密钥不要泄露给任何人,也不要在前端代码里暴露
  • 建议给站点开启 HTTPS,避免回调过程中数据被劫持
  • 定期清理过期订单,减少数据库压力
  • 不要在后台随手删除 install.lock,否则别人可能重新走安装流程

V2.0 更新说明

新功能

  • 后台首页新增二开信息展示,可查看作者、联系方式、博客与原作者项目地址
  • 新增后台登录保护,连续输错 5 次密码自动锁定 5 分钟

优化内容

  • 系统设置页表单布局优化,标签文字不再被挤成两行,与输入框高度对齐
  • Api说明页折叠标题文字与图标垂直居中对齐,并增加悬停反馈
  • 后台首页服务器环境改为卡片式布局,八项信息整齐对齐
  • 手机端显示优化,表单与信息卡片在窄屏下自动切换为上下排列
  • 页面资源加载优化,样式与脚本更新后自动生效,无需手动清理缓存

修复Bug

  • 修复部分收款码内容含特殊符号时,生成的二维码信息残缺、扫码无法识别的问题
  • 修复系统设置保存后部分配置项丢失或错乱的问题
  • 修复已是较新版本却仍提示有新版本的问题
  • 修复 Api说明页样式影响后台内容区边距的问题
  • 修复 Api说明页顶部介绍文字行末出现单字独占一行的问题

注意事项

  • 本版本支付方式为微信(type=1)与支付宝(type=2),不包含 QQ 支付
  • 升级后请按 Ctrl + F5 强制刷新后台页面,避免加载到旧缓存
  • 如微信码、支付宝码显示为空,请重新上传后保存

免责声明

V免签仅供个人开发者学习调试使用。免签方案本质上是依赖手机监听通知来模拟支付回调,稳定性和合规性都有限,不适合承载正式商业业务。

如果用于商业用途,请申请微信支付、支付宝的官方商户接口。使用本程序产生的任何风险与后果由使用者自行承担。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容