当前位置: 首页 > news >正文

网站后台管理系统素材/快速排名推荐

网站后台管理系统素材,快速排名推荐,免费网站域名查询,安徽省建设造价网站在进行微信公众平台开发之前,需要先接入微信公众平台。具体的步骤在 公众平台开发者文档-接入指南 已有详细介绍,文档中也提供了验证服务器的 PHP 示例代码。 本文主要提供了 Node.js 版本的验证代码,同时把步骤细化,让开发者更方…

在进行微信公众平台开发之前,需要先接入微信公众平台。具体的步骤在 公众平台开发者文档-接入指南 已有详细介绍,文档中也提供了验证服务器的 PHP 示例代码。

本文主要提供了 Node.js 版本的验证代码,同时把步骤细化,让开发者更方便地了解整个接入过程,对初学者更友好。

TL;DR

在微信公众平台后台的 开发者中心/填写服务器配置 页面,配置好 URL 和 Token 后,复制下面的代码,修改 Token,在服务器运行,然后再在页面上点击提交即可进行接入验证。

// checkSignature.js
/*** 整个验证步骤分为三步*    1. 将token、timestamp、nonce三个参数进行字典序排序*    2. 将三个参数字符串拼接成一个字符串进行sha1加密*    3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信*/const http = require('http');
const url = require('url');
const crypto = require('crypto');// Web 服务器端口
const port = 3333;
// 微信公众平台服务器配置中的 Token
const token = 'token';/***  对字符串进行sha1加密* @param  {string} str 需要加密的字符串* @return {string}     加密后的字符串*/
function sha1(str) {const md5sum = crypto.createHash('sha1');md5sum.update(str);const ciphertext = md5sum.digest('hex');return ciphertext;
}/*** 验证服务器的有效性* @param  {object} req http 请求* @param  {object} res http 响应* @return {object}     验证结果*/
function checkSignature(req, res) {const query = url.parse(req.url, true).query;console.log('Request URL: ', req.url);const signature = query.signature;const timestamp = query.timestamp;const nonce = query.nonce;const echostr = query.echostr;console.log('timestamp: ', timestamp);console.log('nonce: ', nonce);console.log('signature: ', signature);// 将 token/timestamp/nonce 三个参数进行字典序排序const tmpArr = [token, timestamp, nonce];const tmpStr = sha1(tmpArr.sort().join(''));console.log('Sha1 String: ', tmpStr);// 验证排序并加密后的字符串与 signature 是否相等if (tmpStr === signature) {// 原样返回echostr参数内容res.end(echostr);console.log('Check Success');} else {res.end('failed');console.log('Check Failed');}
}const server = http.createServer(checkSignature)
server.listen(port, () => {console.log(`Server is runnig ar port ${port}`);console.log('Start Checking...');
});

填写服务器配置

登录进入微信公众平台后台管理页面

登录

然后进入 基本配置 页面

基本配置

再然后选择 修改配置,进入到 填写服务器配置 子页面

填写服务器配置

  • URL 为已经解析到你的服务器的域名,这里以 http://wechat.nodejh.com 这个二级域名为例

  • Token 随意填写即可

验证服务器地址的有效性

验证服务器地址的有效性,需要在域名对应的服务器上运行一段验证程序。该程序会接收上个步骤中的域名所发送的 HTTP 请求。

官方文档提供了 PHP 的示例程序,下面是 Node.js 版本:

// checkSignature.js
/*** 整个验证步骤分为三步*    1. 将token、timestamp、nonce三个参数进行字典序排序*    2. 将三个参数字符串拼接成一个字符串进行sha1加密*    3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信*/const http = require('http');
const url = require('url');
const crypto = require('crypto');// Web 服务器端口
const port = 3333;
// 微信公众平台服务器配置中的 Token
const token = 'token';/***  对字符串进行sha1加密* @param  {string} str 需要加密的字符串* @return {string}     加密后的字符串*/
function sha1(str) {const md5sum = crypto.createHash('sha1');md5sum.update(str);const ciphertext = md5sum.digest('hex');return ciphertext;
}/*** 验证服务器的有效性* @param  {object} req http 请求* @param  {object} res http 响应* @return {object}     验证结果*/
function checkSignature(req, res) {const query = url.parse(req.url, true).query;console.log('Request URL: ', req.url);const signature = query.signature;const timestamp = query.timestamp;const nonce = query.nonce;const echostr = query.echostr;console.log('timestamp: ', timestamp);console.log('nonce: ', nonce);console.log('signature: ', signature);// 将 token/timestamp/nonce 三个参数进行字典序排序const tmpArr = [token, timestamp, nonce];const tmpStr = sha1(tmpArr.sort().join(''));console.log('Sha1 String: ', tmpStr);// 验证排序并加密后的字符串与 signature 是否相等if (tmpStr === signature) {// 原样返回echostr参数内容res.end(echostr);console.log('Check Success');} else {res.end('failed');console.log('Check Failed');}
}const server = http.createServer(checkSignature)
server.listen(port, () => {console.log(`Server is runnig ar port ${port}`);console.log('Start Checking...');
});

