搭建个人收款解决方案

Vmq,V免签

Updated on May 29, 2022 Posted by elmagnifico on May 29, 2022

Forward

个人小项目,收款可能经常会遇到问题,如果要专业一点可能需要自己注册公司,然后申请支付宝或者微信的支付服务,还会遇到税、费率等问题。虽然他们的稳定性非常高,但是对于只是很小的项目来所没必要。

还有一种解决办法,就是找第三方支付手段,但是这里面黑产、灰产,非常多。搞不好你遇到了一个就跑路了,而且有的是不能立即提现到账的,是要过一遍第三方账户的,这种就非常不合适了。还有一些则是费率远比支付宝、微信要高,那就不合适了。

很久远以前微信和支付宝都是有个人接口的,但是被玩坏了,加上国家监管,所以个人支付早早就下了。还有一种办法,则是通过监听web或者Android端的到账提醒来完成收款的,要么是安装一个安卓App来监听系统通知栏,要么是通过PC的Web请求来监听支付到账的信息。相比而言,App更简单一些,而且也不涉及登录和账号密码等问题,较为合适。

对于支付识别的问题,有通过时间戳识别的,也有通过支付留言识别的,也有通过支付金额识别的,反正都可以吧。

Vmq

https://github.com/szvone/Vmq

V免签 —— 个人开发者收款解决方案

他是通过支付金额识别的,同时开源了代码,有php的,也有java的,需要配合安卓端使用

https://github.com/szvone/VmqApk

环境

  • Arm64的CentOS的机器

安装

安装java1.8的环境

wget https://download.oracle.com/java/18/latest/jdk-18_linux-aarch64_bin.tar.gz
tar -xzvf jdk-18_linux-aarch64_bin.tar.gz 
mv jdk-18.0.1.1 jdk1.8

修改环境变量

vim /etc/profile

JAVA_HOME=/usr/local/java/jdk1.8
JRE_HOME=/usr/local/java/jdk1.8/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

刷新

source /etc/profile

测试java

java -version
java version "18.0.1.1" 2022-04-22
Java(TM) SE Runtime Environment (build 18.0.1.1+2-6)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.1.1+2-6, mixed mode, sharing)

启动

java -jar vmq.war 

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.1.RELEASE)

2022-05-29 13:05:51.548  INFO 3772 --- [           main] com.vone.mq.MqApplication                : Starting MqApplication v0.0.1-SNAPSHOT on instance-20210526-1620 with PID 3772 (/home/opc/vmq.war started by root in /home/opc)
2022-05-29 13:05:51.550  INFO 3772 --- [           main] com.vone.mq.MqApplication                : No active profile set, falling back to default profiles: default
2022-05-29 13:05:52.261  INFO 3772 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.

默认8080端口启动,随意切换一下

java -jar vmq.war --server.port=9514

启动以后就能看到这个界面了,然后登录就能进入后台了

image-20220529203021104

默认账号密码都是admin

设置

Web

image-20220529203228915

  • 订单有效期单位是分钟
  • 回调相当于是用户支付完成以后,自动访问你设置的url,发送一个请求,同步回调是返回页面用的
  • 下面的二维码则是你的收款码
  • 左侧的额外添加收款码,则是固定金额的收款码
并发识别

由于他是靠订单金额区分是哪个用户支付的,所以要处理并发的时候,就看你有多少个不同金额的支付码了

image-20220603144114954

如果有3个并发,那么就需要你添加3个不同金额的二维码,这样创建订单的时候会自动返回对应的二维码

同时还需要在客户端判断是否订单到期了,然后对应处理。

就是添加二维码有点麻烦了,小批量支付还是没问题的

安卓

安卓端的使用也非常简单,下载App以后,扫码添加配置即可。

image-20220529205017186

image-20220529204751812

可以通过检测心跳和监听来,看是否已经连接到了服务器

微信和支付宝

由于要监听微信和支付宝的通知,所以手机里关于二者的收款通知是一定要打开的,最好再重启一下对应的APP,否则通知可能不能正常显示。

只要微信和支付宝有类似的通知,那么监听就ok了。

image-20220529210031627

为了保证监听的APP、微信、支付宝存活,可能还需要让他常驻后台,防止被各种WiFi优化、省电优化、内存优化给优化没了。

  • 手机设置步骤(教程为MIUI系统,非MIUI系统请参考教程进行设置)

    • 关闭系统神隐模式

      (旧版MIUI系统)在系统【设置】 - 【其他高级设置】 - 【电量与性能】 - 【神隐模式】 - 【V免签监控端】设置为关闭

      (新版MIUI系统)在系统【设置】 - 【其他高级设置】 - 【电量与性能】 - 【省电优化】 - 【应用智能省电】,将V免签监控端、微信、支付宝的3个APP全都改为无限制

    • 添加内存清理白名单

    • 关闭WIFI优化

      (旧版MIUI系统)在系统【设置】 - 【WLAN】 -【高级设置】 -【WLAN优化】,关闭它。

      (新版MIUI系统)在系统【设置】 - 【WLAN】 -【高级设置】 - 【在休眠状态下保持WLAN网络连接】改为“始终”

    • 开启推送通知

      系统【设置】 - 【通知和状态栏】 - 【通知管理】中,找到这3个App,把里面的开关全部打开

    • 在微信的【设置】 - 【勿扰模式】中,关闭勿扰模式

    • 在微信的公众号,关注 【微信收款助手】 这个公众号

    • 在支付宝的主页,上方搜索框 搜索 【支付助手】 ,进入支付助手,右上角小齿轮,打开【接收付款消息提醒】

如果有一个闲置手机,专门去干这个,当然最好了,不会被日常使用干扰到。

订单

image-20220529205212172

订单中可以看到每一笔扫码支付的订单

API

API部分也比较简单,创建、查询、关闭、回调等,写的都算比较详细。有问题也可以看源码解决。

image-20220529205420139

唯一可能不是很清楚的就是这个回调。回调是会发送一个Get请求,这个请求需要你的服务器响应,并且响应成功需要发送success,不是200,不是php的可能看不明白下面的PHP回调示例。

当然就算不发送也没关系,只是订单里会显示通知失败而已,实际业务已经正常走完了。

问题

安卓系统还是存在莫名其妙杀进程的问题,或者是这个程序有些时候起不来,导致错过订单。

用下来,长时间没有订单的情况下,比如睡了一觉起来,还是得手动开启一下,不然好像还是会错过后续的某些订单。

然后还有一个误识别的问题,经常会莫名其妙出现一个无订单收款,额度不高2元或者3元,但是实际上并没有这个对应的收款。

经常需要重启之类的操作,并不能长时间有效,如果要高稳定性,还是得考虑其他方式,至少安卓APP不靠谱,可以试一试PC客户端的Hook类型,可能更稳一些

Windows 监控

PC客户端的Hook类型,监控微信或者支付宝的到账信息,我还没用,但是应该比安卓稳一些

https://github.com/modcrafts/PayListener

https://github.com/MODcrafts/WeChatHook

Summary

个人支付基本就ok了,我的小业务就能跑通了.

Quote

https://github.com/szvone/Vmqphp