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获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
Nodejs中自定义事件实例
Jun 20 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
NodeJS学习笔记之Module的简介
Mar 24 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
基于Nodejs的Tcp封包和解包的理解
Sep 19 NodeJs
nodejs基础之buffer缓冲区用法分析
Dec 26 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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调用Webservice思路及源码分享
2014/06/04 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
PHP的Yii框架中Model模型的学习教程
2016/03/29 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
Jquery 获取checkbox的checked问题
2011/11/16 Javascript
jQuery+CSS实现菜单滑动伸展收缩(仿淘宝)
2013/03/22 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
js导出txt示例代码
2014/01/14 Javascript
JavaScript对HTML DOM使用EventListener进行操作
2015/10/21 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
用JS实现选项卡
2020/03/23 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
Python修改MP3文件的方法
2015/06/15 Python
Python连接PostgreSQL数据库的方法
2016/11/28 Python
Python AES加密模块用法分析
2017/05/22 Python
Python实现注册登录系统
2017/08/08 Python
Python实现改变与矩形橡胶的线条的颜色代码示例
2018/01/05 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
python实现翻译word表格小程序
2020/02/27 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
2020/03/09 Python
Python requests模块session代码实例
2020/04/14 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
KIKO MILANO英国官网:意大利知名化妆品和护肤品品牌
2017/09/25 全球购物
大学生求职简历的自我评价范文
2013/10/12 职场文书
工程业务员工作职责
2013/12/07 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
学生退学证明
2015/06/23 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技