写在前面的话:微信开发者文档写的比较清楚,也不容易出错,可是偏偏收货地址共享那儿写的比较绕,同时也会有很多坑,这里总结一下。

======正文开始======

微信收货地址共享开发接口基本使用场景是:

用户点击按钮----->弹出微信收货地址选择页面---->用户选择收货地址,点击确定后,用户能够获取用户收货地址信息。

1.增加页面按钮标签:

选择收货地址

2.引用相关javascript文件

3.通过jssdk的config接口注入权限验证配置

wx.config({

debug: true,

appId: configData["appId"],

timestamp: configData["timestamp"],

nonceStr: configData["nonceStr"],

signature: configData["signature"],

jsApiList: [

'checkJsApi',

'editAddress',

'chooseWXPay',

'getLatestAddress',

'openCard',

'getLocation'

]

});

其中configData通过如下方法获取:

var currentURL = location.href.split('#')[0];

var configData;

var ajaxData={

url:'getJsConfig.php',

type:'post',

data:{

currentURL:currentURL

},

datatype:'json',

async:false,

success:function(data)

{

if(data==null)

alert('null');

else

{

configData = data;

}

},

error:function()

{

alert('error');

}

}

$.ajax(ajaxData);//获取configData

这里ajax获取configData的方法为getJsConfig,具体的签名算法可参看微信开发者文档,这里不再赘述。

注意:请确保微信公众号设置里面已经绑定了JS接口安全域名,最终应该在debug为true的模式下提示success。

4.编写按钮点击事件

//获取用户收货地址接口

$('#select-address').click(function(){

var currentURL = location.href.split('#')[0];

var ajaxData={

url:'addressProcess.php',

type:'post',

data:{

currentURL:currentURL

},

datatype:'json',

async:false,

success:function(data){

WeixinJSBridge.invoke(

'editAddress',

{

appId:data['appId'],

scope:'jsapi_address',

signType:'sha1',

addrSign:data['addrSign'],

timeStamp:data['timeStamp'],

nonceStr:data['nonceStr']

},

function (res) {

// res存有地址信息

for(var key in res){

alert(key+":"+res[key]);

}

}

);

}

};

$.ajax(ajaxData);

});

通过addressProcess获取configData,以供WeixinJSBridge.invoke使用,最终res参数中含有地址信息,可以应用于页面逻辑;另外,addressProcess方法如下:

$appId = getAppID('APPID');

$nonceStr=createNoncestr(12);

$timeStamp = time();

$timeStamp="$timeStamp";//时间戳必须是字符串

// 计算addrSign:包括appid,url,timestamp,noncestr,网页accesstoken

$url = $_POST['currentURL'];

$accessToken = getAccessToken('accessToken');

$string = "accesstoken=$accessToken&appid=$appId&noncestr=$nonceStr&timestamp=$timeStamp&url=$url";

$addrSign = sha1($string);

$signPackage = array(

"appId" => getAppID('APPID'),

"nonceStr" => $nonceStr,

"timeStamp" => $timeStamp,

"addrSign" => $addrSign

);

$this->ajaxReturn($signPackage,$type='json');

几点注意的:

(1)addressProcess中$timeStamp注意是字符串,所以应该进行转换。

$timeStamp="$timeStamp";//时间戳必须是字符串

(2)进行sha1的字符串中,注意参数timestamp中s为小写

(3)官方文档提供的实例中sha1最后的结果是错误的,不要受到影响

(4)这里的accessToken是用网页授权接口获取的,获取accessToken的scope是snsapi_base(和前端网页JavaScript API传入的scope不同)。

(5)官方文档说:“因为使用了网页授权接口,url是经过微信回调后打开的,所以参与签名使用的url必须带上微信服务器返回的code和state参数。),实际测试过程中,code和state参数并不是必须的。

最后,实际开发中,建议参考下面收货地址文档,并结合这篇博客代码进行查找错误即可。

备注:微信官方的有关收货地址的文档地址:

(完)

文档信息

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

本文为原创文章,欢迎转载,后续本博客会不断更新,因此请保留该文档信息。

