nodejs调取微信收货地址的方法

本文实例为大家分享了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> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法

    这段时间一直比较忙,一忙起来真感觉自己就只是一台挣钱的机器了(说的好像能挣到多少钱似的,呵呵):这会儿难得有点儿空闲时间,想把前段时间开发微信公众号支付遇到问题及解决方法跟大家分享下,这些"暗坑"能不掉就不掉吧,要不然关键时刻出问题,真是让人急的焦头烂额. 双12客户的商城活动正在蓄势进行中,却有用户频频反馈说:支付不了,有问题,并截图如下: 当时问题感觉很奇怪,自己测试多次都ok啊,问题来了都赶紧解决吧,最终找到解决办法: 原因是程序中一个字符串变量被错误的设置为数字类型,解决方法很

  • JS 调用微信扫一扫功能

    1.第一步: 设置调用微信js安全域名,就可以在该域名下调用微信的js接口 2.第二步: 将下面的js附在需要调用微信扫一扫的页面上,前提是需要引入微信的js[] 3.第三步: 参考官方文档 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=876521668&lang=zh_CN 通过后台获取js权限签名jsapi_ticket[参考文档:http://mp.weixin.qq.com/

  • JS通过调用微信API实现微信支付功能的方法示例

    本文实例讲述了JS通过调用微信API实现微信支付功能的方法.分享给大家供大家参考,具体如下: 最近在做微信公众号开发,在微信支付上遇到一些问题,困惑了3天,今天终于搞定.期间要感谢一些大神的帮助,趁热下面分享一下我的经验. 在实现微信支付之前,需要到微信开发平台认证,这些认证和配置信息我就不多说了,这里主要从代码层面实现支付. function onBridgeReady(){ WeixinJSBridge.invoke( 'getBrandWCPayRequest', { "appId&quo

  • 微信分享调用jssdk实例

    网页在微信中打开,进行分享,详细过程 1.问题说明 搞了半天,终于搞定.说下基本需求,很简单,网页在微信中打开,分享. 网页是html格式,原来分享时会一直显示链接,看了下代码中没有调用jssdk,调用的是一个第三方的平台的分享接口. 2.问题解析 根据微信官方给出的demo,可以看到核心就是获取四个参数,配置wx.config. 四个参数分别是appId.timestamp.nonceStr.signature appId不用说,后面三个都是根据微信的接口得到的,有兴趣的可以看下官方,不过也可

  • javascript使用call调用微信API

    代码很简单,只是给大家一个思路的,这里就不多废话了,奉上源码: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <title>微信Js API Demo</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="dns-prefet

  • 微信JSSDK调用微信扫一扫功能的方法

    如何利用微信JSSDK调用微信扫一扫功能?具体内容如下 1. 确保有 调起微信扫一扫接口 权限,测试号可能不行: 2. 导入相关JS <script type="text/javascript" http://test.com/zepto_touch.js"></script> <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweix

  • nodejs调取微信收货地址的方法

    本文实例为大家分享了nodejs调取微信收货地址的具体代码,供大家参考,具体内容如下 公众号调取微信收货地址条件: 1.微信调取收货地址API,公众号必须有支付权限. 2.配置对应使用收货地址功能的域名(域名配置请在公众平台网站-->开发者中心-->配置项-->网页服务-->网页授权获取用户基本信息中设置,) router.js var API = require('wechat-api'); var api = new API(config.wx_appid, config.wx

  • php获取微信共享收货地址的方法

    本文实例为大家分享了php获取微信共享收货地址的具体代码,供大家参考,具体内容如下 必须是微信授权目录 我直接放到了根目录 其他目录无效 /* * 在执行此操作之前 首先判断您是否开通了 微信支付功能 审核通过后均可使用一下代码 * 1.设置微信公众平台网页授权 域名 www.abc.com * 2.设置下面的 " 微信参数 " * 3.把 当前文件 index.php 放入根目录 * 4.用微信访问http://www.abc.com/index.php 就可以了 切记一定是微信哦

  • 微信小程序收货地址API兼容低版本解决方法

    微信官方在三月底搞了不少事情.开放个人注册权限,蓝牙,与公众号打通,未来还会开发AR,图片识别,文字识别等等能力. 起初大家只是将微信小程序当做玩具看待,相信如今会有很多人把他当成一门技术去研究了.微信小程序的想象空间已经很大. 说说新增API之一的收货地址.虽然看看兼容低版本. 先上图. API很简单,就一行代码 wx.chooseAddress(OBJECT) 调起的是原生页面,体验很不错.对电商类的小程序比较有利. 不过API是从微信客户端 6.5.6 版本开始支持.这让我想起来做andr

  • 微信小程序实现收货地址左滑删除

    本文实例为大家分享了微信小程序实现收货地址左滑删除的具体代码,供大家参考,具体内容如下 效果: 思路: 一.用相对定位和绝对定位,列表放在上层,删除按钮放在下层(z-index不要为负). 二.触摸事件判断用户是否左滑,有 bindtouchstart,bindtouchmove,bindtouchend 三个触摸事件. 1.bindtouchstart 记录触摸开始的点.开始点的坐标在 e.touches[0] 中,这是相对于屏幕的,也就是以屏幕左上方为原点. 2.bindtouchmove 

  • php版微信自动获取收货地址api用法示例

    本文实例讲述了php版微信自动获取收货地址api用法.分享给大家供大家参考,具体如下: 微信公众平台现在是越来越强大了,我们可以通过各种api接口来与平台对接获取对应的数据了,下面来看一个由php实现的微信自动获取收货地址api程序,具体如下. 关于接口的说明我就不介绍了,在官方可以看到下面只看处理程序. public function get_address_api() { $APPID=C('APPID'); $SCRETID=C('SCRETID'); if (!isset($_GET['

  • 微信小程序手动添加收货地址省市区联动

    本文实例为大家分享了微信小程序手动添加收货地址省市区联动的具体代码,供大家参考,具体内容如下 先看效果图 html部分 用小程序的piceker-view 嵌入页面的滚动选择器 <picker-view indicator-style="height: 50px;" style="width:100%; height: 400rpx;" bindchange="bindChange"> <picker-view-column c

  • 微信小程序如何获取用户收货地址

    获取用户收货地址需要用户点击授权,所以有两种情况,确认授权.取消授权. 情况一,用户第一次访问用户地址授权,并且点击确定授权. 情况二,用户点击取消授权后,再次获取授权 流程: (代码逻辑整理) 1.点击事件触发函数,获取用户当前设置 2.根据用户当前设置中的用户授权结果,判断是否包含收货地址授权 3.如果包含收货地址授权并且没有取消过收货地址授权,直接调用wx.chooseAddress(),获取用户收货地址. 4.取消过收货地址授权,调用wx.openSetting(),调起客户端小程序设置

  • vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)

    本文介绍了vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动) 先去下载一个"省份.城市.区县.乡镇" 四级联动数据,然后 引入 import { Picker } from 'mint-ui'; //前提是npm install mint-ui -S Vue.component(Picker.name, Picker); 组件使用 <mt-picker :slots="addressSlots" class="picke

  • PHP智能识别收货地址信息实例

    功能需求:用户输入混合的收货地址,能智能识别出地址,手机,姓名 准备:需要两张表,一张地区表和一张姓氏表 (地区表得到应该不难,姓氏表我是搜索中国姓氏自制的哈,底部会附上表结构) 思路:主要思路分两种,一种是用户正常输入全地址,则顺序按地区等级匹配地址:另一种用户非正常输入(省市区有缺少的),则全面模糊搜索表,再根据结果对比原地址. 提醒:手机可以根据自己需求修改正则: 名字只匹配中文,可以根据自己的需求修改姓氏表以及正则 地址匹配暂无发现问题 效果图: 代码: <?php class Dist

  • 基于layer.js实现收货地址弹框选择然后返回相应的地址信息

    先给大家展示下效果图: 核心代码如下所示: ('.selectaddress').click(function () {//图一联系方式中的点击事件 top.layer.open({ id: "layer_say_hello", type: 2, title: '请点击选择联系地址', shadeClose: true, shade: 0.8, area: ['300px', '400px'], content: "{:Url('/mobile/user/address_li

随机推荐