nodejs调取微信收货地址的方法


Posted in NodeJs onDecember 20, 2017

本文实例为大家分享了nodejs调取微信收货地址的具体代码,供大家参考,具体内容如下

公众号调取微信收货地址条件:

1、微信调取收货地址API,公众号必须有支付权限。
2、配置对应使用收货地址功能的域名(域名配置请在公众平台网站-->开发者中心-->配置项-->网页服务-->网页授权获取用户基本信息中设置,)

router.js

var API = require('wechat-api'); 
var api = new API(config.wx_appid, config.wx_secret); 
 
var OAuth = require('wechat-oauth'); 
var client = new OAuth(config.wx_appid, config.wx_secret); 
 
/* auth */ 
app.get('/auth', function(req, res) { 
  var url = client.getAuthorizeURL('http://xxxxxxxxxx/getAddr','', 'snsapi_userinfo'); 
  res.redirect(url); 
}); 
 
 
app.get('/getAddr', function(req, res) { 
  var code = req.query.code; 
 
  client.getAccessToken(code, function (err, result) { 
    var accessToken = result.data.access_token; 
    var param = { 
      debug: false, 
      jsApiList: ['getLocation', 'onMenuShareAppMessage'], 
      url:"http://xxxxxxxxxx"+req._parsedUrl.href  //这个URL是你要拉起收货地址的实际URL 
    }; 
    api.getJsConfig(param, function(err,addrConfig){ 
      console.log('addrConfig = ',addrConfig); 
      var stra = "accesstoken="+accessToken+"&appid="+config.wx_appid+"&noncestr="+addrConfig.nonceStr+"×tamp="+addrConfig.timestamp+"&url="+param.url;//拼接string1 
      //console.log('stra = ',stra); 
      /* 
      common.sha1 
       
        // SHA1加密算法 
        exports.sha1 = function(str) { 
          var md5sum = crypto.createHash('sha1'); 
          md5sum.update(str); 
          str = md5sum.digest('hex'); 
          console.log(str) 
          return str; 
        } 
      */ 
      var strb = common.sha1(stra); 
      addrConfig.addrSign = strb; 
      addrConfig.stra = stra; 
      //console.log('strb = ',strb); 
          res.render('addr', { 
            addr: addrConfig, 
          }); 
    }); 
  }); 
});

addr.ejs

<!doctype html> 
<html> 
<head> 
<meta charset="UTF-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> 
<meta name="apple-mobile-web-app-capable" content="yes">  
<meta name="apple-mobile-web-app-status-bar-style" content="black">  
<meta content="telephone=no" name="format-detection"> 
<title>demo</title> 
 
 
</head> 
 
<body> 
<pre> 
<%= addr.stra %> 
  WeixinJSBridge.invoke('editAddress', {  
    "appId": '<%= addr.appId %>', 
    "scope": "jsapi_address", 
    "signType": "sha1", 
    "addrSign": '<%= addr.addrSign %>', 
    "timeStamp": '<%= addr.timestamp %>', 
    "nonceStr": '<%= addr.nonceStr %>', 
  }, 
  </pre> 
  <a href="javascript:;" rel="external nofollow" style="margin:40px;" onclick="editAddr()">获取微信收货地址</a> 
  <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> 
<script type="text/javascript"> 
  function editAddr() { 
    WeixinJSBridge.invoke('editAddress', { 
      "appId": '<%= addr.appId %>', 
      "scope": "jsapi_address", 
      "signType": "sha1", 
      "addrSign": '<%= addr.addrSign %>', 
      "timeStamp": '<%= addr.timestamp %>', 
      "nonceStr": '<%= addr.nonceStr %>', 
    }, function (res) { 
      if (res.err_msg == "edit_address:ok") { 
        alert(res); 
        alert(res.proviceFirstStageName); 
      } else { 
        alert("获取失败,请重试"); 
        alert(res.err_msg); 
      } 
    }); 
 
  } 
</script> 
 
</body> 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
利用NodeJS的子进程(child_process)调用系统命令的方法分享
Jun 05 NodeJs
nodejs 实现模拟form表单上传文件
Jul 14 NodeJs
Nodejs+express+html5 实现拖拽上传
Aug 08 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
nodejs批量修改文件编码格式
Jan 22 NodeJs
nodejs事件的监听与触发的理解分析
Feb 12 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
详解nodejs 配置文件处理方案
Jan 02 NodeJs
Nodejs核心模块之net和http的使用详解
Apr 02 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 NodeJs
基于nodejs实现微信支付功能
Dec 20 #NodeJs
nodeJS微信分享
Dec 20 #NodeJs
NodeJS爬虫实例之糗事百科
Dec 14 #NodeJs
nodejs实现爬取网站图片功能
Dec 14 #NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 #NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 #NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 #NodeJs
You might like
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
2013/07/15 PHP
phplot生成图片类用法详解
2015/01/06 PHP
jQuery入门第一课 jQuery选择符
2010/03/14 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
jquery取消选择select下拉框示例代码
2014/02/22 Javascript
jQuery 选择符详细介绍及整理
2016/12/02 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
2017/02/22 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
jQuery+ajax读取json数据并按照价格排序示例
2018/03/28 jQuery
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
bootstrap下拉分页样式 带跳转页码
2018/12/29 Javascript
vue filter 完美时间日期格式的代码
2019/08/14 Javascript
vue实现在线翻译功能
2019/09/27 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
浅谈python中的正则表达式(re模块)
2017/10/17 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
Python爬虫之Selenium下拉框处理的实现
2020/12/04 Python
python实现无边框进度条的实例代码
2020/12/30 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
中科方德软件测试面试题
2016/04/21 面试题
演讲比赛获奖感言
2014/02/02 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
公司经理任命书
2014/06/05 职场文书
2015年医院护理部工作总结
2015/04/23 职场文书
五年级作文之学校的四季
2019/12/05 职场文书
Python基础之tkinter图形化界面学习
2021/04/29 Python
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android
《艾尔登法环》Boss腐烂树灵很有可能是《黑暗之魂3》的一个废案
2022/04/11 其他游戏