微信公众开发目录

  • 一、微信公众号介绍
  • 二、微信公众号分类
    • (1) 公众号类型功能介绍
    • (2) 服务号订阅号功能区别
  • 三、测试号和接入指南
    • (1) 测试号申请
    • (2) 接入指南
      • a. 填写服务器配置
      • b. 验证服务器地址的有效性
        • ① 介绍
        • ② Java 代码(接收微信服务器发送的 GET 中的参数)
        • ③ Java 代码(校验请求确实来自微信服务器)
      • c. 依据接口文档实现业务逻辑

一、微信公众号介绍

微信公众号是开发者或商家在微信公众平台上申请的应用账号。该帐号与 QQ 账号互通,平台上实现和特定群体的文字、图片、语音、视频的全方位沟通、互动 ,形成了一种主流的线上线下微信互动营销方式。

微信公众号是用户在微信公众平台注册的一个账号。账号开通后,可在微信公众号里发视频、图片、文字等推销你的商品或分享生活经验等。

微信公众号类似于一个网站。可作为公司名片、个人名片,可做成商城、互动社区等。管理员可通过微信公众平台发送文章,关注了微信公众号的用户可查看到管理员发送的文章。

二、微信公众号分类

可访问下面的网址查看微信公众号的分类。

【微信公众平台:https://mp.weixin.qq.com/】

微信公众可分为以下4种(本人的文章中主要讲解服务号和订阅号):

  • 服务号:给企业和组织提供更强大的业务服务与用户管理能力;帮助企业快速实现全新的公众号服务平台。
  • 订阅号:为媒体个人提供一种新的信息传播方式,构建与读者之间更好的沟通与管理模式。
  • 小程序:一种新的开放能力。可在微信内被便捷地获取和传播,同时具有出色的使用体验。
  • 企业微信(认证):企业的专业办公管理工具。与微信一致的沟通体验,提供丰富免费的办公应用,并与微信消息、小程序、微信支付等互通,助力企业高效办公和管理。

(1) 公众号类型功能介绍

公众号相关问题:https://kf.qq.com/faq/170815aUZjeQ170815mU7bI7.html

(2) 服务号订阅号功能区别


【订日1服月4】阅号每可群发1条,务号每可群发4条消息

三、测试号和接入指南

微信公众号开发文档https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html


(1) 测试号申请

由于用户体验和安全性方面的考虑,某些高级接口的权限需要微信认证后才可获取,微信认证又是需要组织和企业才可进行的操作。

为帮助开发者快速了解和上手微信公众号开发,熟悉各个接口的调用,微信团队推出了微信公众帐号测试号通过手机微信扫描二维码即可获得测试号

(2) 接入指南

接入微信公众平台开发,开发者需要按照如下步骤完成:

a. 填写服务器配置

登录微信公众平台官网,并进入下图页面。填写 URL、Token、和 EncodingAESKey。

  • URL:开发者用来接收微信消息和事件的接口
  • Token:可由开发者任意填写,用于生成签名(Token 会和接口 URL 中包含的 Token 进行对比,从而验证安全性)
  • EncodingAESKey:由开发者手动填写或随机生成,将用作消息体加密或解密秘钥

    (上图是生产环境填写 URL、Token 和 EncodingAESKey 的地方,测试号是在【测试管理】进行填写)

b. 验证服务器地址的有效性

① 介绍

开发者提交信息后,微信服务器将发送 GET 请求到填写的服务器地址 URL 上。GET 请求会携带如下参数:

参数 描述
signature 微信加密签名(是结合开发者填写的 token、timestamp 和 nonce 生成的)
timestamp 时间戳
nonce 随机数
echostr 随机字符串

② Java 代码(接收微信服务器发送的 GET 中的参数)

@RestController
@RequestMapping("/wechats")
public class WechatController {@GetMapping("/checkValid")public String checkValid(String signature, String timestamp,String nonce, String echostr) {System.out.println("signature = " + signature);System.out.println("timestamp = " + timestamp);System.out.println("nonce = " + nonce);System.out.println("echostr = " + echostr);return "WechatController - checkValid";}}


