# 与业务系统对接
为了便于开发者将微管家与业务系统进行对接使用,当前仅支持将服务商业务模块与微管家模块部署在同一个服务内,在服务内进行调用和转发等行为从而实现对接。
开发者可通过如下功能进行集成:
- 微管家支持接收微信官方消息并转发至服务商业务系统。
- 微管家支持接收外部请求并路由至服务商业务系统。
- 微管家统一维护第三方 Token 生命周期,支持与服务商业务系统对接。
- 此外,开发者可从微管家数据库进行数据读取用以与业务系统对接。
如果使用该功能遇到任何问题,可前往微信开放平台服务商专区进行反馈。
# 一、服务开发与部署
如何实现将服务商业务模块与微管家模块部署在同一个服务内?可参考下方操作步骤。
# 1.1 修改 Dockerfile
为了更好理解如何修改 Dockerfile 实现将服务商业务模块与微管家模块部署在同一个服务内,开发者可参考官方 demo进行学习。本文也是以该 demo 为原型进行说明。
1、找到服务商业务服务的 Dockerfile 文件,下图是以官方 demo「wxcloudrun-wxcomponent-flask」为例子:
2、在 Dockerfile 文件添加如下信息,并且修改启动命令:
FROM ccr.ccs.tencentyun.com/weixincloud/weixincloud_wxcomponent:latest as wxcomponent
COPY /wxcloudrun-wxcomponent /wxcloudrun-wxcomponent
ENV GIN_MODE release
3、编写 start.sh 启动脚本:
4、注意事项:
- 业务服务不能监听 80 端口和 8081 端口(微管家已经监听了 80 端口,任选其他端口监听后填在代理配置中)。
- 业务不能响应以下 API(已被微管家占用):
/
/wxcallback/*
/wxcomponent/*
# 1.2 重新部署服务
服务商业务服务修改 Dockerfile 后重新上传镜像,重新部署服务即可,可参考如下步骤完成。
1、从第三方平台登录微信云托管(当前仅支持从第三方平台跳转进入微信云托管,不可直接访问云托管首页进行登录)。具体路径为:「第三方平台 - 详情 - 云服务 - 前往微信云托管」,点击后即会带上登录态打开微信云托管首页。
2、进入云托管控制台即可。
3、进入「服务列表 - 服务详情」,点击「发布」。
4、【可选】在部署之前,检查一下服务设置里是否有如下 4 个配置(默认会有,如果没有则需手动配置后再部署,否则会部署失败):
5、选择压缩包的方式部署服务,上传刚才重新打包的镜像即可。
6、等待一段时间,部署完成即可。
7、体验自定义业务。
以官方 demo wxcloudrun-wxcomponent-flask为例子,按照上面的开发指引完成部署后,可以前往 proxy 配置。配置端口为 8080 后即可访问 https://xxxxxx.ap-shanghai.run.tcloudbase.com/count。
# 二、消息转发配置
业务服务开发并部署完成后,可在微管家进行消息转发的配置。
# 2.1 转发推送至授权事件 URL 的信息
服务商创建的第三方平台账号,可通过「授权事件配置」接收微信官方只推送给服务商的事件信息,部分例子如下:
2、授权变更通知
3、代注册小程序事件
当服务商业务系统需接收此类事件信息,可通过 infoType 进行区分,注意严格区分大小写。以授权成功通知为例,infoType 需填 authorized,填 Authorized 也是不生效的。
完成配置后,开发者可进行连通性测试:
当不需要再进行转发时,可以关闭转发器:
# 2.2 转发推送至消息与事件 URL 的信息
服务商创建的第三方平台账号,可通过「消息与事件配置」接收微信官方推送给公众号或者小程序的事件或消息(服务商获得公众号或者小程序授权后可代接),部分例子如下:
1、名称审核结果事件
2、代码审核结果事件
4、公众号普通消息
当服务商业务系统需接收此类事件信息,可通过 MsgType 进行区分,注意严格区分大小写。如果 MsgType 是 Event,则需要进一步填写 Event 名称,例如 weapp_audit_success。
# 三、代理外部请求
微管家支持 proxy 配置,proxy 开启后可将外部请求透传转发至内部业务服务,从而实现将微管家与其他业务系统对接。
# 四、数据对接
微管家的数据库结构如下,开发者可直接访问数据库进行数据读取。
# 五、Token 统一管理
微管家的 8081 端口有 Token 服务,只监听 127.0.0.1,无需鉴权,使用 HTTP 调用即可。开发者可通过如下方式获取「有效的 Token」,无须处理 Token 过期事宜(即,该接口获取到的 Token 确保是有效不过期的):
component_access_token获取方式:http://127.0.0.1:8081/inner/component-access-tokenauthorizer_access_token获取方式:http://127.0.0.1:8081/inner/authorizer-access-token?appid=xxxx
注意:如果开发者自行开发其他服务也在刷新 Token,则有可能导致通过如上方式获取的 component_access_token 和 authorizer_access_token 不是最新的。