nodejs获取微信小程序带参数二维码实现代码


Posted in NodeJs onApril 12, 2017

nodejs获取微信小程序带参数二维码实现代码

由于项目需求,需要获取小程序页面的带有参数的二维码。好,那就看文档搞吧。

之前都是写前端,没有写过后台的东西,这次难得有机会组长让我试一试试用node来写,那就写吧。

1、首页获取token,发送request请求,用get的方式,在url后面加上小程序的grant_type,appid,secret,就顺利拿到token了,注意,这个token是有有效时间的,小程序的是7200秒,也就是2个小时,每天获取的次数有限,需要有个中控服务器定时获取token,由于我的业务量小,就没有对token进行保存了,每次都是重新获取。

2、获取完token之后,再发送请求获取二维码,坑的是,微信没有告诉我们获取的是二进制流,之前一直是写前端的代码,对流没有概念,百度之,谷歌之,折腾了两天,终于搞定。还遇到了express的坑,用原来express的代码,死活生成不了二维码,新建一个express再生成二维码就没问题,莫名其妙的坑。

上代码:

var fs = require('fs'); 
var request = require('request'); 
var wx_conf = require('../../conf/wx_conf');//这里放了微信appid跟appSecret,文件没有引入进来,要用的时候,改一下吧。 
var AccessToken = { 
 grant_type: 'client_credential', 
 appid: wx_conf.appId, 
 secret: wx_conf.appSecret 
} 
var wx_gettoken_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=' + AccessToken.grant_type + '&appid=' + AccessToken.appid + '&secret=' + AccessToken.secret; 
//请求二维码的参数 
var postData = { 
 path: "pages/index/index", 
 width: 430 
} 
var createQrcode = { 
 create: function() { 
  console.log('fn:create'); 
  this.getToken(); 
 }, 
 //获取微信的token 
 getToken: function() { 
  console.log('fn:getToken'); 
  var that = this; 
  new Promise((resolve, reject) => { 
   console.log('进入Promise方法了'); 
   request({ 
    method: 'GET', 
    url: wx_gettoken_url 
   }, function(err, res, body) { 
    if (res) { 
     resolve({ 
      isSuccess: true, 
      data: JSON.parse(body) 
     }); 
    } else { 
     console.log (err); 
     reject({ 
      isSuccess: false, 
      data: err 
     }); 
    } 
   }) 
  }).then(proData => { 
   that.getQrcode(proData); 
  }); 
 }, 
 //生成二维码 
 getQrcode: function(proData) { 
  console.log ('fn:getQrcode'); 
  if (proData.isSuccess) { 
   postData = JSON.stringify(postData); 
   request({ 
    method: 'POST', 
    url: 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=' + proData.data.access_token, 
    body: postData 
   }).pipe(fs.createWriteStream('./public/images/index.png'));//路径自己定义吧 
  } else { 
   console.log('Promise请求数据出错'); 
  } 
 } 
} 
module.exports = createQrcode;//暴露对象,调用create方法既可以创建二维码

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

NodeJs 相关文章推荐
轻松创建nodejs服务器(6):作出响应
Dec 18 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
利用nodejs监控文件变化并使用sftp上传到服务器
Feb 18 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
Nodejs中的JWT和Session的使用
Aug 21 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
nodejs+express最简易的连接数据库的方法
Dec 23 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 #NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 #NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 #NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 #NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 #NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 #NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 #NodeJs
You might like
PHP中的正规表达式(一)
2006/10/09 PHP
php汉字转拼音的示例
2014/02/27 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
php和html的区别点详细总结
2019/09/24 PHP
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
不使用XMLHttpRequest实现异步加载 Iframe和script
2012/10/29 Javascript
js日期时间补零的小例子
2013/03/05 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
JavaScript实现在标题栏上显示当前日期的方法
2015/03/19 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
jQuery文本框得到与失去焦点动态改变样式效果
2016/09/08 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
2017/03/02 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
Pycharm修改python路径过程图解
2020/05/22 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
python开发一款翻译工具
2020/10/10 Python
万得城电器土耳其网站:欧洲第一大电子产品零售商
2016/10/07 全球购物
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
竞选大队长演讲稿
2014/04/29 职场文书
爱心募捐感谢信
2015/01/22 职场文书
活动简报范文
2015/07/22 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android