- 将接收xml变成字符串
- 判断msg_signature是否为空,
是:接收的是明文,不需要解密(明文模式),然后进入service中
否:接收的是密文,需要解密(也即是安全模式)
- 接收的是密文的话,要先排版成
<xml><ToUserName><![CDATA[xxxx]]></ToUserName><Encrypt><![CDATA[xxxx]]></Encrypt></xml>这种类型
- 排版后,接下来是解密(加解密:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419318479&lang=zh_CN)
- 解密后,如果是推送通知(如:十分钟推送一次的component_verify_ticket,授权,取消授权,更新授权等。推送的消息都是加密了的)
- 然后进入service中,接收的是密文返回的也必须是密文
- 在service中处理,获取传递过来的xml内容
- 先判断接收的xml传递的消息类型(msgType),再判断是全网发布还是其他处理传递的,
例1:接收的是事件消息,全网发布返回事件消息(文本消息的XML中Content字段的内容必须组装为:event + “from_callback”,其中event是接收的xml中Event字段的内容)
例2:接收的是文本消息(要分api文本和普通文本):
全网发布—返回普通文本(文本消息的XML中Content字段的内容必须组装为:cmd + “from_callback”,其中cmd是接收的xml中Content字段的内容):
全网发布—返回api文本(这个比较麻烦,下面详解)
返回api文本消息:
- 全网发布api文本消息,微信模推送给第三方平台方:文本消息,其中Content字段的内容固定为: QUERY_AUTH_CODE:$query_auth_code$(query_auth_code会在专用测试公众号自动授权给第三方平台方时,由微信后台推送给开发者)
接收授权码($query_auth_code$)
获取缓存的ticket
使用ticket、第三方平台appid、第三方平台appsecre来获取第三方componentAccessToken:具体参考文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1453779503&token=&lang=zh_CN
GetComponent_access_token方法:
使用授权码、componentAccessToken、第三方平台appid换取公众号的授权信息
将取得的信息封装到实体类中
getAuthorizationInfo方法
发送客服信息
方法CustomSendMsg:
基本流程就是这样了,下面是一些需要用到的方法类:
SendReq方法:
AuthorizationInfo类:
FuncInfo类:
类:F111uncscopeCategory