node.js微信小程序配置消息推送(node.js 微信小程序)

在开发微信小程序时,有一个消息推送,它的解释是这样的。

消息推送具体的内容是下面的这个网址 https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/message-push.html,他介绍的也还可以,就是我这里换成了node代码。

消息推送 

启用并设置消息推送配置后,用户发给小程序的消息以及开发者需要的事件推送,都将被微信转发至该服务器地址中。

在微信小程序的首页开发里面,开发设置中,微信的官网中,介绍的也还可以,php代码写的差不多也能了解什么意思,但是其中没有告诉我们要把echostr这个参数在接口中返回出来,所以导致我测试了半天都是那个Token验证失败。

写一下学习记录吧,方便后来的人遇到同样的问题,也方便自己以后查阅。

node.js微信小程序配置消息推送(node.js 微信小程序)

这个里面的url服务器地址就是自己的地址(上面那个是我随便写的),后面接上自己的接口,比如我的就是 /token,当你点击提交的时候,会发现在服务器中会有如下的get请求

node.js微信小程序配置消息推送(node.js 微信小程序)

避免有些人看不清楚上面的我在这里再用代码重新写一下上面的东西。

GET /checkPushMsg?signature=db6e0c25b7743d8dd7ebfda1db6c742a762a2f37&echostr=1712804002525306855&timestamp=1549949926&nonce=982754662 200 1.321 ms – 46

其中的各个参数微信官网中介绍的也非常的详细。

node.js微信小程序配置消息推送(node.js 微信小程序)

开发者通过检验 signature 对请求进行校验(下面有校验方式)。若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:

  1. 将token、timestamp、nonce三个参数进行字典序排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信

验证URL有效性成功后即接入生效,成为开发者。

检验signature的node.js示例代码:

/* 验证服务器推送url地址 开发者提交信息后,微信服务器将发送GET请求到填写的服务器URL上,GET请求携带参数如下 @params signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数,nonce参数 @params timestamp 时间戳 @params nonce 随机数 @params echostr 随机字符串*/exports.check_push = (req, res) => { console.log(req.query); let signature = req.query.signature, timestamp = req.query.timestamp, nonce = req.query.nonce, echostr = req.query.echostr; let a = crypto.createHash(\’sha1\’).update([pushToken, timestamp, nonce].sort().join(\’\’)).digest(\’hex\’); // 这里的pushToken就是在上面的那里配置的Token if(a == signature){ // 如果验证成功则原封不动的返回 res.send(echostr); }else{ res.send({ status: 400, data: \”check msg error\” }) }};

其中遇到的两个问题,上面已经说了,这里再说一下这两个问题。

其中一个是把 token、timestamp、nonce三个参数进行字典序排序,当时想自己写一个方法,写了好久发现有点难受,所以在网上找了一些东西,发现那个 数组的sort方法不传递参数就是那个 默认字符编码排序,所以就非常简单了,加密直接用到crypto模块

另外一个就是微信都没有告诉我们要把那个echostr返回出去,虽然他的意思就是那个意思。。 这样就可以配置成功了。

如果你同样遇到了这个问题,看了我的文章解决了,我会非常高兴。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月9日 上午10:07
下一篇 2024年5月9日 上午10:19

相关推荐

  • 南京住建局科研项目管理办法南京住建局科研项目管理办法

    南京住建局科研项目管理办法 南京住建局科研项目管理办法 为规范南京住建局科研项目管理,提高科研项目质量,保障项目顺利进行,南京住建局制定了科研项目管理办法。 一、项目范围 本项目旨…

    科研百科 2024年7月4日
    32
  • 特殊医学用途配方食品注册实施规范(特殊医学用途配方食品注册实施规范最新)

    特殊医学用途配方食品注册实施规范 (基本要素) 一、行政许可事项名称: 特殊医学用途配方食品注册 二、中央主管部门: 市场监管总局 三、实施机关: 市场监管总局 四、设定和实施依据…

    科研百科 2024年4月21日
    53
  • 互联网是在科研项目里吗互联网是在科研项目里吗

    互联网在科研项目中的应用 互联网已经成为人们日常生活中不可或缺的一部分,但同时也成为了科研项目中不可或缺的一部分。互联网的出现使得科研项目更加快速、便捷、高效地进行,同时也为研究人…

    科研百科 2024年9月10日
    16
  • 国企基层党建面临的新挑战及应对建议(国企基层党建面临的新挑战及应对建议怎么写)

    文 · 刘速 《国资报告》杂志2021年第4期 2016年10月,中央召开全国国有企业党的建设工作会议。习近平总书记在会上指出:“坚持党的领导、加强党的建设,是我国国有企业的光荣传…

    科研百科 2024年7月17日
    51
  • 软件项目管理的进度管理

    软件项目管理的进度管理 软件项目管理是软件开发过程中至关重要的一环。通过有效的进度管理,项目团队可以确保项目按时完成,并在预算内交付高质量的软件产品。本文将介绍软件项目管理中的重要…

    科研百科 2024年8月22日
    27
  • 项目管理系统套餐怎么做

    项目管理系统是一种用于组织和管理项目的工具,可以帮助团队更有效地协作和沟通。一套好的项目管理系统套餐可以大大提高团队的工作效率,降低项目失败的风险。在本文中,我们将介绍如何选择一套…

    科研百科 2025年1月23日
    2
  • 师范研究生科研项目立项

    师范研究生科研项目立项 作为一名师范研究生,我们深知教育的重要性。为了提升我们的专业能力,提高我们的学术水平,我们立项进行科研项目,为教育事业的发展做出自己的贡献。 本次科研项目的…

    科研百科 2025年5月10日
    1
  • 项目管理系统销售

    项目管理系统销售:让项目管理更高效 随着现代企业的快速发展,项目管理已经成为企业成功的关键因素之一。然而,传统的手动管理方式已经无法满足现代企业对于项目管理的需求。因此,项目管理系…

    科研百科 2024年5月27日
    50
  • 人才市场管理系统项目

    人才市场管理系统项目 随着经济的发展,人才市场已经成为一个非常重要的行业。在这个行业中,企业和求职者都需要一个高效、便捷的系统来管理和操作相关信息。因此,开发一个人才市场管理系统成…

    科研百科 2025年7月10日
    1
  • 低代码开发安全性怎么样

    低代码开发是一种快速构建应用程序的方法,它通过使用图形化界面和少量的编码来简化开发过程。然而,许多人对低代码开发的安全性存在疑虑。本文将探讨低代码开发的安全性,并讨论如何确保应用程…

    科研百科 2024年3月1日
    54