使用微信获取地址信息是和微信支付一道申请的,微信支付申请通过,就可以使用该功能。
微信商城中,使用微信支付获取用户的收货地址,可以省略用户输入地址信息的繁复流程,提高用户体验。
但是可能是因为牵扯到用户隐私,所以在使用过程中,需要用户自己主动选择使用该功能,并且是通过点击的操作,我们才可以获取到用户的收货地址,这一点是要注意的。
操作流程如下:
1.用户打开购物车页面,点击结算,跳转到一个微信的oauth2的页面,地址为:https://open.weixin.qq.com/connect/oauth2/authorize
2.oauth2页面将链接redirect到结算页面,使用PHP获取到链接中的code参数,经过处理获取到accessToken值。生成签名,组装成数组参数传递到页面。
3.结算页面使用用户点击事件,结合2中生成的数组参数完成获取地址的功能。这里可以有一个将获取到的地址使用ajax记录到数据库的功能,那么客户下次购物的时候,就不用麻烦了。
详细的讲下需要注意的几点:
1.跳转到微信oauth2的这个步骤,在用户看来是没有多少差别的,但是在程序这里就有很多的事情要做。首先是oauth2页面的参数,其中appid为微信appid,redirect_uri为urlencode后的订单结算页面的地址,response_type为固定的code,scope为固定的snsapi_base,state在这个地方可随意填写,还有一个#wechat_redirect,那么该链接的最终样子为:
https://open.weixin.qq.com/connect/oauth2/authorize"https://api.weixin.qq.com/sns/oauth2/access_token">https://api.weixin.qq.com/sns/oauth2/access_token"htmlcode">
function get_addr() { WeixinJSBridge.invoke('editAddress',{ "appId" : "<", "scope" : "jsapi_address", "signType" : "sha1", "addrSign" : "<", "timeStamp" : "<", "nonceStr" : "<", },function(res){ if(res.err_msg == 'edit_address:ok') { //将地址信息存入数据库 //将地址信息显示在当前页面 document.getElementById("address_info").innerHTML="<b>收件人:"+res.userName+"</b> <b>"+res.telNumber+"</b><br /> 收货地址:"+res.proviceFirstStageName+res.addressCitySecondStageName+res.addressCountiesThirdStageName+res.addressDetailInfo; } else{ alert("获取地址失败,请重新点击"); } }); }
至此,使用微信获取用户共享地址的开发就完毕了。