获取二维码

var fs = require('fs');
var request = require('request');
 
var AccessToken = {
  grant_type: 'client_credential', //这里填这个值就可以了
  appid: 'vvvvvvvvvvvvvvvvv',  //你的小程序appid
  secret: 'vvvvvvvvvvvvvvvvv'  //你的小程序secret
}

//获取你的AccessToken的链接
var wx_gettoken_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=' + AccessToken.grant_type + '&appid=' + AccessToken.appid + '&secret=' + AccessToken.secret;
 

 
var create_time = 0,
  now = 0,
  token = '';
var createQrcode = {
  test:function(){
      console.log('test')
  },
  create: function(config) {
    var that = this;
    return new Promise(function(resolve, reject) {    
        console.log('fn:create');
        if (that.isInTwoHours()) {
          that.getQrcode(config).then((res)=>{
            resolve(res)
          });
          
        } else {
          getWxToken().then(res => {
              if (res.isSuccess) {
              that.getQrcode(config).then((res)=>{
                  resolve(res)
              });
                
              } else {
              console.log('获取token出错');
              }
          })
        }
    })
  },
  //判断是否超过两个小时,将token存储起来,减少token请求。
  isInTwoHours: function() {
    console.log('fn:isTwoHours');
    now = new Date().getTime();
    var diffHours = (now - create_time) / (60 * 1000);
    console.log('diffHours:' + diffHours);
    if (diffHours < 2) {
      return true;
    } else {
      return false;
    }
  },
  
  getQrcode:function(config){
    return new Promise(function(resolve, reject) {
                resolve(
                        request({
                            method: 'POST',
                            url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + token.access_token,
                            body: JSON.stringify({
                                path:config.path,
                                scene:config.scene
                            })
                        },function(err, res, body) {
                            //console.log(body,10000000000000)
                            //console.log(res,33333333333)
                            //console.log(token.access_token,444)
                           
                        })
                )
            }).then(data => {
                data.pipe(fs.createWriteStream('../upload/qrcode/' + config.scene + '.png'))
                return new Promise(function(resolve, reject) {
                    resolve('https://VV.VVVVV.com/images/qrcode/' + config.scene + '.png')
                })
            })
  }


//获取微信的token
var getWxToken = function() {
  console.log('fn:getWxToken');
  var that = this;
  return new Promise((resolve, reject) => {
    request({
      method: 'GET',
      url: wx_gettoken_url
    }, function(err, res, body) {
      if (res) {
        create_time = new Date().getTime();
        token = JSON.parse(body);
        console.log(token,2222222222)
        resolve({
          isSuccess: true
        });
      } else {
        console.log(err);
        resolve({
          isSuccess: false
        });
      }
    }
)
  });
}

module.exports = createQrcode;

猜你喜欢

转载自www.cnblogs.com/thing/p/9358200.html