填写的 URL 地址所在的项目必须被部署到云服务器上或者使用内网穿透,否则是无法成功的。

③ Java 代码(校验请求确实来自微信服务器)

开发者通过检查 signature 对请求进行校验(下面有校验方式)。若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数的内容。返回 echostr 参数的内容则表示接入生效(成为开发者成功),否则接入失败。

加密/校验流程:

  • 将 token、timestamp、nonce 三个参数进行字典序排序
  • 将三个参数字符串拼接成一个字符串进行 sha1 加密(使用他人的代码进行 sha1 加密)
  • 把 sha1 加密后的字符串与 signature 比较,标识该请求是否来源于微信服务器
@RestController
@RequestMapping("/wechats")
public class WechatController {@Autowiredprivate WechatService service;@GetMapping("/checkValid")public String checkValid(String signature, String timestamp,String nonce, String echostr) {return service.checkSignature(timestamp, nonce, signature) ? echostr: "校验失败"; }}
@Service
public class WechatServiceImpl implements WechatService {private static final String TOKEN = "sui bian xie dou ke yi";/*** 校验 signature(签名) 的正确性* a. 将 token、timestamp、nonce 三个参数进行字典序排序* b. 将三个参数字符串拼接为一个字符串后进行 sha1 加密* c. 把 sha1 加密后的字符串与 signature 的值进行比较* d. 若相同, 返回 true; 若不相同, 返回 false*/@Overridepublic boolean checkSignature(String timestamp, String nonce, String signature) {String[] params = {TOKEN, timestamp, nonce};Arrays.sort(params);// b. 将三个参数字符串拼接为一个字符串后进行 sha1 加密StringBuilder joinParam = new StringBuilder();for (String param : params) {joinParam.append(param);}String secretParam = DigestUtils.sha1Hex(joinParam.toString());return secretParam.equals(signature);}}
   <!-- 把字符串进行 sha1 加密 --><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.14</version></dependency>

c. 依据接口文档实现业务逻辑

验证 URL 有效性成功后即接入生效,成为开发者。你可以在公众平台网站中申请微信认证,认证成功后,将获得更多接口权限,满足更多业务需求。

成为开发者后,用户每次向公众号发送消息、或者产生自定义菜单、或产生微信支付订单时,开发者填写的服务器配置 URL 将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应,如回复消息。

公众号调用各接口时,一般会获得正确的结果,具体结果可见对应接口的说明。返回错误时,可根据返回码来查询错误原因。

用户向公众号发送消息时,公众号方收到的消息发送者是一个 OpenID(是使用用户微信号加密后的结果),每个用户对每个公众号有一个唯一的 OpenID

微信公众号接口必须以 http://https:// 开头,分别支持 80 端口和 443 端口

【Java 微信公众号开发】① 介绍、测试号、接入相关推荐

  1. Java微信公众号开发(一:接入平台,验证token)

    Java微信公众号开发(一:接入平台,验证token) 开发环境: 环境:JDK1.8 框架:springBoot 首先,在我们接入微信公众平台之前,我们需要注册微信公众号的开发者账号,获取开发者ID ...

  2. 慕课网_《Java微信公众号开发进阶》学习总结

    时间:2017年08月12日星期六 说明:本文部分内容均来自慕课网.@慕课网:http://www.imooc.com 教学源码:http://img.mukewang.com/down/... 学习 ...

  3. 微信公众号开发--开通测试号及验证消息来自服务器

    微信公众号开发--开通测试号及验证消息来自服务器 一.服务器配置 1.开通测试号 2.域名申请(ngrok) 2.1.注册 2.2.下载客户端 二.验证消息来自服务器 一.服务器配置 1.开通测试号 ...

  4. Java微信公众号开发梳理

    Java微信公众号开发梳理 现在微信公众平台的开发已经越来越普遍,这次开发需要用到微信公众平台.因此做一个简单的记录,也算是给那些没踩过坑的童鞋一些启示吧.我将分几块来简单的描述一下,之后会做详细的说 ...

