微信服务商微管家本地化部署

服务商微管家本地化部署和一些其他优化调整

功能介绍

官方提供的服务商微管家版本已满足大部分人使用,而且很适合学习和二次开发,抛砖引玉的告诉大家如何开始从三方平台接触微信开发、部署到云托管、二次开发其他应用等,具体功能参考官网的介绍。有能力的还是推荐使用官方的云托管

wx-open 是基于官方代码修改的本地化部署,优先阅读官方文档服务商微管家介绍

本项目初衷仅仅是为了让微管家能在本地或者其他云服务器运行,适合人群也仅仅是想省一点点时间的不太熟悉 Go 的开发者或者微管家现有功能部署就够用的人群。微信三方平台对接大致有两种,第一是直接撸一套三方接口,自己按需对接三方接口,这样最灵活也更方便发展其他业务(当然基于 wxcloudrun-wxcomponent 二次开发同理);第二是通过官方服务与业务系统集成 这个文档做业务集成。我们仅是把第二种思路放到本地部署,如果需要其他接口还是得做业务继承。大致思路是『微管家』可以通过内网把 token 或者 ticket 抛给自己的业务系统,业务系统自己按需请求三方其他接口。

主要变动

  • 添加消息解密中间件,本地化部署,不在依赖云托管。
  • 统一数据表开头为 wx避免和自己其他业务数据表区分
  • 配置文件不再区分 envserver.conf,统一在根目录调整 config.conf官方用env主要是为了结合云托管,部分参数在创建环境的时候设置,我们本地化部署后统一管理相对方便一些
  • 前端新增 拉取部署微管家以前的授权数据,修复一些其他小bug。这个接口是官方预留的,原来只能通过postman自己跑一下,拿出来更方便操作一些

更新230809

升级方法:点击下载 wx-open。备份当前目录,覆盖 client 目录,wx-open 文件,按照 config_example.conf 文件自己删除掉本地 config.conf,最后重启服务。

  • 优化后端日志打印
  • 废弃配置文件里一些无用的配置项,对一些关键的配置做了详细的说明
  • 废弃云托管一些判断逻辑
  • 前端页面调整为本地部署相关信息

更新231017

目前我个人或者工作中并没有业务场景在用这个系统,新增接口是根据大家(挑)共(简)同(单)的需求开发的,基本没有在业务中测试,如果使用过程中发现 bug 微信或邮件联系反馈。讨论问题是相互学习的过程,所以有时候,你问了个问题,我大概是基于猜测给出的思路,所以也请尽量把这个猜测的结果反馈给我,以便于别的同学再遇到的同样问题的时候,我能及时回复或是根据你的反馈整理到这个文档里面方便其他同学去查,新增接口涉及到的文档去微信官方文档去看即可。区分新增内容的数据库表名以 wx_ 开头。后续如果还有需要新增的内容,我们还是尽量按照『微管家』现有服务去新增或者更新。

初次使用直接点击下载 wx-open 启动即可。老版本升级请备份当前目录,覆盖 client 目录和 wx-open 文件,config.conf 无需修改,重启服务即可。

1
2
# 在 MySQL执行,调整字段长度,估计以后小程序权限集越来越多了(这个改不改都行,官方源码改成 TEXT 类型了)
ALTER TABLE `wxauthorizers` CHANGE `funcinfo` `funcinfo` VARCHAR(512) CHARACTER SET utf8mb3 COLLATE utf8_general_ci NOT NULL DEFAULT '';
  • 『同步官方修改』授权链接 auth_type 更新为 6,文档参考 这里
  • 新增『代注册小程序』接口。听说通过这个接口可以省300大洋认证,有同学需要微管家支持,后来又有同学想把这个功能放到其他地方使用,所以这个接口也提供了内网服务接口。
  • 新增『rid查询』接口。官方接口能查7天内的请求,我们会把你查过的请求记录,下次查的时候哪怕是超过7天,也会读出来。具体我也不清楚这个接口『辅助开发者高效定位问题』到底能不能解决问题。
  • 新增『清空Api次数』接口。

使用方法

  • 下载 Linux 文件 wx-open 根目录为最早起的版本,文件夹里的版本都是按照上面更新记录的版本,直接下载最新文件夹的版本部署就可以
  • 重命名config_example.conf => config.conf,自行修改对应配置项,最终目录结构如下
  • 运行 ./wx-open
  • 根据自己 ip+端口 或者 域名 登陆后台,进入 Secret与密码管理 修改 第三方 Secret,别忘了开 https
1
2
3
4
5
# 目录结构
├── client       # 前端文件
│   └── dist
├── config.conf  # 全局配置文件
└── wx-open      # Linux打包的可执行文件,需要打包其他平台留言
  • 内网端口是干什么用的?

内网服务主要用于二次开发或者对接自己其他业务系统,比如想接入微信三方平台的小程序代注册功能,这时就会到 微管家 内部服务接口获取需要的 token,内部服务包含获取 component-access-token,authorizer-access-tokenticket,例如:其他业务系统需要微信三方平台这两种 token 或者 ticket,就可以通过内部服务免云管家的接口 auth 调用。『切记:只有通过 localhost 或者 127.0.0.1 +端口访问!!!』

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 下面三个是对应的三个接口,都是 GET
http://localhost:8091/inner/component-access-token # 通过微管家获取 component-access-token
http://localhost:8091/inner/authorizer-access-token?appid=wx88324f5750ebxxxx # 通过微管家获取 authorizer-access-token
http://localhost:8091/inner/ticket # 通过微管家获取 ticket

# 代注册小程序
curl --location --request POST 'http://127.0.0.1:8091/inner/regist-weapp/create' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "企业名",
    "code": "92330110MA2GJ94D5E", // 企业代码
    "code_type": 1, // 企业代码类型(1:统一社会信用代码, 2:组织机构代码,3:营业执照注册号)
    "legal_persona_wechat": "法人微信",
    "legal_persona_name": "法人名",
    "component_phone": "" //第三方联系电话
}'

常见问题

  • 关于配置文件的问题,建议多读官方文档
  • 如果授权链接没有复制成功,应该是没有开 https 导致的。打开浏览器 控制台,自己手动复制授权链接即可
  • 配置文件仔细核对
  • 端口被占用,修改配置文件即可
  • 还有其他问题请提供测试服务器或者运行日志
  • 拉取已授权账号失败,在 MySQL 运行 select now(); 查一下自己 MySQL 配置的时区是否正常,不正常的话查下修改时区即可。

感谢各位

在此非常感谢各位的啤酒/咖啡/可乐支持,不要超过 100,祝大家事业有成(名单更新不及时,见谅)。

时间 昵称
2023-06-06 木子
2023-06-07 大猩猩
2023-10-12 叶子
2023-10-12 珧小珧
2023-10-12 阿鑫
2023-10-12 寒江雪
2023-10-12 雨ه٥
2023-10-12 蘑菇
2023-10-12 ROBOT
2023-10-12 年华不似水
2023-10-12 归去来
doodo
Built with Hugo
主题 StackJimmy 设计
本站总访问量  |  本站访客数