微信程序开发系列教程(一)开发环境搭建

简介: 微信程序开发系列教程(一)开发环境搭建

1. 您得从微信官方平台注册一个微信订阅号:

https://mp.weixin.qq.com

2. 这个教程使用nodejs开发微信订阅号对应的消息服务器,因此需要具备基本的nodejs开发技能。

image.png

image.png

当您的微信订阅号的粉丝通过微信App同您的订阅号交互,比如发消息,或者使用您的微信订阅号自定义菜单时,这些请求就会通过微信App转发到您的nodejs消息服务器上。


但是当您配置的消息服务器要真正起作用,还得先通过一个验证。验证流程在微信官网上: https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5

image.png

image.png

我们在微信订阅号的控制台点了Submit按钮之后,微信框架会发送一个HTTP请求到你的微信服务器去,请求明细如下:


https:///?signature=096abd439b41f9610aeabe2d7534084fd8dafa20&echostr=16168327802220428137×tamp=1512810825&nonce=384289189


您的微信服务器的职责就是:按照上面流程图定义的规范,计算根据您微信订阅号的token(令牌),时间戳和nonce字段,计算出一个签名值,然后同发到消息服务器的签名值做对比。如果对比发现两者不一致,会收到错误消息“Token authentication failed”。

image.png

下面是如何用nodejs开发使得消息服务器通过验证流程。

1. 创建一个新的nodejs工程,下列package.json文件里高亮部分是用于消息服务器通信的重要部分。

主要的逻辑位于server.js里。

image.png

2. Server.js的主要代码:

var express = require('express');
var routesEngine = require('./index.js');
var app = express();
routesEngine(app);
app.listen(process.env.PORT || 3000, function () {
console.log('Listening on port, process.cwd(): ' + process.cwd() );
});
In implementation of index.js, now we need to implement verification process:
var request = require('request');
var jsSHA = require('jssha');
module.exports = function (app) {
app.route('/').get(function(req,res){
var token="jerry"; // replace it with your own token
var signature = req.query.signature,
timestamp = req.query.timestamp,
echostr = req.query.echostr,
nonce = req.query.nonce;
oriArray = new Array();
oriArray[0] = nonce;
oriArray[1] = timestamp;
oriArray[2] = token;
oriArray.sort();
var original = oriArray.join('');
var shaObj = new jsSHA("SHA-1", 'TEXT');
shaObj.update(original);
var scyptoString = shaObj.getHash('HEX');
console.log("calculated string: " + scyptoString);
if (signature == scyptoString) {
res.send(echostr);
} else {
res.send('bad token');
}
});
};

3. 将该nodejs应用部署到Heroku平台。具体操作参考Heroku的操作手册。


部署成功后,到微信订阅号操作台点Submit按钮提交验证请求,然后在Heroku应用的控制台上能观察到我们自己的微信服务器计算出的signature和微信平台发送的signature完全一致,认证通过。

image.png

后续Jerry会带来更多微信订阅号开发的内容。

相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
XML 移动开发 小程序
抖音小程序开发 唤起收银台支付(可以选择支付宝APP支付或微信H5支付)
字节跳动也开放了小程序给商家接入,可以在旗下APP如抖音、今日头条、今日头条极速版等应用中即点即用,基于庞大的数亿用户量为其引流,帮助商家获取用户流量,销售商品,其模式和微信小程序差不多。
1748 0
抖音小程序开发 唤起收银台支付(可以选择支付宝APP支付或微信H5支付)
|
11月前
微信小游戏开发系列教程3-熟悉所使用的游戏制作工具
这一节我们会熟悉一下将要使用的游戏制作工具-微信小游戏制作工具,然后制作出第一个“你好,小游戏”的事例,向小游戏开发世界问好。 欢迎体验我的微信小游戏作品精致1010。
79 0
|
11月前
微信小游戏开发系列教程2-了解游戏全貌和一些游戏开发中的术语
这一节小蚂蚁将会带着大家先从整体上了解一个小游戏的全貌,然后再熟悉一些游戏开发领域中常用的术语。最后分享一下自己的一些经验和方法,希望能够帮助到那些刚进入游戏开发领域的新人。 欢迎体验我的微信小游戏作品:精致1010
65 0
|
11月前
微信小游戏开发系列教程1-做个小游戏并不难,你也可以的
这是小蚂蚁的人人都能做游戏的系列教程的开篇,做个小游戏没有那么难,你也可以的。 我做了一个精致而温暖的小游戏,欢迎点击试玩。
100 0
|
Linux 编译器 Go
兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00
Go lang,为并发而生的静态语言,源于C语言又不拘泥于效率,高效却不流于古板,Python灵活,略输性能,Java严谨,稍逊风骚。君不见各大厂牌均纷纷使用Go lang对自己的高并发业务进行重构,原因无他,经济下行的大背景之下,性能突出、效率拉满的Go lang无疑是高并发场景下节约服务器资源的一剂灵药。
兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00
【Axure教程】用中继器做聊天对话APP(微信案例)
【Axure教程】用中继器做聊天对话APP(微信案例)
【Axure教程】用中继器做聊天对话APP(微信案例)
|
监控 Shell
【zabbix教程七】——zabbix3.0配置微信报警
【zabbix教程七】——zabbix3.0配置微信报警
128 0
【zabbix教程七】——zabbix3.0配置微信报警
|
数据采集 Web App开发 前端开发
windows、mac、iphone微信多开、防撤回功能2022-09-07最新教程
本文讲的是vx多开、防撤回两个功能,包含windows系统、mac系统还有iphone。iphone不支持ios16版本。因为我会不断的更新,如果发现版本不一样,不需要担心,教程还是一样的,只是更新了包而已。 作者:安哥说前端 https://www.bilibili.com/read/cv18482372 出处:bilibili
1637 0
|
存储 数据安全/隐私保护 Python
最新最详细的Python开发环境搭建以及PyCharm的安装配置教程【图+文】(二)
本文介绍 Python 开发环境的安装,PyCharm 的安装(Professional版本,Community版本)
206 0
最新最详细的Python开发环境搭建以及PyCharm的安装配置教程【图+文】(二)
|
Python Windows
最新最详细的Python开发环境搭建以及PyCharm的安装配置教程【图+文】(一)
本文介绍 Python 开发环境的安装,PyCharm 的安装(Professional版本,Community版本)
570 0
最新最详细的Python开发环境搭建以及PyCharm的安装配置教程【图+文】(一)

热门文章

最新文章