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实现的一个静态服务器实例
Dec 06 NodeJs
浅析Nodejs npm常用命令
Jun 14 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
nodejs个人博客开发第三步 载入页面
Apr 12 NodeJs
nodejs实现一个word文档解析器思路详解
Aug 14 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
Nodejs把接收图片base64格式保存为文件存储到服务器上
Sep 26 NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 NodeJs
nodejs提示:cross-device link not permitted, rename错误的解决方法
Jun 10 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
Node.js实现爬取网站图片的示例代码
Apr 04 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
function.inc.php超越php
2006/12/09 PHP
模拟flock实现文件锁定
2007/02/14 PHP
php过滤危险html代码
2008/08/18 PHP
又一个PHP实现的冒泡排序算法分享
2014/08/21 PHP
php中socket通信机制实例详解
2015/01/03 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
jquery ajax请求实例深入解析
2012/11/26 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
使用form-create动态生成vue自定义组件和嵌套表单组件
2019/01/18 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
jQuery实现简单弹幕效果
2019/11/28 jQuery
javascript canvas检测小球碰撞
2020/04/17 Javascript
[46:14]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第一场 12.11
2020/12/16 DOTA
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
python处理json数据中的中文
2014/03/06 Python
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
pandas按若干个列的组合条件筛选数据的方法
2018/04/11 Python
对Python 文件夹遍历和文件查找的实例讲解
2018/04/26 Python
python读取并写入mat文件的方法
2019/07/12 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
python爬虫库scrapy简单使用实例详解
2020/02/10 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
利用python爬取有道词典的方法
2020/12/08 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
简单总结CSS3中视窗单位Viewport的常见用法
2016/02/04 HTML / CSS
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
2014年班组建设工作总结
2014/12/01 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
python自动化之如何利用allure生成测试报告
2021/05/02 Python
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
利用Python判断你的密码难度等级
2021/06/02 Python
php实现自动生成验证码的实例讲解
2021/11/17 PHP