demo:https://github.com/wenrongyao/wechat-demo

接入准备:

1、有一个能在公网上访问的项目

可以用内网穿透(推荐使用natapp),微信接入必须使用80端口或443端口,某壳现在需要花钱才能使用80端口,果断放弃

natapp的使用文章,参考博客 http://www.cnblogs.com/shirui/p/7308856.html

2、有一个微信公众号,个人可以申请订阅号,没有的话不妨申请一个,也可以申请微信号接口测试号

微信官网 https://mp.weixin.qq.com/

3、策略文件 报illegal key size异常时见

博客:http://www.cnblogs.com/shirui/p/7411735.html

4、微信的加密解密包,从企业微信的加解密包扩展而来,筒子们可以下载企业微信(我的企业微信博客中)自己改造,也可以下载我改造好的。

下载链接:https://download.csdn.net/download/wrongyao/10393783

5、微信公众平台api

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432

开始接入

1、找到微信公众号后台,开发/基本配置/服务器配置

依此填写三个参数,url需要接入的接口,token和EncodingAESkey,后面两个必须和自己项目上写的保持一致

2、项目结构,添加微信的加密解密包,下图aes包下的内容,另外需要添加code依赖

需要添加依赖

<dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId><version>1.10</version>
</dependency>

3、EntryController控制器的开发

import com.wechat.constant.Constant;
import com.wechat.util.aes.AesException;
import com.wechat.util.aes.WXBizMsgCrypt;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;/*** Created by rongyaowen on 2018/9/10.*/
@RestController
public class EntryController {@RequestMapping(value = "/entrance")public String entryTest(HttpServletRequest request) throws Exception {// 微信加密签名String msgSignature = request.getParameter("signature");// 时间戳String timeStamp = request.getParameter("timestamp");// 随机数String nonce = request.getParameter("nonce");// 随机字符串String echoStr = request.getParameter("echostr");String result = null;try {// 创建加密类 token ENCODINGAESKEY APPID换成自己公众号信息WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(Constant.WechatAccount.TOKEN, Constant.WechatAccount.ENCODINGAESKEY, Constant.WechatAccount.APPID);// 比对msgSignature 用token, timeStamp, nonce加密的参数是否一致,一致证明该接口来自微信,异常则不是来自微信result = wxcpt.verifyUrl_WXGZ(msgSignature, Constant.WechatAccount.TOKEN, timeStamp, nonce, echoStr);} catch (AesException e) {e.printStackTrace();} finally {return result;}}
}

根据微信公众平台的api可以知道大致校验逻辑如下

1)将token、timestamp、nonce三个参数进行字典序排序

2)将三个参数字符串拼接成一个字符串进行sha1加密

3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

4)返回echoStr则表示接入成功

4、返回值的综述

相信看完上面的返回值echoStr,大家有那么点疑惑。这个echoStr是在微信公众号平台传入的随机数,可以直接获取。那是不是可以直接返回echoStr呢,答案是可以的,直接返回这个值,可以直接接入。

那么问题来了,为什么还需要做加密解密等一系列操作呢?

为了安全起见,我们需要判断一个陌生的链接是不是来自微信,通过上述的做法就可以实现。也算是一种反爬虫手段

