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创建web服务器之hello world程序
Aug 20 NodeJs
NodeJS连接MongoDB数据库时报错的快速解决方法
May 13 NodeJs
详解nodejs 文本操作模块-fs模块(三)
Dec 22 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
nodejs6下使用koa2框架实例
May 18 NodeJs
深入理解nodejs中Express的中间件
May 19 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
nodeJs爬虫的技术点总结
May 13 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
图解NodeJS实现登录注册功能
Sep 16 NodeJs
如何利用nodejs自动定时发送邮件提醒(超实用)
Dec 01 NodeJs
详解nodejs内置模块
May 06 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微信支付之APP支付方法
2015/03/04 PHP
PHP简单获取网站百度搜索和搜狗搜索收录量的方法
2016/08/23 PHP
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
javascript 类型判断代码分析
2010/03/28 Javascript
基于jquery编写的横向自适应幻灯片切换特效的实例代码
2013/08/06 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
JavaScript字符串对象
2017/01/14 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
原生js封装的ajax方法示例
2018/08/02 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
2019/07/03 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
详解如何使用Python编写vim插件
2017/11/28 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
HTML5实践-图片设置成灰度图
2012/11/12 HTML / CSS
印度尼西亚手表和包包商店:Urban Icon
2019/12/12 全球购物
光声世纪笔试题目
2012/08/25 面试题
体育专业学生自我评价范文
2014/01/17 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
六查六看剖析材料
2014/02/15 职场文书
函授生自我鉴定
2014/03/25 职场文书
先进党支部事迹材料2016
2016/02/26 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
Win11控制面板快捷键是什么?Win11打开控制面板的方法汇总
2022/07/07 数码科技