因为验证要使用 80(HTTP) 端口或 443(HTTPS) 端口,而 Node.js 一般不直接监听 80 端口,所以需要使用 Nginx 或其他程序将来自 http://wechat.nodejh.com 的请求转发到 Node.js 程序端口如上面的 3333。关于 Nginx 的配置,可以看我之前写的《使用 Ngnix 给 Node.js 应用做反向代理》。

这里也顺便给出该程序的 Nginx 配置

upstream nodejs {server 127.0.0.1:3333;keepalive 64;
}server {listen 80;server_name wechat.nodejh.com;# 日志access_log /var/log/nginx/wechat.nodejh.com.log;location / {proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header Host  $http_host;proxy_set_header X-Nginx-Proxy true;proxy_set_header Connection "";proxy_pass http://nodejs;}
}

配置就绪之后,启动验证程序

$ node checkSignature.js
Server is runnig ar port 3333
Start Checking...

这样,checkSignature.js 就会创建一个 3333 端口的服务。访问 http://wechat.nodejh.com 这个域名的时候,Nginx 就会将请求转发到 3333 端口。

在微信公众平台后台管理的服务器配置页面,点击提交按钮,就会填写的 URL (这里是 http://wechat.nodejh.com)发送一个 HTTP 请求,并带上 signature,timestamp,nonce,echostr 这四个参数。

启动 checkSignature.js 后,在服务器配置页面,点击提交按钮,就会开启验证。

服务器端出现下面的结果,就说明验证成功。验证成功后,微信公众平台后台会自动跳转到 基本配置 页面。

# 服务端响应...
signature:  8fffb8f011d64819ec61105415114694bb03d392
Sha1 String:  8fffb8f011d64819ec61105415114694bb03d392
Check Success

然后就可以依据接口文档实现业务逻辑了。

后续我也还会更新一些关于微信公众平台开发的文章,欢迎关注。


Github Issue: https://github.com/nodejh/nodejh.github.io/issues/24

http://www.jmfq.cn/news/4893589.html

相关文章:

  • 做网站关键词要懂代码么/哪里做网站便宜
  • 海口企业自助建站/重庆森林经典台词 凤梨罐头
  • 手机免费建设网站/网络营销成功的品牌
  • 做问卷不花钱的网站/网络推广培训课程内容
  • 建立网站需要多久/如何制作网站赚钱
  • 做网站最专业的公司/百度浏览器下载官方免费
  • 手机企业网站怎么做/关键词优化技巧有哪些
  • 淄博专业网站建设价格/怎么关闭seo综合查询
  • 冀州建设局网站/网站点击量统计
  • 尚义网站建设wl17581/刚刚刚刚刚刚好痛
  • 北京国际建设集团网站/百度搜索指数排名
  • 网站建设费专用发票能不能抵扣/百度一下官网首页百度一下
  • 安阳哪里做360网站/推广游戏怎么拉人最快
  • 济南地铁建设/seo教程技术优化搜索引擎
  • 做淘宝优惠券网站要多少钱/数据平台
  • 网站建设私单合同/emlog友情链接代码
  • 威海网站建设短信精准群发/今日百度关键词排名
  • 建设部建造师强制注销网站/android优化大师
  • 如何查网站是织梦做的/企业邮箱哪个好
  • 我的网站域名是什么/社群运营的经典案例
  • 国内创意产品网站/营销网络是什么
  • 连云港建设网站/搜索引擎有哪些软件
  • 免费注册网站哪个好/路由优化大师
  • 装修网网站建设/北京seo加盟
  • 南京网页网站制作/常见的搜索引擎
  • 福州cms建站/网络营销方案的制定
  • 网络存储上做网站/如何申请网站域名流程
  • 传奇公益服/浙江关键词优化
  • 能免费做微信群推广的网站/十大seo公司
  • 国外饮品网站/四川seo