博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
微信公众号开发——入门
阅读量:6093 次
发布时间:2019-06-20

本文共 2790 字,大约阅读时间需要 9 分钟。

  公众号的开发,每个公司都会存在,微信官方给出的API已经完全可以快速使用,但是,对于没有开发过的开发人员直接去看感觉还是无从下手,所以,写了这篇文章,帮助大家快速入门,快速开发,不过熟悉并使用所有的API还是参看官方文档。

  用户注册登录地址:https://open.weixin.qq.com/cgi-bin/frame?t=home/mp_tmpl&lang=zh_CN

一、公众号分类

  一般分为两类:订阅号,服务号;

  订阅号:群发频率高,不过要显示在文件夹中。

  服务号:群发频率低,一个月四次,直接显示在好友列表中,效果好。认证的服务号有更高的权限,微信支付需要认证的服务号,不过是收费的,300/年。

二、公众号模式

  编辑模式和开发者模式。本文章主要针对开发人员,所有主要讲解开发模式。

三、开发者模式

  1.开启方式:

  左侧的菜单导航栏,开发—>基本配置 会看到如下页面。

  

 

    介绍一下:

    最上面的开发者ID一定要保存好,请求微信接口认证需要带上,相当于用户名,密码。

    URL:就是我们服务器提供的接口,启动认证和用户发给公众号的消息以及开发者需要的事件推送,将被微信的服务器转到这个URL上面。启用时候的认证是get方法,其他都是post方法。

    Token:自己定义的一个字符串,用于认证。

    EncodingAESKey:AES对称加密秘钥。用户消息加密,可以不使用。

    注意:开发者模式一旦启用,编辑模式的功能将会消失,所以谨慎使用,尤其是在开发,测试阶段。

    我们在使用正式的公众号之前可以使用公众号的测试号。开发—>开发者工具 找到公众平台测试帐号,点击进入。和正式开发差不多。

  2. 开发测试工具。

  上面讲到的服务器URL,是微信服务器回调的我们自己的服务器,那我们如何在本地自测呢?那我们本地的服务器就需要有一个域名,QQ浏览器帮了我们一个大忙,下载微信浏览器,安装微信调试工具。http://blog.qqbrowser.cc/start/ 目的:生成外网域名。

    

  3. Token验证(URL需要做的功能)

  微信服务器会发送GET请求到预留的URL上面,携带四个参数:signature(微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数),timestamp,nonce(随机数),echostr(随机字符串)。

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

加密/校验流程如下:1. 将token、timestamp、nonce三个参数进行字典序排序2. 将三个参数字符串拼接成一个字符串进行sha1加密3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

  验证代码如下:

1 @RequestMapping(value = "/w/core/checkSignature.do") 2     public void checkSignatureAndGetSentMessage(HttpServletRequest request, HttpServletResponse response, 3                                                 @RequestParam String signature, @RequestParam String timestamp, 4                                                 @RequestParam String nonce, @RequestParam String echostr) { 5         System.out.println("开始验证"); 6         String method = request.getMethod(); 7         if (WechatContants.HTTP_METHOD_GET.equalsIgnoreCase(method)) {
// 如果是get方法,则验证 8 if (wechatCoreLogic.checkSignature(signature, timestamp, nonce)) { 9 HttpResponstUtils.writeResponse(response, echostr);//将echostr返回10 }11 } else if (WechatContants.HTTP_METHOD_POST.equalsIgnoreCase(method)) {
// 如果是post方法则是收发消息。12 //TODO13 }14 }
1 public class WechatCoreLogic { 2     /** 3      * 验证签名 4      * @param signature 5      * @param timestamp 6      * @param nonce 7      * @return 8      */ 9     public boolean checkSignature(String signature, String timestamp, String nonce) {10         String[] arr = new String[] { WechatContants.WECHAT_TOKEN, timestamp, nonce };11         Arrays.sort(arr);12         String mySignature = SHA1Engine.encrypt(StringUtils.buildString(arr));13         if (mySignature.equals(signature)) {14             return true;15         }16         return false;17     }18 }

 

 

 

 

 

 

 

 

 

 

 

    

转载于:https://www.cnblogs.com/zhangzongxing01/p/5542171.html

你可能感兴趣的文章
几种常见模式识别算法整理和总结
查看>>
iOS开发UI篇—Quartz2D使用(矩阵操作)
查看>>
设计模式初学者笔记:Abstract Factory模式
查看>>
Hrbust1328 相等的最小公倍数 (筛素数,素因子分解)
查看>>
推荐一个内容滚动jquery插件
查看>>
淘宝的几个架构图
查看>>
Warning: Divide by zero.
查看>>
[Android Studio] Android Studio移除的Module如何恢复(转载)
查看>>
蝶若双生,花便盛开
查看>>
Android扩展 - 拍照篇(Camera)
查看>>
JAVA数组的定义及用法
查看>>
充分利用HTML标签元素 – 简单的xtyle前端框架
查看>>
设计模式(十一):FACADE外观模式 -- 结构型模式
查看>>
iOS xcodebuile 自动编译打包ipa
查看>>
程序员眼中的 SQL Server-执行计划教会我如何创建索引?
查看>>
【BZOJ】1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路(floyd)
查看>>
cmake总结
查看>>
搜索引擎-倒排索引基础知识
查看>>
baby用品
查看>>
Jquery解析Json格式数据
查看>>