微信接入探秘(一)——从零认识微信接口

本文出处:http://blog.csdn.net/chaijunkun/article/details/53385088,转载请注明。由于本人不定期会整理相关博文,会对相应内容作出完善。因此强烈建议在原始出处查看此文

写在前面

回想起来今年还没有在CSDN上发过文章,草稿箱里积攒了很多话题,可由于时间关系最终也没发出来。不能再拖了,打算写个系列专题,聊聊微信接入。

随着微信用户量的不断增加,越来越多的企业也将自己的服务加入到了微信当中。微信本身提供的公众号、服务号的基础功能难以满足日趋增长的需求,于是微信为我们打开了一整套自定义功能的API,利用这些API,我们可以弥补原有平台的不足,创造出更加方便的功能。本篇先对微信接口进行简单的介绍。

腾讯虽然官方也提供了很多语言版本的开发包(参阅:http://qydev.weixin.qq.com/wiki/index.php?title=加解密库下载与返回码),包括C++、Python、php、java和C#,但是笔者发现作为以PHP为主导技术的公司,Java版本的SDK无论是从封装性能、可维护性还是语法结构上都不够严谨。也正是因此才有了做一套开源API适配库的想法,目的就是为了让微信接入更简单、更容易维护(项目地址为:https://code.csdn.net/chaijunkun/wechat-common

任何新技术的掌握都是从文档开始的,如果你刚刚接触微信接入开发,不妨先看看官方的文档:https://mp.weixin.qq.com/wiki(这个地址后来发现有点问题,可能是启用了refer屏蔽,从博客跳转过去会报错,随便点个报错页面的链接,粘贴地址后即可访问)

通过阅读文档,我们大概将微信接口分为两类:被动回调(集中在文档的消息管理部分)接口和主动调用接口。

被动回调接口

严格意义上来说,该接口的业务逻辑是由我们自定义的。当有相应的事件发生时,微信会按照之前配置好的公众平台参数主动请求你的接口。请求参数和请求体都是在文档中明确声明的,我们要做的就是对其进行适配。

该接口的作用类似于短信中心。当用户订阅了你的公众号之后可以向其主动发送信息,但消息不是直接到达了你的后台系统,而是通过微信的转发回调机制,将内容通过统一的格式发送给接入的后台系统。你是否还记得有些电视节目中参与互动,发特定的短信内容到一个服务号码上就能参与进去?道理是一样的。

若需要使用回调接口,需要在正式使用前对账号进行配置。方法为:登录微信公众号平台. 登录地址:https://mp.weixin.qq.com/,查看自己的公众号。

a.若使用正式公众号调试,请在左侧菜单中找到”开发”->”基本配置”->”开发者ID”和”服务器配置”中找到对应的配置项。

b.若使用公众号的测试账号调试,请在左侧菜单中找到”开发”->”开发者工具”->”公众平台测试帐号”->”进入”->扫描登录二维码->”测试号信息”和”接口配置信息”中找到对应的配置项。

一个通常的业务模式为下图所示

Created with Rapha?l 2.1.0用户用户微信微信公众号后台公众号后台主动发送消息读取公众号配置格式化消息,通过回调通知后台同步等待返回数据读取消息来源(用户id)分析消息,实现自定义业务逻辑返回特定格式的应答字符串接收到返回数据验证消息的格式正确性将内容转发给用户客户端

上述场景中,公众号处于被动模式,只有用户主动发送消息,才会触发微信回调公众号后台,并产生相应的应答。实际应用场景有:“回复XX给你看一张图”,“给我们的节目留言”等等。

关于该处的配置和调试方法将会在后续章节中详细介绍

主动调用接口

刚刚我们说过用户主动向公众号发送消息,那么有没有主动发消息给用户的场景呢?例如:告警系统,机房中哪台机器出现问题我们事先是不知道的,监测到异常时需要主动发消息通知用户。那么就涉及到了主动调用类接口了。这部分接口包罗万象,是微信接口的重点和难点。

微信官方针对主动调用的接口进行了一些列限制,例如公众号不能给未关注该号的用户发送消息(旨在保护用户不被恶意打扰),例如API访问令牌Token,每天的获取次数也根据公众号的类型做了不同的限制。

一个通常的业务模式为下图所示

Created with Rapha?l 2.1.0用户用户微信微信公众号后台公众号后台关注公众号读取公众号配置格式化消息,通过回调发送"用户关注"事件读取消息来源,将用户id持久化到DB需要主动发送消息给用户时,读取用户信息获取访问令牌返回访问令牌拿到TokenToken+用户id+格式化的消息主动调用微信接口验证消息的格式正确性、合法性将内容转发给用户客户端

具体实践,后续章节中也会对其进行介绍。

本节对微信接口进行了分类和原理的粗略解释,更多内容请关注我的博客,也欢迎针对该开源框架提出改进性建议。

时间: 2024-10-12 20:26:15

微信接入探秘(一)——从零认识微信接口的相关文章

**微信接入探秘(一)——从零认识微信接口(主动接口和被动接口)

本文出处:http://blog.csdn.net/chaijunkun/article/details/53385088,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在原始出处查看此文 写在前面 回想起来今年还没有在CSDN上发过文章,草稿箱里积攒了很多话题,可由于时间关系最终也没发出来.不能再拖了,打算写个系列专题,聊聊微信接入. 随着微信用户量的不断增加,越来越多的企业也将自己的服务加入到了微信当中.微信本身提供的公众号.服务号的基础功能难以满足日趋增长的需

微信接入机器人实现对别人消息和群at消息的自动回复

微信接入机器人实现对别人消息和群at消息的自动回复 有时候,我们想让我们的微信号对别人发出的各种消息做出回复.我们可以通过接入图灵机器人的方式实现. IDLE编写py文件并保存,命名为wxbot. #!/usr/bin/env python # coding: utf-8 import os import sys import webbrowser import pyqrcode import requests import json import xml.dom.minidom import

微信接入概要设计

引言:为了让magento框架适应微信平台,所以添加一个关于微信的extension 设计思路 使用magento标准的extension接入方式创建一套关于微信的extension 要实现的内容: 阶段一: 1.  基本接口接入 2.  Configuration中可配置微信所需信息及用户是否与微信关联及所需保存的微信用户信息 阶段二: 1.  高级接口接入 2.  多媒体文件存储 3.  Configuration中可配置文件存储方式 接入的功能列表 微信接口相关 基础接口 API配置读取

微信接入服务器配置

填写服务器配置 打开https://mp.weixin.qq.com,登录到相应的公众号.在 开发->基本配置里填写相关信息 URL:是与微信进行接入认证的地址,由于我的默认页面是 Token:由开发者自定义填写,用作生成签名 EncodingAESKey:随机生成即可 消息加密方式:明文模式 服务端程序验证 可参考微信开发接入指南 1)获取微信通过GET传过来的参数 2)对token.timestamp.nonce三个参数进行字典排序 3)将上一步中的三个字符串参数进行拼接,并sha1加密 4

JAVA实现 springMVC方式的微信接入、实现消息自动回复

前段时间小忙了一阵,微信公众号的开发,从零开始看文档,踩了不少坑,也算是熬过来了,最近考虑做一些总结,方便以后再开发的时候回顾,也给正在做相关项目的同学做个参考. 思路 微信接入:用户消息和开发者需要的事件推送都会通过微信方服务器发起一个请求,转发到你在公众平台配置的服务器url地址,微信方将带上signature,timestamp,nonce,echostr四个参数,我们自己服务器通过拼接公众平台配置的token,以及传上来的timestamp,nonce进行SHA1加密后匹配signatu

JAVA实现 springMVC方式的微信接入、实现简单的自动回复

前端时间小忙了一阵,微信公众号的开发,从零开始看文档,踩了不少坑,也算是熬过来了,最近考虑做一些总结,方便以后再开发的时候回顾,也给正在做相关项目的同学做个参考. 其实做过一遍之后会发现也不难,大致思路:用户消息和开发者需要的事件推送都会通过微信方服务器发起一个请求,转发到你在公众平台配置的服务器url地址,微信方将带上signature,timestamp,nonce,echostr四个参数,我们自己服务器通过拼接公众平台配置的token,以及传上来的timestamp,nonce进行SHA1

node微信接入

1.本地微信环境搭建(frp/路由器做端口映射) --服务器frp配置并启动:注意打开相应端口(如:7000和8888端口) # frps.ini [common] bind_port = 7000 vhost_http_port = 8888 --客户端frp配置: # frpc.ini [common] server_addr = 39.108.139.60 server_port = 7000 [web] type = http local_port = 8888 custom_domai

第三方微信接入登录流程整理

准备工作 1.在微信开放平台https://open.weixin.qq.com/注册成为开发者. 2.在“管理中心”中创建一个移动应用,需“应用名称.简介.及28*28和108*108的PNG图片各一张,且大小不超过300k”,点击下一步,需“应用官网地址,应用签名及包名”等信息,然后即可提交审核. 说明: 应用签名:可在微信开发平台的资源中心>>资源下载>>中下载“签名生成工具”,用户获取已经安装到手机的第三方应用的签名.输入应用包名,即可获得该应用的签名值. 3.提交审核后,

微信接入调试方案

转自:http://blog.lazybee.me/wechat-development/ 微信接入是个很头疼的东西,主要原因是 webhook 的 url 必须是服务器地址,无法在开发机上调试. 目前为止我用的方案是在服务器上抓包在本地模拟,配合单元测试把功能开发完成后,再放到服务器上调试,但调试过程中难免要对代码做修改,体验很不好. 最近受不了这么折腾,脑洞大开地想把服务器上的请求直接 proxy 到本地,然后发现 ssh 自带了这个功能. 主要的东西就是 ssh 的 -R 参数,这里假设微