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中require路径问题
May 07 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 NodeJs
nodejs+websocket实时聊天系统改进版
May 18 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
使用nodeJs来安装less及编译less文件为css文件的方法
Nov 20 NodeJs
windows系统下更新nodejs版本的方案
Nov 24 NodeJs
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
May 15 NodeJs
nodejs异步编程基础之回调函数用法分析
Dec 26 NodeJs
nodejs制作小爬虫功能示例
Feb 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 $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
php中使用url传递数组的方法
2015/02/11 PHP
jquery之Document元素选择器篇
2008/08/14 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
简洁Ajax函数处理(示例代码)
2013/11/15 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
举例详解Python中smtplib模块处理电子邮件的使用
2015/06/24 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
AngularJS变量及过滤器Filter用法分析
2016/11/22 Javascript
简单实现JavaScript图片切换效果
2016/11/28 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
jQuery控制input只能输入数字和两位小数的方法
2019/05/16 jQuery
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
python 通过logging写入日志到文件和控制台的实例
2018/04/28 Python
python实现梯度法 python最速下降法
2020/03/24 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
详解Pycharm与anaconda安装配置指南
2020/08/25 Python
基于CSS3特效之动画:animation的应用
2013/05/09 HTML / CSS
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
澳大利亚墨水站Ink Station:墨水和碳粉打印机墨盒
2019/03/24 全球购物
网上常见的一份Linux面试题(多项选择部分)
2015/02/07 面试题
办公室副主任岗位职责
2013/11/25 职场文书
会计自荐信范文
2014/03/09 职场文书
商铺租赁意向书
2014/04/01 职场文书
高中学生自我评价范文
2014/09/23 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
2014年保管员工作总结
2014/11/18 职场文书
质检员工作总结2015
2015/04/25 职场文书
十大最强水系宝可梦,最美宝可梦排第三,榜首大家最熟悉
2022/03/18 日漫
阿里云ECS云服务器快照的概念以及如何使用
2022/04/21 Servers