jssdk 获取微信收货地址_微信收货地址共享开发接口讲解相关推荐

  1. 微信链接修改图片_微信链接修改图标

    自定义链接是什么?微信链接修改图片_微信链接修改图标 自定义微信分享链接是指将一条网页链接通过微信接口生成一张卡片,并且该卡片的标题,内容和图片都可以自己编辑.如下图效果 ● 未自定义的网页链接 ● ...

  2. 微信授权Java重定向前端地址_微信网页授权+分享踩过的坑

    页面用浏览器自带返回和安卓物理返回死循环的话,直接看高潮部分 背景 折磨我两个工作日加周末一天的问题,我觉得还是有必要记录一下,为什么程序员总是加班,就是遇到这些意想不到的问题 需求 领导:我想做两个 ...

  3. 微信JS-SDK获取signature签名以及config配置(微信转发分享页面需要)

    Js代码 wx.config({ debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在p ...

  4. java 微信二次分享_微信二次分享

    这几天做一个微信公众号的需求,有个分享功能.发现分享从公众号分享到微信是正常的,可以看到缩略图.名称.描述,但是直接转发该分享或者点开该分享再次通过微信分享时,就只出现了链接地址,也没有缩略图.如下图 ...

  5. 微信小程序授权_微信小程序授权验证码什么意思

    首先,最先要进行的便是运行微信软件,然后在软件的主界面中,找到"发现"这一功能项目.1.点击"发现"界面之后,会看到一个"游戏中心"的选项, ...

  6. ios浏览器微信支付回调页面_微信支付:手机系统自带的浏览器,调用微信支付如何实现(非扫码)...

    如果您是使用浏览器的移动网页进行支付,那就是调用微信H5支付,如果是使用APP客户端进行支付,那就要调用微信APP支付. H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使 ...

  7. webstorm下载微信小程序插件_微信电脑版可以打开小程序喽 前提你得下载测试版...

    据微信开发者团队消息最新推出的小程序开发套件已经支持开发者面向电脑版微信测试微信小程序相关功能. 开发者下载新版本开发套件即可针对电脑版微信进行小程序调试,不过似乎也没有什么需要特别调试的地方. 既然 ...

  8. 微信多开(免费版)_微信多开管理工具

    一个新生的事物在懂行的人眼里,就是一片蓝海. 在这个互联网+的经济新时代,人工智能和互联网技术的飞速发展,微信.微博等各大自媒体平台开始先后崛起,微营销的概念也逐渐成为新时代营销的热词. 微营销火起来 ...

  9. mpvue微信小程序动画_微信小程序框架之mpvue(入门教程)

    本文章主要用于接触一段时间的微信小程序的开发者或者开发团队,当然,今天主要给大家分享一下,近期研究的mpvue,属于美团小程序框架,本期主要做基础的安装及配置说明,好了,我们首先还是简单了解一下mpv ...

最新文章

  1. 记一次使用 Lombok 翻车造成的事故!
  2. 第十一期:数据挖掘其实就是为了干这四种事?
  3. 结构体引用_C/C++结构体完全攻略
  4. 解决了昨天差点让人崩溃的问题.
  5. 计算机函数语法,clickhouse 函数语法
  6. 《21天学通Java(第7版)》—— 1.10 练习
  7. 6西格玛管理法和ISO9000标准(摘录)
  8. 中望cad文字显示问号怎么办_CAD钢筋符号显示为问号怎么办?
  9. CardView完全解析和使用
  10. 京东手机销售数据分析,华为和三星的距离还有多远?
  11. 火星坐标, WGS84坐标, 百度坐标
  12. 【充电站】_世俗智慧_哲学智慧_.
  13. 深析C语言的灵魂 -- 指针
  14. 淘宝/天猫如何获得店铺的所有商品?
  15. sequelize 安装
  16. BT656 bt601
  17. android studio 双屏,Android Presentation双屏异显,副屏的操作
  18. 我允许失败,但是我不允许不努力!
  19. 专利一通出案待答复和中通出案待答复
  20. 财政局计算机管理办法,财政局计算机信息系统安全管理制度

热门文章

  1. 平面设计背景素材|打造超酷的炫彩光束光效海报!
  2. UI设计中配色专辑素材|做图配色,一键搞定
  3. UI设计素材 | 多用途APP项目管理移动应用UI套件
  4. 不用到处找图标了!模库承包你所有的图标素材!
  5. 判断变量是空_Python 判断变量是否是 None 的三种写法
  6. 后端数据库的初步设计
  7. strace实现原理:ptrace系统调用
  8. 《深入浅出DPDK》读书笔记(十):硬件加速与功能卸载(VLAN、IEEE1588、IP TCP/UDP/SCTP checksum、Tunnel)
  9. Linux用户空间将虚拟地址转化为物理地址
  10. 联想万全t260磁盘阵列_联想万全T260G3服务器安装windows2008R2系统