微信服务器搭建公众号服务器搭建主要分成两步:第一步是在自己的服务器上搭建一个用于校验开发者的服务器项目,第二步则是在微信公众号配置服务器资源即可。

一、搭建服务器器项目

1.使用springBoot或者其他的框架进行项目搭建比较快捷一点搭建一个简单的校验开发者项目。这里是使用了springBoot进行搭建,详细实现是参考https://blog.csdn.net/wsadzxcleg/article/details/80983108博客中的代码。

目录架构如下:

2.controller层代码如下,使用SignVO对象接收微信公众号设置传递的参数,通过工具类WxUtil.checkSignature()方法对用户的参数进行校验,如果通过则返回echostr参数给公众号即可。

package com.hls.demo.wx;import com.hls.demo.bean.SignVO;
import com.hls.demo.utils.WxUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class WxVerifyController {private static Logger logger = LoggerFactory.getLogger(WxVerifyController.class);@RequestMapping("/wx/verifysign")public String wxVerifySign(SignVO vo){logger.info("微信服务器验证信息:" + vo.toString());if (WxUtil.checkSignature(vo)){return vo.getEchostr();}return null;}
}

3.bean对象以及参数说明如下:

package com.hls.demo.bean;/*** @Description 微信校验bean* @Author HLS* @Date 2018/12/25 14:36**/
public class SignVO {//微信加密签名private String signature;//时间戳private String timestamp;//随机数private String nonce;//随机字符串private String echostr;public String getSignature() {return signature;}public void setSignature(String signature) {this.signature = signature;}public String getTimestamp() {return timestamp;}public void setTimestamp(String timestamp) {this.timestamp = timestamp;}public String getNonce() {return nonce;}public void setNonce(String nonce) {this.nonce = nonce;}public String getEchostr() {return echostr;}public void setEchostr(String echostr) {this.echostr = echostr;}@Overridepublic String toString() {return "SignVO{" +"signature='" + signature + '\'' +", timestamp='" + timestamp + '\'' +", nonce='" + nonce + '\'' +", echostr='" + echostr + '\'' +'}';}
}

3.wxUtils工具类,使用的是参考博客的工具类

package com.hls.demo.utils;import com.hls.demo.bean.SignVO;import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;/*** @Description 微信公众号工具类* @Author HLS* @Date 2018/12/25 14:46**/
public class WxUtil {// 与接口配置信息中的Token要一致private static String token = "MonkeyLee";/*** 验证签名** @param signature* @param timestamp* @param nonce* @return*/public static boolean checkSignature(SignVO vo) {String signature = vo.getSignature();String timestamp = vo.getTimestamp();String nonce = vo.getNonce();String[] arr = new String[]{token, timestamp, nonce};sort(arr);StringBuilder content = new StringBuilder();for (int i = 0; i < arr.length; i++) {content.append(arr[i]);}MessageDigest md = null;String tmpStr = null;try {md = MessageDigest.getInstance("SHA-1");// 将三个参数字符串拼接成一个字符串进行sha1加密byte[] digest = md.digest(content.toString().getBytes());tmpStr = byteToStr(digest);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}content = null;// 将sha1加密后的字符串可与signature对比,标识该请求来源于微信return tmpStr != null ? tmpStr.equals(signature.toUpperCase()) : false;}/*** 将字节数组转换为十六进制字符串** @param byteArray* @return*/private static String byteToStr(byte[] byteArray) {String strDigest = "";for (int i = 0; i < byteArray.length; i++) {strDigest += byteToHexStr(byteArray[i]);}return strDigest;}/*** 将字节转换为十六进制字符串** @param mByte* @return*/private static String byteToHexStr(byte mByte) {char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A','B', 'C', 'D', 'E', 'F'};char[] tempArr = new char[2];tempArr[0] = Digit[(mByte >>> 4) & 0X0F];tempArr[1] = Digit[mByte & 0X0F];String s = new String(tempArr);return s;}public static void sort(String a[]) {for (int i = 0; i < a.length - 1; i++) {for (int j = i + 1; j < a.length; j++) {if (a[j].compareTo(a[i]) < 0) {String temp = a[i];a[i] = a[j];a[j] = temp;}}}}
}

二.微信公众号配置

用户在配置服务器时,微信公众号会给定appID和AppSecret这两个参数,这是用于后台开发验证用的,我们服务器搭建用不到,主要是url、token、encodingAeskey参数。这里url是访问你服务器的url,并且规定端口号是80。token则是和服务器中的token需要统一,否则会导致加解密时出错,导致验证不通过。encodingAeskey参数则无需理会,直接生成即可。加密方式在开发时使用明文模式。

三、具体的流程如下:

感觉不用我解释也可以懂了吧!!!!!!!!!

微信公众号服务器搭建相关推荐

  1. php虚拟主机搭建微信公众号服务器

    @版权声明:本文为博主原创文章,未经博主允许不得转载https://blog.csdn.net/qq_40758535/article/details/89606716 php虚拟主机搭建微信公众号服 ...

  2. 虚拟主机搭建微信公众号服务器

    一.前言 搭建微信公众号服务器的方式不只一种,可以用java等其他语言或是其他云空间来搭建服务器,这里总结的是用虚拟主机(主机公园中的虚拟主机)搭建微信公众号服务器的大概思路.不管用什么方式,配置微信 ...

  3. 关于微信公众号服务器设置token的问题

    关于微信公众号服务器设置token的问题 http://blog.csdn.net/shb2058/article/details/77247602

  4. Java实现接入微信公众号服务器

    在微信公众号开发中,我们需要接入微信服务器,让微信服务器与我们自己的服务器建立安全信道,建立信任.微信服务器向我们的服务器发送请求的时候会携带三个参数timestamp=时间戳&nonce=随 ...

  5. php模拟微信公众号服务器,GitHub - Lin07ux/wechat-third-server: 使用 ThinkPHP、Vue 搭建一个带有后台的微信公众号第三方服务器的基础模板...

    微信公众号第三方服务器 该项目用于实现一个最基本的微信公众号第三方服务器开发的模板. 基于: ThinkPHP v3.2.3 Vue v2.2.0 Vue-resource v1.0.3 功能 微信用 ...

  6. 微信公众号服务器页面模板,GitHub - devsnippet/wechat-third-server: 使用 ThinkPHP、Vue 搭建一个带有后台的微信公众号第三方服务器的基础模板...

    微信公众号第三方服务器 该项目用于实现一个最基本的微信公众号第三方服务器开发的模板. 基于: ThinkPHP v3.2.3 Vue v2.2.0 Vue-resource v1.0.3 功能 微信用 ...

  7. 微信公众号平台搭建连接javaweb

    先决条件: 一个本地可运行的javaweb:我的是一个网上git的springboot项目 注册一个微信公众号申请链接 配置前的准备-内网穿透 由于项目搭建在本地电脑上,外网无法访问,所以需要使用工具 ...

  8. 微信公众号服务器模式,微信公众平台的两种模式

    微信公众平台的两种模式,只有清楚了解了微信公众平台的两种模式,才能更好的实现自己想要的开发效果. 微信公众平台的高级模式中有两种模式:编辑模式和开发模式.这两种模式的运营思路完全不同.编辑模式基本围绕 ...

  9. 查找微信公众号服务器,墨涩网 - 免插件实现微信公众号搜索连接wordpress网站文章——墨涩网...

    微信公众号当前是每个用户都在使用的功能,而使用wordpress程序的站长会希望把自己的网站连接到微信公众号.连接后通过公众号访问网站的内容. 目前网上有很多可以实现微信公众号和wordpress网站 ...

最新文章

  1. 转: GridView:当鼠标滑过,行的背景颜色发生变化
  2. python那么慢为什么还有人用-为什么大家都说python编程的效率速度慢呢?
  3. PHP中trait的特性
  4. geoserver安装(war安装+exe安装)
  5. Python基础(六)--类与对象
  6. 字符集和编码规范:ASCII,Unicode和UTF-8, latin1,BIG5,GBK
  7. 搞清字符集和字符编码
  8. SolidWorks2020无法获得下列许可SOLIDWORKS Standard.Server节点已经关闭或是没有响应。(-96,7,11003)
  9. vue中使用echarts实现中国地图
  10. Windows下彻底卸载MySQL数据库
  11. matlab人脸识别代码,基于matlab的人脸识别源代码.doc
  12. 微信公众号唤起微信支付
  13. 5.项目上线流程管理规范
  14. 2021年全国大学生计算机能力挑战赛(Java)决赛试题代码(外加部分试题)
  15. python获取pdf页面尺寸_python-从pdf提取页面作为jpeg
  16. 详解_阿里云FPGA服务器f3实例RTL开发最佳实践脚本代码
  17. 戴尔Win10笔记本连接wifi后显示“无internet,安全”但可正常上网
  18. P85.2.(2)回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符序列是否是回文。(提示:将一半的字符入栈)(C语言描述)
  19. sd3403开发板学习(一)
  20. Mysql 慢日志查询小于1000ms显示0s问题排查

热门文章

  1. 【LaTeX 教程】01. LaTeX 简介与安装
  2. 王者荣耀服务器维护费用,王者荣耀服务器全线崩溃!事后只补偿100铭文!网友:卸载了...
  3. GIST 空间包络特征 推荐论文 简介
  4. java字节流与字符流的区别编码缓冲
  5. MySQL - binlog 图文详解
  6. ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.
  7. Java中的经典算法之冒泡排序(Bubble Sort)
  8. onRef在react中的使用
  9. 【生产者分析六】Kafka生产者Tips
  10. python openpyxl 读取Excel,超简单案例python openpyxl 获取表格数据