写了一个基于 golang 开发的极简微信测试公众号模板消息推送服务 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
hzz2
V2EX    程序员

写了一个基于 golang 开发的极简微信测试公众号模板消息推送服务

  •  
  •   hzz2 14 小时 54 分钟前 619 次点击

    github 地址 https://github.com/hezhizheng/go-wxpush

    特性

    完全免费,下载即使用
    每天 10 万次额度,个人用不完
    真正的微信原生弹窗 + 声音提醒
    支持多用户
    提供免费服务https://push.hzz.cool(请勿滥用)
    跳转稳定,自带消息详情页面 (默认使用https://push.hzz.cool/detail, 可自己部署后使用参数替换)
    可无限换皮肤 (使用项目wxpushSkin)

    部署条件 (具体可查看github)

    • 微信公众平台接口测试帐号申请

    • 获取 appid 、appsecret

    • 关注测试公众号,获取 userid(微信号),新增测试模板(注意模版内容填写格式 内容: {{content.DATA}}) 获取 template_id(模板 ID)

    • 将以上获取到的参数代入下面使用即可

    部署指南

    下载编译好的文件启动

    • 启动参数
      • 命令行启动参数(可不加,启动之后直接在 url 上拼接参数也可) ./go-wxpush_windows_amd64.exe -port "5566" -title "测试标题" -content "测试内容" -appid "xxx" -secret "xxx" -userid "xxx-k08" -template_id "xxx-Ks_PwGm--GSzllU" -base_url "https://push.hzz.cool"
      • url 请求参数(get) 与命令行参数名称一致 /wxsend?appid=xxx&secret=xxx&userid=xxx-k08&template_id=xxx-Ks_PwGm--GSzllU&base_url=https://push.hzz.cool&cOntent=保持微笑,代码无 bug !

    默认消息详情页

    服务启动成功后会自带消息详情页界面(即消息模板跳转的页面),访问地址 http://127.0.0.1:5566/detail ,如有公网地址,可设置 base_url 参数为对应的 host 即可(无需加/detail)。

    API 使用方法

    服务部署成功后,您可以通过构造 URL 发起 GET 请求来推送消息。

    请求地址

    http://127.0.0.1:5566/wxsend 

    请求参数

    参数名 类型 是否必填 描述
    port String 指定启动端口(仅针对命令行)
    title String 消息的标题。
    content String 消息的具体内容。
    appid String 临时覆盖默认的微信 AppID 。
    secret String 临时覆盖默认的微信 AppSecret 。
    userid String 临时覆盖默认的接收用户 OpenID 。
    template_id String 临时覆盖默认的模板消息 ID 。
    base_url String 临时覆盖默认的跳转 URL 。

    使用示例

    基础推送

    向默认配置的所有用户推送一条消息:

    http://127.0.0.1:5566/wxsend?title=服务器通知&cOntent=服务已于北京时间%2022:00%20 重启 

    临时覆盖用户

    向一个临时指定的用户推送消息:

    http://127.0.0.1:5566/wxsend?title=私人提醒&cOntent=记得带钥匙&userid=temporary_openid_here 

    Webhook / POST 请求

    除了 GET 请求,服务也支持 POST 方法,更适合用于自动化的 Webhook 集成。

    请求地址

    http://127.0.0.1:5566/wxsend 

    请求方法

    POST 

    请求头 (Headers)

    { "Content-Type": "application/json" } 

    请求体 (Body)

    请求体需要是一个 JSON 对象,包含与 GET 请求相同的参数。

    { "title": "Webhook 通知", "content": "这是一个通过 POST 请求发送的 Webhook 消息。" } 

    使用示例 (cURL)

    curl --location --request POST 'http://127.0.0.1:5566/wxsend' \ --data-raw '{ "title": "来自 cURL 的消息", "content": "自动化任务已完成。" }' 

    成功响应

    如果消息成功发送给至少一个用户,服务会返回 "errcode": 0 状态码。

    失败响应

    如果发生错误(如 token 错误、缺少参数、微信接口调用失败等),服务会返回相应的状态码和错误信息。

    3 条回复    2025-12-15 09:56:09 +08:00
    tgyum
        1
    tgyum  
       12 小时 17 分钟前
    好呀 支持
    hzz2
        2
    hzz2  
    OP
       11 小时 26 分钟前
    @tgyum #1 感谢
    lepig
        3
    lepig  
       59 分钟前
    有意思。 收藏一下,

    这样可以不用自己写消息模板接口了,起个服务往上面 POST 数据就行了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5665 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 02:55 PVG 10:55 LAX 18:55 JFK 21:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86