微信程序开发系列教程(一)开发环境搭建-阿里云开发者社区

开发者社区> jerrywangsap> 正文

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

简介:
+关注继续查看

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

https://mp.weixin.qq.com

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

登录微信公众号平台https://mp.weixin.qq.com, 使用菜单:Development->Basic configuration:

最重要的是在订阅号的控制台里指定一个消息服务器的url。如下图所示。这个消息服务器的url从哪里来?

我会用nodejs开发一个服务器,部署到Salesforce的云平台Heroku上。

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

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

微信官网上提供的验证流程的实现是用Python写的,我提供了一个nodejs版本的实现。

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

https:// server url>/?signature=096abd439b41f9610aeabe2d7534084fd8dafa20&echostr=16168327802220428137&timestamp=1512810825&nonce=384289189

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

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

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

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

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完全一致,认证通过。

回到订阅号的操作台,发现我们的nodejs微信服务器认证成功,可以做开发了。

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

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
8813 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
11065 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
2415 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
8911 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
7354 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
6777 0
+关注
2628
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载