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 Web应用监听sock文件实例
Feb 18 NodeJs
浅析nodejs实现Websocket的数据接收与发送
Nov 19 NodeJs
nodejs连接mongodb数据库实现增删改查
Dec 01 NodeJs
详解NodeJs支付宝移动支付签名及验签
Jan 06 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
nodejs使用redis作为缓存介质实现的封装缓存类示例
Feb 07 NodeJs
Nodejs实现多文件夹文件同步
Oct 17 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
nodejs开发一个最简单的web服务器实例讲解
Jan 02 NodeJs
nodejs制作小爬虫功能示例
Feb 24 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独立Session数据库存储操作类分享
2014/06/11 PHP
php实现简单的语法高亮函数实例分析
2015/04/27 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
JavaScript中split与join函数的进阶使用技巧
2016/05/03 Javascript
简易的JS计算器实现代码
2016/10/18 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
vue2.0获取自定义属性的值
2017/03/28 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
简单实现js上传文件功能
2017/08/21 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
Python操作列表的常用方法分享
2014/02/13 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
python动态进度条的实现代码
2019/07/03 Python
Python selenium模拟手动操作实现无人值守刷积分功能
2020/05/13 Python
Anaconda+spyder+pycharm的pytorch配置详解(GPU)
2020/10/18 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
浅析canvas元素的html尺寸和css尺寸对元素视觉的影响
2019/07/22 HTML / CSS
创先争优个人承诺书
2014/08/30 职场文书
置业顾问岗位职责
2015/02/09 职场文书
2015年技术员工作总结
2015/04/10 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL