微信收货地址共享开发接口讲解

微信支付开发----新版_收货地址共享接口V2 百度的教程有不少介绍的是旧版的接口,微信官方在16年4月,更新了收货地址共享的接口,需要配置的参数都已经改变,旧版的接口已经不能使用了,大家一定要找新版接口的教程研究,以免浪费时间。 之前自己研究过微信小店的获取商品接口、支付接口,就差收货地址接口没有研究啦,这几天正好有机会研究了一下,现在整理一下,分享给大家,一起研究。 首先,我把收货地址共享的流程,整理一下。 ... 阅读详情


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

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

1.增加页面按钮标签:

1
<div id= "select-address" >选择收货地址</div>

2.引用相关javascript文件

1
2
<script type= "text/javascript"  src= "js/jquery.min.js" ></script>
<script type= "text/javascript"  src= "http://res.wx.qq.com/open/js/jweixin-1.0.0.js" ></script>

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wx.config({
     debug: true,
     appId: configData[ "appId" ],
     timestamp: configData[ "timestamp" ],
     nonceStr: configData[ "nonceStr" ],
     signature: configData[ "signature" ],
     jsApiList: [
     'checkJsApi' ,
     'editAddress' ,
     'chooseWXPay' ,
     'getLatestAddress' ,
     'openCard' ,
     'getLocation'
     ]
});

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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.编写按钮点击事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//获取用户收货地址接口
$( '#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方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$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注意是字符串,所以应该进行转换。

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

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

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

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

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

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

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

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_8

http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#JSSDK.E4.BD.BF.E7.94.A8.E6.AD.A5.E9.AA.A4


(创意共享3.0许可证)


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

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

1.增加页面按钮标签:

1
<div id= "select-address" >选择收货地址</div>

2.引用相关javascript文件

1
2
<script type= "text/javascript"  src= "js/jquery.min.js" ></script>
<script type= "text/javascript"  src= "http://res.wx.qq.com/open/js/jweixin-1.0.0.js" ></script>

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wx.config({
     debug: true,
     appId: configData[ "appId" ],
     timestamp: configData[ "timestamp" ],
     nonceStr: configData[ "nonceStr" ],
     signature: configData[ "signature" ],
     jsApiList: [
     'checkJsApi' ,
     'editAddress' ,
     'chooseWXPay' ,
     'getLatestAddress' ,
     'openCard' ,
     'getLocation'
     ]
});

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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.编写按钮点击事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//获取用户收货地址接口
$( '#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方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$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注意是字符串,所以应该进行转换。

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

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

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

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

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

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

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

https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_8

http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#JSSDK.E4.BD.BF.E7.94.A8.E6.AD.A5.E9.AA.A4


(创意共享3.0许可证)


微信公众号获取/调用微信收货地址示例接口 此接口很好对接thinkphp框架开发的站点的哦,还有对接ectouch也是可以的。本人已经实现小程序webview 调用ectouch的h5页面,然后由h5发起调用微信地址。大家有兴趣可以看看我的小程序示例,我小程序里面有我的联系方式 不懂的从小程序上联系我咨询,微信小程序那里搜索:飞机杯男用 立即下载

相关推荐

微信收货地址共享接口类,完整代码

代码经测试后做过改动,可靠性95%。能够作为接口开发参考类和正式实用类使用

微信小程序获取用户收货地址与指纹验证接口(安卓和iphone)

@toc 1、获取用户收货地址接口wx.chooseAddress()   wx.chooseAddress(Object object)获取用户收货地址,此接口调用的是微信的收货地址。微信收货地址不同于微信设置的省和市地址,它默认是不存在的。在某个小程序中,当用户第一次调用wx.chooseAddress(Object object)接口时,会被要求填写微信收货地址;当用户第二次访问wx.chooseAddress(Object object)接口时,则可以看到自己以前填写的收货地址。这里说的第二次可以是

冲出仁川,走出马德里,故事还会再继续 3238

财付通官网支付共享收货地址demo

财付通官网支付共享收货地址demo,for cft tenpay share address

微信公众号---收货地址共享接口

微信公众号的共享地址接口实现第一步:获取access token接口调用说明第二步:获取jsapi_ticket示例前端示例 第一步:获取access token access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。正常情况下access_token有效期为7200秒,重复获取将导致上次获取的access_token失效。 公众号可以使用AppID和...

a472066275的博客 2418

【微信公众号支付】收货地址共享接口文档V1.61

功能简介微信收货地址共享,是指用户在微信浏览器内打开商品H5 网页,填写过地址,后续支持快速选择免填写,也可增加和编辑。此地址为用户属性,可在商户网页中共享使用

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

微信收货地址开发分享

微信支付做了有一定时间了,现在就来做一些知识的总结,总体来说微信支付的文档不是非常的完美,其中存在一些问题。虽然坑很多,但是还是把问题解决了。微信支付的收货地址共享功能,主要是统一的管理微信用户个人的收货地址,其收货地址可以被应用于所有可以调用的开发者。用户的收货地址包含了很多个人信息,因此该接口必须要通过申请,申请的方式可以在mp平台上查看到。申请开通包含微信支付功能时,则需要配置微信的支付目录

danhuang 1万+

QtWebApp的使用【在Qt中搭建HTTP服务器】(一)

用Qt和QtWebApp能够实现在C++中开发HTTP Web服务器应用程序。 首先,需要先安装Qt的软件开发工具包。点此下载 其次,下载最新的QtWebApp库。点此下载 下载并解压缩QtWebApp ZIP文件。你将会看到: 如何使用QtWebApp 1)将QtWebApp.zip文件解压到文件夹中,并创建一个名为“ MyFirstWebApp”的新Qt控制台项目。然后,建立如下文件结构: 2)将以下行添加到MyFirstWebApp项目的项目文件中: QT += network include(

饭的笔记本 2万+

微信公众号分享与收货地址功能详解

//封装好了一套微信分享与收货地址js方法,直接将wechatload(window.location.href)方法放到需要使用微信分享功能的页面 function wechatload(page){ //引入微信js $.getScript('http://res.wx.qq.com/open/js/jweixin-1.1.0.js',function(){ //引入完成后的回调

包子源的博客 9327

process插件_利用SPSS 插件MLmed检验多水平中介的调节模型

本文介绍一个SPSS插件,用于检验多水平中介的调节,及该方法与Mplus的比较。1 Mlmed 简介及安装Mlmed 简介: Mlmed 由Rockwood 2017年开发,基于SPSS插件计算Multilevel moderated mediation. 可以提供multilevel mediation Monte Carlo 置信区间比如(模拟20000次),以及多水平调节的...

weixin_39976081的博客 5770

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

结合了很多项目和文章,总结一篇项目构建的笔记。 温馨提示:文章末尾记录了我在搭建项目过程中,遇到的一些问题和解决办法 ~

aDiaoYa_的博客 4231

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

写在前面的话:微信开发者文档写的比较清楚,也不容易出错,可是偏偏收货地址共享那儿写的比较绕,同时也会有很多坑,这里总结一下。======正文开始======微信收货地址共享开发接口基本使用场景是:用户点击按钮----->弹出微信收货地址选择页面---->用户选择收货地址,点击确定后,用户能够获取用户收货地址信息。1.增加页面按钮标签:选择收货地址2.引用相关javascript文件3....

weixin_39620653的博客 843

常用的数据结构以及常用的算法

常用的数据结构以及常用的算法 常用数据结构 数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。 数据结构往往同高效的检索算法和索引技术有关。 一、线性表 线性结构: 最常用、最简单的一种数据结构。 线性表: 典型的线性结构。基本特点是线性表中的 数据元素有序且有限。结构中: ① 存在一个唯一的被称为“第一个”的数据元素; ② 存在一个唯一的被称为“最后一个”的数据元素; ③ 除第一个元素外,每

qq_47605698的博客 1447

微信公众平台授权共享微信收货地址

效果如图: // main.js let _url = window.location.origin + to.fullPath http.ajax('http://26i83m4361.wicp.vip/api/share/friend',{ pageurl: _url },'get',{}).then(res=>{ if( res.data ){ w...

讨口子 1934

如何使用obspy下载地震波形数据

如果你是地震研究学者,或者需要进行地震方面的研究,那么地震数据下载是一个必不可少的流程,本文将告诉你如何使用obspy下载想要的地震数据

monsterk1的博客 2074

Ubuntu 22.04 实战:为WIFI6网卡Realtek RTL8852BE手动编译驱动指南

本文详细介绍了在Ubuntu 22.04系统上为Realtek RTL8852BE WIFI6网卡手动编译驱动的完整指南。从问题诊断、环境准备到源码获取、编译安装,逐步解决驱动缺失问题,并提供常见问题排查和性能优化建议,帮助用户充分发挥WIFI6网卡性能。

weixin_30808693的博客 478

微信公众号获取微信用户共享收货地址

wx.openAddress({ success: function (res) { var userName = res.userName; // 收货人姓名 var postalCode = res.postalCode; // 邮编 var provinceName = res.provinceName; // 国标收货地址第一级地址(省) var cityName = res.cityNa...

weixin_44623285的博客 4009

手把手教你学simulink(57.3)--电励磁同步电动机场景示例:基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机

目录基于Simulink的自适应控制(Adaptive Control)电励磁同步电动机项目实例1. 项目背景2. 系统架构2.1 电励磁同步电动机模型2.2 三相逆变器模型2.3 自适应控制器(Adaptive Controller)2.4 系统框图3. 模型设计3.1 创建Simulink模型3.2 自适应控制(Adaptive Control)设计3.3 仿真环境搭建4. 参数优化4.1 自动调优5. 实际应用案例5.1 工业驱动系统5.2 风力发电系统6. 结论需求分析电励磁同步电动机(Electr

MHD0815的博客 504

微信收货地址共享(openAddress)

&lt;?php header("Content-type: text/html; charset=utf-8"); require_once "jssdk.php"; $jssdk = new JSSDK("wx92eb9b4375434001b", "cc6742d0b03ad6437a54d8a4a7ba535"); $signPackage = $jssdk-&gt;GetSignPac...

曹品东 5461

57、振荡扫描仪的挠性枢轴:原理、设计与材料选择

本文深入探讨了振荡扫描仪中挠性枢轴的工作原理、设计方法与材料选择。挠性枢轴因其无润滑、高精度、低周期性误差和潜在无限寿命等优势,广泛应用于光学、太空、医学和半导体等领域。文章分析了其在小角度下的优异性能与无法连续旋转等局限性,提供了关键设计公式,并对比了多种挠性材料的性能指标。同时,结合不同应用场景提出设计优化策略,并展望了微型化、智能化和高性能材料等未来发展趋势,为工程实践提供了系统的设计流程与选型建议。

numpy6sculptor的博客 95

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

微信收货地址共享接口-终极解决

   最近要接入微信的收货地址共享接口,总是不成功,折腾了好几天,实在没办法网上搜到的帖子也是骂声一片。我把我碰到并解决问题的过程分享出来,希望能给微信的接口文档起到一个辅助作用,让后面进来的开发者能快速的接入,而不需要像我们一样苦逼的浪费好几天,甚至一周的青春。各种羞辱、谩骂的话就不说了,本人还算文明。    如果你能搜到本贴,说明你已经碰到了各种 edit_address:fail ,那么...

zhangwenyuan2008的博客 716

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jssdk 获取微信收货地址_nodejs调取微信收货地址的方法

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

weixin_39781930的博客 337

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Traefik与Nginx深度对比:云原生时代反向代理选型指南

反向代理与负载均衡是构建现代分布式系统的核心技术,负责接收客户端请求并将其高效、可靠地分发至后端服务。其工作原理通常基于预定义的路由规则,通过算法(如轮询、最少连接)分配流量,以提升应用可用性、扩展性与安全性。在云原生和微服务架构成为主流的今天,这项技术的价值尤为凸显,它能简化服务发现、实现灰度发布,并集中处理SSL/TLS终止等通用功能。面对动态伸缩的容器化环境,如何选择与运维合适的反向代理解决方案,成为保障服务稳定性的关键。本文聚焦于业界两大主流工具——以高性能和静态配置著称的Nginx,以及与Kube

weixin_33978044的博客 675

微信收货地址共享接口-收货人姓名

微信文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_8&index=7取收货人姓名出现问题,经查发现,接口返回的‘收货人姓名’字段为userName,而不是文档里的username记录一下,防止入坑。。

斗战圣Q 4568

微信接口_收货地址共享

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33733810的博客 347
上一篇: 压缩文本、字节或者文件的压缩辅助类-GZipHelper
下一篇: 将字符串转换为数字
make1828
博客等级 码龄19年 60粉丝 105原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值