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 npm package.json中文文档
Sep 04 NodeJs
Nodejs中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
nodejs导出excel的方法
Jun 30 NodeJs
NodeJs的优势和适合开发的程序
Aug 14 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
Nodejs实现短信验证码功能
Feb 09 NodeJs
NodeJs的fs读写删除移动监听
Apr 28 NodeJs
nodejs项目windows下开机自启动的方法
Nov 22 NodeJs
Nodejs中的require函数的具体使用方法
Apr 02 NodeJs
使用nodejs分离html文件里的js和css详解
Apr 12 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
nodejs中实现修改用户路由功能
May 24 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
PHPlet在Windows下的安装
2006/10/09 PHP
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
使用php清除bom示例
2014/03/03 PHP
PHP实现货币换算的方法
2014/11/29 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
深入解析JavaScript中的变量作用域
2013/12/06 Javascript
js实现倒计时时钟的示例代码
2013/12/17 Javascript
js实现的map方法示例代码
2014/01/13 Javascript
js获取html的span标签的值方法(超简单)
2016/07/26 Javascript
初识简单却不失优雅的Vue.js
2016/09/12 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
快速了解vue-cli 3.0 新特性
2018/02/28 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
js实现点击按钮复制文本功能
2020/07/20 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
python使用电子邮件模块smtplib的方法
2016/08/28 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
python 把列表转化为字符串的方法
2018/10/23 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
python生成并处理uuid的实现方式
2020/03/03 Python
骆驼官方商城:CAMEL
2016/11/22 全球购物
南京软件公司的.net程序员笔试题
2014/08/31 面试题
升旗仪式演讲稿
2014/05/08 职场文书
产品包装策划方案
2014/05/18 职场文书
合唱兴趣小组活动总结
2014/07/10 职场文书
写给医生的感谢信
2015/01/22 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android