paopao 是一个使用Java开发的开源的微信消息通知服务。支持一对对消息推送和一对多消息推送。
- JDK1.8
- MySql
- Gradle
- SpringBoot
- MyBatis-Plus(数据库操作)
- Thymeleaf(HTML模版引擎)
- Websocket(用来做微信扫码登陆)
https://paopao.godfunc.fun/{token}/send?msg={message}
一对一给自己推送消息https://paopao.godfunc.fun/{token}/sendToAlias/{alias}?msg={message}
一对一给他人推送消息https://paopao.godfunc.fun/{token}/sendToGroup/{groupUid}?msg={message}
一对多给组内成员推送消息
执行命令git clone https://github.com/Godfunc/paopao.git
- 前往 微信公众平台接口测试平台 获取
appID
和appsecret
- 修改
JS接口安全域名
为你的服务所在域名(开发环境可以使用局域网IP,不支持带端口)。 - 获取
测试号二维码
图片中的链接(可以使用在线二维码识别获取)。 模板消息接口
处新增测试模板
,模板标题
填消息通知
,模板内容
填消息: {{msg.DATA}}
,提交或获取到模板ID
。- 修改
网页授权获取用户基本信息
中的授权回调页面域名
为你服务所在域名。
- 使用上面获取到的
appid
和appsecret
配置wx.mp.app-id
和wx.mp.secret
。 - 将服务所有域名配置在
host
上。 - 将识别出来的
测试号二维码
配置在mpQrCode
上。 - 将新增的
模板ID
配置在templateId
上。
- 创建一个名为
paopao
的数据库。 - 执行项目下
db/mysql.sql
创建表。 - 在配置文件中设置
spring.datasource.url
、spring.datasource.username
和spring.datasource.password
。
- 修改
application.yml
中的spring.profiles.active
为你刚配置的配置文件。以dev
为例,如果你刚才的配置信息写到application-dev.yml
中,那么spring.profiles.active
就是应该写dev
。
cd paopao
./gradlew build
- jar包在
build/libs/paopao-{version}.jar
nohup java -jar paopao-{version}.jar >> app.log &
- 前往 releases 下载最新的jar包(paopao-{version}.jar)。
- 修改配置信息,删除换行,最后得到一条命令
nohup java -jar paopao-{version}.jar
--spring.datasource.url="jdbc:mysql://localhost:3306/paopao?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"
--spring.datasource.username="paopao"
--spring.datasource.password="123456"
--mpQrCode="http://mpqrxx.com"
--templateId="3XMYYC4jpz3nSWWVRehUK0oLBo7WN4A_6L56FlDVIUM"
--wx.mp.app-id="wx1234"
--wx.mp.secret="123455"
>>app.log &
-
最终得到的应该是一条这样的命令
nohup java -jar paopao-{version}.jar --spring.datasource.url="jdbc:mysql://localhost:3306/paopao?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai" --spring.datasource.username="paopao" --spring.datasource.password="123456" --host="https://xxx.com" --mpQrCode="https://mpqr.com" --templateId="3XMYYC4jpz3nSWWVRehUK0oLBo7WN4A_6L56FlDVIUM" --wx.mp.app-id="wx1234" --wx.mp.secret="123455" >> app.log &
-
nginx配置
server {
listen 80;
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name paopao.godfunc.fun;
root /usr/share/nginx/html;
ssl_certificate "/xx/fullchain.pem";
ssl_certificate_key "/xx/privkey.pem";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
if ($scheme != "https") {
return 301 https://$host$request_uri;
}
location / {
proxy_pass http://127.0.0.1:9899;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}