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的10个性能优化技巧
Jul 15 NodeJs
nodejs 整合kindEditor实现图片上传
Feb 03 NodeJs
Nodejs实现批量下载妹纸图
May 28 NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
NodeJS的Promise的用法解析
May 05 NodeJs
NodeJS和BootStrap分页效果的实现代码
Nov 07 NodeJs
nodejs 搭建简易服务器的图文教程(推荐)
Jul 18 NodeJs
nodejs body-parser 解析post数据实例
Jul 26 NodeJs
nodejs中实现修改用户路由功能
May 24 NodeJs
Nodejs异步流程框架async的方法
Jun 07 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中redis的用法深入解析
2014/02/20 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
PHP面试常用算法(推荐)
2016/07/22 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JavaScript模块随意拖动示例代码
2014/05/27 Javascript
JS回调函数的应用简单实例
2014/09/17 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
微信小程序本作用域下调用全局JS详解及实例
2017/02/22 Javascript
基于vue2.0+vuex的日期选择组件功能实现
2017/03/13 Javascript
学习React中ref的两个demo示例
2018/08/14 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
Python中的进程分支fork和exec详解
2015/04/11 Python
Python读写ini文件的方法
2015/05/28 Python
TensorFlow实现MLP多层感知机模型
2018/03/09 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
2019/06/21 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
加拿大时尚潮流大码女装购物网站:Addition Elle
2018/04/02 全球购物
网络编辑职责
2014/03/01 职场文书
小学校园广播稿
2015/08/18 职场文书
selenium.webdriver中add_argument方法常用参数表
2021/04/08 Python