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 后缀名判断限制代码
Mar 31 NodeJs
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
nodejs调用cmd命令实现复制目录
May 04 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
nodejs实现超简单生成二维码的方法
Mar 17 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 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编程中的__clone()方法使用详解
2015/11/27 PHP
PHP实现对xml的增删改查操作案例分析
2017/05/19 PHP
Jquery颜色选择器ColorPicker实现代码
2012/11/14 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
JavaScript 动态加载脚本和样式的方法
2015/04/13 Javascript
Nodejs实战心得之eventproxy模块控制并发
2015/10/27 NodeJs
jquery实现全选和全不选功能效果的实现代码【推荐】
2016/05/05 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
js 原生判断内容区域是否滚动到底部的实例代码
2017/11/15 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
vue 使用vue-i18n做全局中英文切换的方法
2018/10/29 Javascript
Angular使用Restful的增删改
2018/12/28 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
详解mpvue实现对苹果X安全区域的适配
2019/07/31 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
2015/11/20 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
python实现图像识别功能
2018/01/29 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
Python + selenium + crontab实现每日定时自动打卡功能
2020/03/31 Python
商务助理岗位职责
2013/11/13 职场文书
家长对小学生的评语
2014/01/28 职场文书
内衣营销方案
2014/03/15 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis