首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信企业号二次开发--自定义菜单接口开发--应用中心

微信企业号二次开发--自定义菜单接口开发--应用中心

作者头像
小帅丶
发布于 2018-02-08 02:20:32
发布于 2018-02-08 02:20:32
1.7K00
代码可运行
举报
文章被收录于专栏:XAIXAI
运行总次数:0
代码可运行

https://zb.oschina.net/market/opus/1444646_161 代码

1.注册完微信企业号,需要扫描二维码。就出现输入账号和密码的表单了。登陆就会出现下面的页面了。

2.点击应用中心,新建一个应用,必须上传一个LOGO,基本都是必填项。

3.进入应用,现在回调模式,并开启。

4.开启在右上角

5.确认开启回调模式

6.输入相应的地址和配置数据

基本完成了前面的要求。开发自定义菜单就好说了。具体的有接口文档

http://qydev.weixin.qq.com/wiki/index.php?title=%E5%9B%9E%E8%B0%83%E6%A8%A1%E5%BC%8F

回调模式

在回调模式下,企业不仅可以主动调用企业号接口,还可以接收用户的消息或事件。接收的信息使用XML数据格式、UTF8编码,并以AES方式加密

企业号的每个应用都有自己的回调模式开关。在管理端开启并设置好相关参数后,此应用的回调模式才生效。

针对加解密的处理,微信提供了各种语言的库,企业可以在附录中下载。

开启应用的回调模式

当你开启应用的回调模式时,企业号会要求你填写应用的URL、Token、EncodingAESKey三个参数。

URL是企业应用接收企业号推送请求的访问协议和地址,支持http或https协议。

Token可由企业任意填写,用于生成签名。

EncodingAESKey用于消息体的加密,是AES密钥的Base64编码。

验证URL、Token以及加密的详细处理请参考后续'接收消息时的加解密处理'的部分。

验证URL有效性

当你提交以上信息时,企业号将发送GET请求到填写的URL上,GET请求携带四个参数,企业在获取时需要做urldecode处理,否则会验证不成功。

参数

描述

是否必带

msg_signature

微信加密签名,msg_signature结合了企业填写的token、请求中的timestamp、nonce参数、加密的消息体

timestamp

时间戳

nonce

随机数

echostr

加密的随机字符串,以msg_encrypt格式提供。需要解密并返回echostr明文,解密后有random、msg_len、msg、$CorpID四个字段,其中msg即为echostr明文

首次校验时必带

企业通过参数msg_signature对请求进行校验,如果确认此次GET请求来自企业号,那么企业应用对echostr参数解密并原样返回echostr明文(不能加引号),则接入验证生效,回调模式才能开启。

后续回调企业时都会在请求URL中带上以上参数(echostr除外),校验方式与首次验证URL一致。

使用回调模式

企业号在回调企业URL时,会对消息体本身做AES加密,以XML格式POST到企业应用的URL上;企业在被动回复时,也需要对数据加密,以XML格式返回给微信。企业的回复支持文本、图片、语音、视频、图文等格式

微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。如果在调试中,发现员工无法收到响应的消息,可以检查是否消息处理超时。

关于重试的消息排重,有msgid的消息推荐使用msgid排重。事件类型消息推荐使用FromUserName + CreateTime排重。

假如企业无法保证在五秒内处理并回复,可以直接回复空串,企业号不会对此作任何处理,并且不会发起重试。这种情况下,可以使用发消息接口进行异步回复。

假设企业回调URL为http://api.3dept.com

  • 请求说明:

http://api.3dept.com/?msg_signature=ASDFQWEXZCVAQFASDFASDFSS&timestamp=13500001234&nonce=123412323

  • 回调数据格式:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xml> 
   <ToUserName><![CDATA[toUser]]</ToUserName>
   <AgentID><![CDATA[toAgentID]]</AgentID>
   <Encrypt><![CDATA[msg_encrypt]]</Encrypt>
</xml>
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1.msg_encrypt为经过加密的密文
2.AgentID为接收的应用id,可在应用的设置页面获取
3.ToUserName为企业号的CorpID

企业需要对msg_signature进行校验,并解密msg_encrypt,得出msg的原文。

  • 回复给微信的数据格式:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<xml>
   <Encrypt><![CDATA[msg_encrypt]]></Encrypt>
   <MsgSignature><![CDATA[msg_signature]]></MsgSignature>
   <TimeStamp>timestamp</TimeStamp>
   <Nonce><![CDATA[nonce]]></Nonce>
</xml>

接收消息时的加解密处理

企业可以直接使用微信提供的库进行加解密的处理,目前提供的有c++/python/php/java/c#等语言版本。代码提供了解密、加密、验证URL三个接口,企业可根据自身需要下载(参见附录)。以下为库函数的使用说明(以c++为例),更详细的加解密方案请参考附录。

1、解密函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int DecryptMsg(const string &sMsgSignature, const string &sTimeStamp, const string &sNonce, const string &sPostData, string &sMsg);
  • 参数说明

参数

必须

说明

sMsgSignature

从回调URL中获取的msg_signature参数

sTimeStamp

从回调URL中获取的timestamp参数

sNonce

从回调URL中获取的nonce参数

sPostData

从回调URL中获取的整个post数据

sMsg

用于返回解密后的msg,以xml组织

  • 返回说明

请参阅附录加密部分。

2、加密函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int EncryptMsg(const string &sReplyMsg, const string &sTimeStamp, const string &sNonce, string &sEncryptMsg);
  • 参数说明

参数

必须

说明

sReplyMsg

返回的消息体原文

sTimeStamp

时间戳,调用方生成

sNonce

随机数,调用方生成

sEncryptMsg

用于返回的密文,以xml组织

  • 返回说明

请参阅附录加密部分。

3、验证URL函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int VerifyURL(const string &sMsgSignature, const string &sTimeStamp, const string &sNonce, const string &sEchoStr, string &sReplyEchoStr);
  • 参数说明

参数

必须

说明

sMsgSignature

从回调URL中获取的msg_signature参数

sTimeStamp

从回调URL中获取的timestamp参数

sNonce

从回调URL中获取的nonce参数

sEchoStr

从回调URL中获取的echostr参数。注意,此参数必须是urldecode后的值

sReplyEchoStr

解密后的echostr,用于回包。注意,必须原样返回,不要做加引号或其它处理

  • 返回说明

请参阅附录加密部分。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
企业微信接口配置入坑指南
文件包括https://github.com/sbzhu/weworkapi_python/blob/master/callback/
一朵灼灼华
2022/08/05
1.6K0
企业微信回调模式开发
回调模式接口地址:https://work.weixin.qq.com/api/doc/90000/90135/90930
用户4191150
2021/08/11
2.8K0
微信客服接口对接-签名验签-微信客服GET请求回调URL验证解析返回数据-【唯一客服】
微信客服会往URL上get请求数据,要求把GET中的加密参数解析出来,并且原样输出,才能验证成功
唯一Chat
2023/03/18
1.8K0
微信客服接口对接-签名验签-微信客服GET请求回调URL验证解析返回数据-【唯一客服】
微信开放平台第三方代小程序开发,授权事件、消息与事件通知总结
关于微信开放平台第三方代小程序开发的两个事件接收推送通知,是开放平台代小程序实现业务的重要功能。
悟空码字
2023/11/20
8971
微信开放平台第三方代小程序开发,授权事件、消息与事件通知总结
编写企业微信应用 - 回调URL验证笔记
Title: 编写企业微信应用 - 回调URL验证笔记 公号: 编写企微应用 - 回调URL验证笔记 (qq.com) 前言 第一版是在2021-08-11 09:36:32写的,有点乱,优化下 验证需要搭建HTTP服务器,使用的框架为Python-Flask 通过API向手机发送信息已解决,目前需要解决通过API接收手机发送的信息 添加回调URL需要先验证URL正确性,企业微信服务器会往URL发送一个请求,我的服务器需要解密请求中的信息并返回,完成验证 验证URL正确性使用的是GET请求,接收业务数据使用
kr
2022/05/14
5.6K0
编写企业微信应用 - 回调URL验证笔记
微信企业号回调模式配置讲解 Java Servlet+Struts2版本 echostr校验失败解决
异常java.security.InvalidKeyException:illegal Key Size 也就是 echostr校验失败,请您检查是否正确解密并输出明文echostr 这个错误 企业微
小帅丶
2018/02/09
1.5K0
微信企业号回调模式配置讲解 Java Servlet+Struts2版本 echostr校验失败解决
企业微信接入文档
从上图可以看到应用有提供Token和EncodingAESKey,这两个参数是我们调用企业微信接口进行加解密操作需要使用到的。 数据回调和指令回调,可以是一个接口,也可以是分开,数据回调是直接调用,查看是否接口可以调通。指令回调是给后端的接口传送推一些数据,比如suit_token等。如果不太理解可以理解成就是后端需要提供一个接口,并且配置回调服务时,需要能同时支持HttpGet以及HttpPost两种能力。
创译科技
2022/04/19
6.7K0
企业微信接入文档
独立开发微信公众号服务的一次复盘
上篇文章主要分享了异步编程的一些经验。主要包括回调函数,发布订阅,Promise,async await以及yield关键字。
terrence386
2022/07/14
4760
独立开发微信公众号服务的一次复盘
微信公众号开发(一)服务器及接口的配置
关于微信公众号中的订阅号和服务的区别这里不多加讨论,网上有很多资源可以搜到,这里直接进入正题,如果是个人开发者,这里建议使用测试号进行开发学习,测试号的权限要比个人订阅号要多的多,而本篇博客也是基于测试号进行开发的。
全栈程序员站长
2022/09/06
9.6K1
微信公众号开发(一)服务器及接口的配置
Java企业微信开发_05_消息推送之被动回复消息
微信加解密包 下载地址:http://qydev.weixin.qq.com/java.zip      ,此包中封装好了AES加解密方法,直接调用方法即可。
shirayner
2018/08/10
4.3K0
Java企业微信开发_01_接收消息服务器配置
                     见:Java微信公众平台开发_01_本地服务器映射外网
