nodeJS微信JSDK 配置

一、微信公众平台申请一个测试公众号

二、配置nodeJS 使用express框架搭建服务器

微信生成签名步骤:

1.获取token

2.通过token,获取jsapi_ticket

3.生成随机字符串,获取当前时间戳

4.排序拼接生成签名

  • 在routes---->index.js
var express = require('express');
var router = express.Router();
var axios = require('axios');
var sha1 = require('sha1');
var fs = require('fs'); let accessTokenJson = require('../user_token'); const APP_ID = 'wx47159511d53720fb'
const APP_SECRET = 'e8be2675730af8b743769e34fc8a7267'
let config_nonceStr = '' //随机字符串
let config_timestamp = '' //时间戳 /* GET home page. */
router.get('/', function(req, res, next) {
res.send('这是首页')
}); router.get('/getWxConfig', function (req, res, next) {
let url = req.query.url; // 获取url
getToken().then(getTicket).then(ret=>{
res.json({ // 返回前端需要的配置config
success:true,
code:200,
config_appid: APP_ID,
config_sign: signature(ret, url),
config_timestamp,
config_nonceStr
})
})
}); /*获取token*/
function getToken(){
return new Promise((resolve,reject)=>{
//获取当前时间
var currentTime = new Date().getTime();
if (accessTokenJson.access_token === '' || accessTokenJson.expires_time < currentTime){
axios.get('https://api.weixin.qq.com/cgi-bin/token',{
params:{
appid: APP_ID,
secret: APP_SECRET,
grant_type: 'client_credential'
}
}).then(res=>{
accessTokenJson.access_token = res.data.access_token;
accessTokenJson.expires_time = new Date().getTime() + (parseInt(res.data.expires_in) - 200) * 1000;
//更新本地存储
fs.writeFile('../user_token.json', JSON.stringify(accessTokenJson));
resolve(accessTokenJson.access_token)
}).catch(err => {
return Promise.reject(err);
})
}else{
resolve(accessTokenJson.access_token)
}
})
} /* 通过token,获取jsapi_ticket */
function getTicket(accessToken){
return new Promise((resolve,reject)=>{
axios.get('https://api.weixin.qq.com/cgi-bin/ticket/getticket', {
params: {
type: 'jsapi',
access_token: accessToken
}
}).then(res => {
resolve(res.data.ticket);
}).catch(err=>{
return Promise.reject(err);
})
})
} /**
* 签名算法
* @param ticket 用于签名的 jsapi_ticket
* @param url 用于签名的 url ,注意必须动态获取
* @return sha1算法加密的字符串
*/
function signature(ticket, url){
config_nonceStr = createNonceStr() // 生成随机字符串
config_timestamp = createTimestamp() // 获取当前时间戳
let ret ={
jsapi_ticket: ticket,
nonceStr:config_nonceStr,
timestamp:config_timestamp,
url: url,
}
var string = raw(ret) // 排序拼接为字符串
console.log(string)
return sha1(string) // 返回sha1加密的字符串
} /* 生成随机字符串 */
function createNonceStr(){
return Math.random().toString(36).substr(2,15);
} /* 获取当前时间戳 */
function createTimestamp() {
return parseInt(new Date().getTime() / 1000) + '';
} /* 排序拼接 */
function raw(args){
let keys = Object.keys(args).sort(); //获取args对象的键值数组,并对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)
let newArgs ={}
keys.forEach(key=>{
newArgs[key.toLowerCase()] = args[key];
})
let string = '';
for (let k in newArgs) {// 循环新对象,拼接为字符串
string +=`&${k}=${newArgs[k]}`
}
string = string.substr(1)// 截取第一个字符以后的字符串(去掉第一个'&')
return string;
} module.exports = router;

三、使用内网穿透工具(例如:natapp)把本地服务器映射到公网上去

如果有服务器的可以跳过这一步

四、前端使用微信JSDK

使用步骤:

1、绑定域名

2、引入JS文件 http://res2.wx.qq.com/open/js/jweixin-1.4.0.js

vue 项目可以下载模块 npm i weixin-js-sdk -S

3、配置config

wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});

4、通过ready接口处理成功验证,通过error接口处理失败验证

5、调用微信接口APi

详情见开发文档地址:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

