微信百货公司中使用微信支付接口获取用户地址
授人以鱼不如授人以渔
微信支付获取用户地址
使用微信获取地址信息是和微信支付一道申请的,微信支付申请通过,就可以使用该功能。
微信商城中,使用微信支付获取用户的收货地址,可以省略用户输入地址信息的繁复流程,提高用户体验。
但是可能是因为牵扯到用户隐私,所以在使用过程中,需要用户自己主动选择使用该功能,并且是通过点击的操作,我们才可以获取到用户的收货地址,这一点是要注意的。
操作流程如下:
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?appid=APPID&redirect_uri=订单结算地址&response_type=code&scope=snsapi_base&state=随意填写#wechat_redirect
2.用户访问到该地址,被重新定位到追加了code参数订单结算地址,在此页面需要由程序获取到accessToken,注意该accessToken为获取用户信息的accessToken跟另外一个和微信交互的access token不是同一个。
使用GET请求就可以获取该accessToken,可以使用curl或者是file_get_contents。请求地址为:
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=APP_SECRET&code=CODE&grant_type=authorization_code;
这里有一点需要注意,有时候微信会抽风,会连续多次请求订单结算页面,造成accessToken失效,需特殊处理。
这里的签名生成和微信支付里面的签名不一样,这里的要简单很多,只是加密一个字符串,格式为:accesstoken=ACCESSTOKEN&appid=APPID&noncestr=32位随机字符串×tamp=时间戳&url=当前页面的URL,然后对该字符串进行sha1加密。
在前端页面中需要使用一连串的参数来实现获取地址的功能,分别是appID,scope(默认为jsapi_address),signType(默认为sha1),addrSign(上面sha1加密后的字符串),timeStamp(同上文的时间戳),nonceStr(同上文的随机字符串)。
3.在前端页面,使用下面的js函数来完成获取用户地址的操作:
function get_addr(){ WeixinJSBridge.invoke('editAddress',{ "appId" : "php echo $sign['appId']?>", "scope" : "jsapi_address", "signType" : "sha1", "addrSign" : "php echo $sign['addrSign']?>", "timeStamp" : "php echo $sign['timeStamp']?>", "nonceStr" : "php echo $sign['nonceStr']?>", },function(res){ if(res.err_msg == 'edit_address:ok') {
//将地址信息存入数据库 //将地址信息显示在当前页面
document.getElementById("address_info").innerHTML="收件人:"+res.userName+" "+res.telNumber+"
收货地址:"+res.proviceFirstStageName+res.addressCitySecondStageName+res.addressCountiesThirdStageName+res.addressDetailInfo;
} else{ alert("获取地址失败,请重新点击"); } }); }
至此,使用微信获取用户共享地址的开发就完毕了。
有任何疑问,请联系QQ:97695870
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
- 最新文章
- 热门排行
推荐阅读
-
PHP的微信支付接口使用方法讲解
-
使用ngrok+express解决本地环境中微信接口调试问题
-
微信开发中使用通用函数处理,以重定向的方式实现用户身份信息的获取并转回原来页面
-
微信小程序授权 获取用户的openid和session_key【后端使用java语言编写】,我写的是get方式,目的是测试能否获取到微信服务器中的数据,后期我会写上post请求方式。
-
【微信原生支付】——服务商,小微商户专属接口:小微商户新增对应APPID关联API,使用注意
-
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
-
企业微信支付的发送红包及相关接口使用
-
在vue中获取微信支付code及code被占用问题的解决方法
-
php开发微信支付获取用户地址
-
微信小程序 使用map组件 地图获取位置、移动选点、逆地址解析
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论