shirayner
2018/08/10
2.5K0
Java企业微信开发_01_接收消息服务器配置
微信公众号开放接口自定义收发消息
文档地址:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Explanation_of_interface_privileges.html
biaoblog.cn 个人博客
2025/05/21
2170
微信公众号推送消息笔记
根据业务需要,开发一个微信公众号的相关开发,根据相关开发和整理总结了一下相关的流程和需要,进行一些整理和总结分享给大家,最近都在加班和忙碌,博客已经很久未更新了,打气精神,再接再厉,申请、认证公众号的一系列流程就不在这里赘述了,主要进行的是技术的分享,要达到的效果如下图:
stark张宇
2024/07/23
4040
微信公众号-开发者-自定义菜单-CLICK事件处理
  想点击菜单,推送消息。功能很简单,坑了我一天时间。在此笔记。 菜单代码: { "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "name":"菜单", "sub_button":[ { "t
deepcc
2018/05/16
1.7K0
微信公众号、企业微信应用回调URL验证对比 - 带部分Java示例
同样是4个参数:msg_signature(signature)、timestamp、nonce、echostr。
kr
2022/06/15
3.6K0
企业微信开启接收消息+验证URL有效性
千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点一个Star~
千寻简
2023/11/07
2.6K2
企业微信开启接收消息+验证URL有效性
【详细】.NET企业微信回调配置(数据回调URL和指令回调URL验证)
  前段时间因为公司业务需求,需要将微信小程序与企业微信对接通,也就是把小程序绑定到对应的企业微信账号下,在该企业微信的用户可以将该小程序绑定到工作台中,然后可以在工作台中打开该小程序并授权。不过将微信小程序与企业微信对接通需要后台去做数据回调URL和指令回调URL验证,因为第一次接触这个然后企业微信文档写的也不是很详细,并且在全网没有找到一篇.NET相关企业微信回调配置验证有用的文章,所以这里把自己的配置详细过程分享出来,希望能够帮助更多的同学。
追逐时光者
2021/09/09
4.2K0
【详细】.NET企业微信回调配置(数据回调URL和指令回调URL验证)
微信二次开发Java自定义菜单事件实现
微信二次开发--java http://blog.csdn.net/lyq8479/ 这个是柳峰的CSDN博客。大家可以看大神的教程。里面有所有的代码。 项目整个工程如下。 、 package cn
小帅丶
2018/02/09
1.8K0
微信二次开发Java自定义菜单事件实现
手把手教你开发微信公众号后台
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
江南一点雨
2020/08/21
3.1K0
手把手教你开发微信公众号后台
Spring Boot 开发微信公众号后台,看看松哥公众号后台是怎么实现的!
Hello 各位小伙伴,松哥今天要和大家聊一个有意思的话题,就是使用 Spring Boot 开发微信公众号后台。
江南一点雨
2019/11/01
1.3K0
Spring Boot 开发微信公众号后台,看看松哥公众号后台是怎么实现的!
推荐阅读
相关推荐
企业微信接口配置入坑指南
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档