文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-03 13:37

关注

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

https://mp.weixin.qq.com

这个教程使用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://<your server url>/?signature=096abd439b41f9610aeabe2d7534084fd8dafa20&echostr=16168327802220428137&timestamp=1512810825&nonce=384289189

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

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

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

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

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

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

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 tokenvar 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');}});};

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

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

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

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

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

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

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

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

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