nodeJS微信JSDK 配置的更多相关文章

  1. nodejs微信公众号快速开发|自定义关键字回复

    一点说明: nodejs 微信api 扩展,集成大部分功能. 案例 https://github.com/leiroc/node-wxeasy-example 上传example中文件到服务器 ,然后 ...

  2. Webpack 2 视频教程 002 - NodeJS 安装与配置

    原文发表于我的技术博客 这是我免费发布的高质量超清「Webpack 2 视频教程」. Webpack 作为目前前端开发必备的框架,Webpack 发布了 2.0 版本,此视频就是基于 2.0 的版本讲 ...

  3. Nodejs的安装配置及如何在sublimetext2中运行js

    Nodejs的安装配置及如何在sublimetext2中运行js听语音 | 浏览:4554 | 更新:2015-06-16 11:29 Nodejs的安装配置及如何在sublimetext2中运行js ...

  4. Linux环境下NodeJS的安装配置(HelloWorld)

    Linux环境下NodeJS的安装配置(HelloWorld) 最简单的环境安装,测试helloworld.给初学者!! 安装脚本,请仔细阅读逐行执行: #!/bin/bash #检查是否已经安装 r ...

  5. Nodejs微信开发使用wechat-api回复多条消息

    在上一往篇文章<Nodejs微信开发>中,微信后台能够正常的接收到客户端的消息,并能够简单的回复一条消息至客户端. 但我的目录是将微信与Bot Framework进行关联,那么肯定就有一些 ...

  6. Java企业微信开发_07_总结一下企业微信的配置

    一.企业微信后台 1.回调url 2.可信域名 3.菜单跳转按钮中的链接 4.PC端网页授权 二.代码内 1.企业微信的配置信息:WeiXinParamesUtil

  7. 微信支付配置参数:支付授权目录、回调支付URL

    一.开通微信支付的首要条件是:认证服务号或政府媒体类认证订阅号(一般认证订阅号无法申请微信支付) 二.微信支付分为老版支付和新版支付,除了较早期申请的用户为老版支付,现均为新版微信支付. 三.公众平台 ...

  8. 【详细、开箱即用】.NET企业微信回调配置(数据回调URL和指令回调URL验证)

    前言: 前段时间因为公司业务需求,需要将微信小程序与企业微信对接通,也就是把小程序绑定到对应的企业微信账号下,在该企业微信的用户可以将该小程序绑定到工作台中,然后可以在工作台中打开该小程序并授权.不过 ...

  9. NodeJS 微信公共号开发 - 响应微信发送的Token验证(山东数漫江湖)

    背景 使用 NodeJS 进行微信公共号开发,首先需要响应微信发送的Token验证,官方文档 填写服务器配置 登录微信公共平台,在开发下的基本配置打开该页面. 依次填写接口的 URL.自定义的 Tok ...

随机推荐

  1. 使用analyze命令统计信息

    ① 搜集和删除索引.表和簇的统计信息② 验证表.索引和簇的结构③ 鉴定表和簇和行迁移和行链接针对analyze的搜集和删除统计信息功能而言Oracle推荐使用DBMS_STATS包来代替analyze ...

  2. ubuntu18 任务栏调到底部

    $ gsettings set org.gnome.shell.extensions.dash-to-dock dock-position BOTTOM 原因如下: https://askubuntu ...

  3. jQuery的zTree插件

    写在前面 jQuery的 zTree插件 关键代码 <%@ page language="java" contentType="text/html; charset ...

  4. Android 使用NDK编译二进制文件并运行

    Android 使用NDK编译二进制文件并运行本文介绍如何编译可以在Android平台上运行的二进制可执行文件. 首先我们,知道,Android是基于Linux的,而在Linux上,可以执行二进制文件 ...

  5. 查找算法(1)--Sequential search--顺序查找

    1. 顺序查找 (1)说明 顺序查找适合于存储结构为顺序存储或链接存储的线性表.     (2)基本思想 顺序查找也称为线形查找,属于无序查找算法.从数据结构线形表的一端开始,顺序扫描,依次将扫描到的 ...

  6. 转 RAC单个节点执行expdp提示ORA-31693 ORA-31617 ORA-19505 ORA-27037错误

    http://blog.itpub.net/31394774/viewspace-2217567/ 1.在RAC单节点执行expdp,出现ORA-31693 ORA-31617 ORA-19505 O ...

  7. 21天学通 C++(第8版) 内涵目录

    21天学通 C++(第8版) 第1章 绪论 1 1.1 C++简史 1 1.1.1 与C语言的关系 1 1.1.2 C++的优点 1 1.1.3 C++标准的发展历程 2 1.1.4 哪些人使用C++ ...

  8. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器功能简介---实时数据统计报表、视频文件上传、点播、分享、集成

    熟悉EasyDSS流媒体服务器的小伙伴应该都知道,EasyDSS通过将EasyRTMP推流的直播流进行直播转码.智能处理.视频分发,再通过 CDN 分发节点分发到终端播放 SDK为观众播放高清低延时的 ...

  9. 阿里开源 OpenJDK 发行版 Dragonwell

    日有消息显示,阿里将于 21 日重磅发布其 OpenJDK 发行版 Alibaba Dragonwell. 我们知道 OpenJDK 是基于 GPL v2/Classpath Exception 的 ...

  10. 解决在MAC上输入法切换慢的问题

    Mac Book Pro升级到Catalina 10.15.1 之后,不论是系统自带的中文输入法,还是安转的第三方中文输入法,当使用快捷键"Ctrl + Space"进行中英文输入 ...