  5. java微信公众号开发token验证失败的问题及解决办法

    java微信公众号开发token验证失败的问题及解决办法 参考文章: (1)java微信公众号开发token验证失败的问题及解决办法 (2)https://www.cnblogs.com/beardu ...

  6. Java微信公众号开发微信网页授权之前端传递code方式获取用户信息

    本片博客讲解的网页授权分为两步,前端先传递backUrl(回调地址)到后台网页授权接口,该接口拿到回调地址后组装授权连接,重定向到前端页面,前端页面截取Code,传入后端获取用户信息方法,获取用户信息 ...

  7. JAVA微信公众号开发第8篇JSSDK图片上传预览

    简介 博主微信JSSDK&图片上传预览基于微信分享做拓展,所以一些配置操作请点击查阅JAVA微信公众号开发第7篇JSSDK&微信分享博文 页面 <html><head ...

  8. 微信公众号开发之服务器接入指南之Java版本

    微信公众号开发的官方文档: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319 其中我们开发好的服务器,在配置到 ...

  9. Java微信公众号开发(附源码!!!)

    笔者最近在为一个艺考服务团队开发手机端的服务,由于开发app需要的时间较长,所以选择开发微信公众号.本人比较擅长Java开发,所以本文是基于Java语言的公众号开发.话不多说,直接进入正题. 准备工作 ...

  10. nodejs微信公众号开发第一步(接入指南)--wechat模块

    用模块接入微信就非常简单了.只用配置好参数,逻辑大神都写好了,站在巨人的肩膀上的感觉就是不错 本文测试用的是微信测试号. -- express生成项目框架 express命令行创建项目 :点击这里, ...

最新文章

  1. UI设计学习的对比原则怎么运用?
  2. 利用Use Case为系统行为建模(2)
  3. php behaviors,详解在PHP的Yii框架中使用行为Behaviors的方法_php技巧
  4. kalilinux安装qt_Kali Linux安装搜狗输入法(只需5步)
  5. Java数据类型转换(自动转换和强制转换)
  6. 多线程之线程池-各个参数的含义- 阿里,美团,京东面试题目
  7. 知乎上-翻车的笔记本
  8. 全国计算机等级考试题库二级C操作题100套(第79套)
  9. alinq mysql_ALinq让Mysql变得如此简单_MySQL
  10. 【LuoguP3038/[USACO11DEC]牧草种植Grass Planting】树链剖分+树状数组【树状数组的区间修改与区间查询】...
  11. MyBatis执行原理图
  12. 编译OpenJDK8:configure: could not find or use freetype at location
  13. 编程入门前应该先学什么?
  14. 基于PHP+MySQL客户信息管理系统的设计与实现
  15. net start MySQL——无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动。
  16. 单纤双向(Bidi)是如何实现的?会在5G前传中占一席之地吗?
  17. 塞尔达传说顺序_您可能错过的有争议的塞尔达传说
  18. 个人奋斗动力源的一些感想
  19. 【POJ 1788 --- Building a New Depot】
  20. 基于JAVA的KTV交易_Java 基于sshktv预定管理系统

热门文章

  1. 【STM32H7的DSP教程】第17章 DSP功能函数-定点数互转
  2. springboot +vue实现打印PDF(实现批量打印快递单)
  3. win7计算机无法连接投影仪,Win7电脑如何连接投影仪?投影仪连接电脑用什么线连接?...
  4. android tts 音量,Android TTS音量控制
  5. 在Win10 系统中安装VS 2008
  6. 30款硬盘有问题 细看希捷固件门事件.
  7. Word公式编辑器的使用方法
  8. 网卡5790c linux驱动,(支持所有硬件、无需连接宽带)e驱动 v5.21 WIN7 32bit专版驱动包...
  9. ubuntu16.04安装rabbitVCS
  10. 个人信息保护合规建设行业最佳指南