wechat-0010,微信公众号,接入微信公众平台相关推荐

  1. 公众号 接入微信支付

    公众号页面 接入微信支付 1. 引入js文件 <script type="text/javascript" src="https://res2.wx.qq.com/ ...

  2. 微信公众号接入第三方管理平台和创建微官网

    一.接入第三方管理平台 1.为什么要接入? 接入第三方管理平台是为了获取扩展功能,而自身又没有相应的开发能力,所以只能依靠第三方管理平台来实现功能.比如:抽奖.问卷.天气查询,数据分析等. 2.有哪些 ...

  3. h5 小程序 公众号 接入微信支付开发

    首先支付都需要确认你的项目的公众号(小程序)是不是商家,去微信公总平台官网(https://mp.weixin.qq.com/)确认(登录公众平台,点击导航栏中的微信支付,然后点击开通按钮,按照里面的 ...

  4. PHP-TP微信公众号接入微信分享-Poison

    微信分享其实是最好接入的 首先下载微信分享的sdk,放入Library中 建议放到Vendor中 我比较懒就放到这一块了  别向我学习 这时候就需要去代码中实现了 //---------------- ...

  5. 微信公众号接入图灵机器人实现自动回复消息

    2019独角兽企业重金招聘Python工程师标准>>> 1.创建图灵机器人 进入图灵机器人网址:http://www.tuling123.com/ 登录/注册,进入机器人管理,然后点 ...

  6. 骏飞H5幸运刮刮乐源码多级分佣+upupw直接架设+H5微信登陆公众号接入 管理员

    简介: 骏飞H5幸运刮刮乐源码多级分佣+upupw直接架设+H5微信登陆公众号接入 管理员 网盘下载地址: http://kekewl.net/pWg5xjUEhkm0 图片:

  7. 2014-07-23 .NET实现微信公众号接入

    今天是在吾索实习的第11天.今天我跟我的实习小组的组员们,解决了关于使用ASP.NET进行微信公众号接入的问题.因为我们小组成员也是刚接触微信公众号的二次开发,所以在解决该问题的工程中也走了不少弯路. ...

  8. 微信公众号接入智能客服机器人可以实现哪些效果

    微信公众号中接入智能客服聊天机器人后,粉丝在公众号/服务号中发送消息后机器人可以匹配答案后即可推送给粉丝. 一.微信接入聊天机器人客服步骤: 1.当前企业开通在Udesk后台开通了机器人客服功能,详情 ...

  9. 微信公众号接入微软小冰

    前言 文章首发于微信公众号:前端指南.本文是一篇有点偏向于运营层面的技术类文章,文章略长,请耐心阅读. 也就是最近这几年,人工智能行业已经变得十分的火热了.不可否认,人工智能是整个互联网行业的一种趋势 ...

  10. 从 0 开始最详细的微信公众号接入 AI

    从 0 开始最详细的微信公众号接入 AI 文章目录 从 0 开始最详细的微信公众号接入 AI 写在前面 注册公众号 克隆到服务器 使用过微信机器人项目 未使用过微信机器人项目 更改配置文件 启动项目 ...

最新文章

  1. Tensorflow tf.placeholder函数
  2. 设计模式:访问者模式(Visitor Pattern)
  3. 云南边境“国际新娘”享受国家防艾免费政策
  4. 为什么刹车热了会失灵_汽车为什么要换刹车油?
  5. 自定义UISearchBar的背景图
  6. 七0二所与江南计算机研究所,江南大学:一所被低估的“211”大学,2个A+学科,丝毫不输985...
  7. 金额与数字转化常用实用几个JS方法
  8. 成绩单表格html,【Web前端HTML5CSS3】15-表格
  9. HDFS数据平衡:节点间平衡与节点内平衡
  10. html去除背景颜色怎么设置,文档底色怎么去掉【解决思路】
  11. 树莓派介绍以及FAQ【这是我见过最全的树莓派教程】
  12. 华为云 - 在华为云主机上部署宝塔6.x面板
  13. 这可能是知乎中,最好的项目管理书单!
  14. 计算机怎么移动游戏,Uplay游戏怎么搬移 Uplay游戏搬移方法介绍
  15. loadrunner运行场景时,用户卡在run状态且退出时卡在gradual exiting状态
  16. 中科大ctf题型总结,来自小白的感慨
  17. OpenCV VideoWriter 写入自定义尺寸视频卡死问题
  18. 使用 HeadSpin BYOD 进行现场测试
  19. 应届生的身份有什么好处
  20. SpringBoo Mybatis Druid配置多数据源

热门文章

  1. 老生常谈01 - 每日三省吾身
  2. 被奇安信青睐的火绒 究竟有着怎样的魔力?
  3. 使用一键重装系统后,如何删除多余的PE系统引导菜单?
  4. Linux中的lo回环接口详细介绍
  5. java导出excel下载后文件损坏无法修复
  6. 递归算法之求x的n次方
  7. C语言编程>第六周 ⑥ 输入一串字符,统计大大写字母的个数,并强调统计必须用函数。
  8. [USACO18JAN]Lifeguards P 洛谷黑题,单调队列优化DP
  9. 手写一个微前端框架(内含源码地址)
  10. Bt656的数据格式