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极简入门教程(三):进程
Oct 27 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
NodeJS创建最简单的HTTP服务器
May 15 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
Nodejs之TCP服务端与客户端聊天程序详解
Jul 07 NodeJs
nodejs动态创建二维码的方法
Aug 12 NodeJs
使用npm安装最新版本nodejs
Jan 18 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 05 NodeJs
如何利用nodejs实现命令行游戏
Nov 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
php 广告调用类代码(支持Flash调用)
2011/08/11 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
Joomla使用Apache重写模式的方法
2016/05/04 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
PHP命名空间namespace及use的简单用法分析
2018/08/03 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
2013/03/26 Javascript
Struts2的s:radio标签使用及用jquery添加change事件
2013/04/08 Javascript
javascript中RegExp保留小数点后几位数的方法分享
2013/08/13 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
深入浅出es6模板字符串
2017/08/26 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
Vue服务端渲染实践之Web应用首屏耗时最优化方案
2019/03/22 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
Probikekit欧盟:在线公路自行车专家
2019/07/12 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
幼儿园托班开学寄语
2014/01/18 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
党员公开承诺书和承诺事项
2014/03/25 职场文书
财务部副经理岗位职责范本
2014/06/17 职场文书
2014年国庆标语
2014/06/30 职场文书
2015学习委员工作总结范文
2015/04/03 职场文书
Python使用DFA算法过滤内容敏感词
2022/04/22 Python