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(一)--- Node.js简介及安装开发环境
May 20 NodeJs
nodejs中使用多线程编程的方法实例
Mar 24 NodeJs
Highcharts+NodeJS搭建数据可视化平台示例
Jan 01 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
用Nodejs搭建服务器访问html、css、JS等静态资源文件
Apr 28 NodeJs
Nodejs之http的表单提交
Jul 07 NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 NodeJs
NodeJs项目中关闭ESLint的方法
Aug 09 NodeJs
nodejs 如何手动实现服务器
Aug 20 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
Nodejs环境实现socket通信过程解析
Jul 03 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
2006/11/25 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
试用php中oci8扩展
2015/06/18 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
php微信公众号开发之简答题
2018/10/20 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
jQuery DOM插入节点操作指南
2015/03/03 Javascript
Jquery中$.post和$.ajax的用法小结
2015/04/28 Javascript
如何防止JavaScript自动插入分号
2015/11/05 Javascript
vue实现列表的添加点击
2016/12/29 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
浅谈Vue.js
2017/03/02 Javascript
vue实现选项卡及选项卡切换效果
2018/04/24 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
python按照多个字符对字符串进行分割的方法
2015/03/17 Python
Python实现的飞速中文网小说下载脚本
2015/04/23 Python
Python画图学习入门教程
2016/07/01 Python
python中常用的九种预处理方法分享
2016/09/11 Python
Python基于回溯法子集树模板解决m着色问题示例
2017/09/07 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
python实现播放音频和录音功能示例代码
2018/12/30 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
python在不同条件下的输入与输出
2020/02/13 Python
使用keras根据层名称来初始化网络
2020/05/21 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
服装厂厂长职责
2013/12/16 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
社区两委对照检查材料
2014/08/23 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
mysql 直接拷贝data 目录下文件还原数据的实现
2021/07/25 MySQL
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers