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实现批量查询地理位置的经纬度接口
Aug 16 NodeJs
NodeJS整合银联网关支付(DEMO)
Nov 09 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
nodejs中使用HTTP分块响应和定时器示例代码
Mar 19 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
Nodejs实现多文件夹文件同步
Oct 17 NodeJs
使用nodejs分离html文件里的js和css详解
Apr 12 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 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
array_multisort实现PHP多维数组排序示例讲解
2011/01/04 PHP
PHP表单递交控件名称含有点号(.)会被转化为下划线(_)的处理方法
2013/01/06 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
PHP互换两个变量值的方法(不用第三变量)
2016/11/14 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
Node.js 应用跑得更快 10 个技巧
2016/04/03 Javascript
js实现div模拟模态对话框展现URL内容
2016/05/27 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
微信小程序开发实现消息推送
2020/11/18 Javascript
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
[30:55]完美世界DOTA2联赛PWL S2 Magma vs LBZS 第二场 11.18
2020/11/18 DOTA
Python中运行并行任务技巧
2015/02/26 Python
在Python的Flask框架下使用sqlalchemy库的简单教程
2015/04/09 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
python实现简单图书管理系统
2019/11/22 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
Python requests接口测试实现代码
2020/09/08 Python
Python页面加载的等待方式总结
2021/02/28 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
介绍一些UNIX常用简单命令
2014/11/11 面试题
Delphi笔试题
2016/11/14 面试题
幼师自荐信范文
2013/10/06 职场文书
日语专业毕业生自荐信
2013/11/11 职场文书
小学清明节活动方案
2014/03/08 职场文书
中秋客户感谢信
2015/01/22 职场文书
毕业晚宴祝酒词
2015/08/11 职场文书
学习计划是什么
2019/04/30 职场文书
MySQL基础(一)
2021/04/05 MySQL