前言
vmq 是一套开源版的支付系统,可以进行免签支付,并提供了客户端以及服务端的部署版本
官方发布有 java 和 php 的服务端版本,这里以 java 的版本作为服务端,官方地址
https://github.com/szvone/Vmq
https://github.com/szvone/vmqApk
支付原理
通常只能是商家才能接入支付业务,如果个人要接入支付业务,通常有以下几种方式
1、通过第三方如虎皮椒这种平台
但是这种支付有一定限制,比如说存在域名限制不能变更,另外还有开户手续费,以及每笔订单抽成
而且大量这种野生的支付平台,一旦选择不慎,平台随时都存在跑路的可能
2、个人搭建免签系统
微信对个人不支持免签,支付宝可以进行面对面支付,个人也能开通,不过也有可能被随时中止
这里支付的本质问题就是,对个人用户,微信/支付宝是否有提供支付回调,对商户而言是有支付回调的
如果微信/支付宝不提供回调,那么在你的产品被客户付款之后,你的平台是无法感知到的
所以出现了免签系统,免签系统用的比较多的就是 V 免签
它的原理就是:
部署一个 java 的 Vmq 或者 php 版本的服务端 ,以及一个安卓客户端 VmqApk
安卓客户端手机上运行着微信/支付宝,并且监听着通知栏消息,打开手机的微信/支付宝的通知消息
在接收到消息的时候,显示在通知栏上(因为权限问题,这里是没有 iphone 版本客户端的)
VmqApk 在监控到微信/支付宝通知消息之后,通过解读通知消息,如果发现是支付信息
那么就会向 Vmq 服务端发送支付响应,表示当前已经收到支付信息 XX 元
但是这一类免签系统都存在着天然的缺陷,就是无法处理并发订单的问题
所以 Vmq 在处理这个问题上,限制订单在有效期内一个金额数值只能有一笔订单
相同金额的订单会进行 1 分钱的递增/递减以便区分
服务端部署
官方提供的编译版本,默认监听在 8080 端口,可以启动时指定监听端口
数据存储使用 h2 本地数据库文件,windows下默认在 C:\Users\Administrator\mq.mv.db
java -jar vmq.war --server.port=9090
启动成功后,终端窗口会有提示信息,没问题的话会正常监听,比如我这里监听在 8003 端口
登录首页,默认账户密码为 admin/admin,登录后候建议修改密码
客户端部署
电脑端运行浏览器访问服务端的 web 页面,在设置页面进行收款二维码的配置
将 apk 安装包拷贝到安卓手机上安装,并使用扫码配置,进行配对初始化
从 github 仓库的代码来看,默认只支持 http 明文的请求,对于 https 的请求是无法配置成功的
如果 vmq 服务端的域名配置了证书的话,有两种处理方式
1、一种方式是开放 http 访问,使得服务同时支持 https 和 http 请求
2、一种方式是修改官方 Apk 版本的代码,支持 https 请求访问
改动也很简单,把代码中 http 改成 https ,修改后重新编译安装,然后扫描服务端进行配置就可以了
改了之后,就不支持 http 了,如果还需要支持 http,那么这里的代码就需要做适配兼容了
评论区