首页 > PHP资讯 > 工具库 > 微信支付开发收货地址共享接口

微信支付开发收货地址共享接口

工具库
本文介绍微信支付下的收货地址共享接口的开发过程。

一. 简介

微信收货地址共享,是指用户在微信浏览器内打开网页,填写过地址后,后续可以免填写支持快速选择,也可增加和编辑。此地址为用户属性,可在各商户的网页中共享使用。支持原生控件填写地址,地址数据会传递到商户。

地址共享是基于微信JavaScript API 实现,只能在微信内置浏览器中使用,其他浏览器调用无效。同时,需要微信5.0 版本才能支持,建议通过user agent 来确定用户当前的版本号后再调用地址接口。以iPhone 版本为例,可以通过useragent可获取如下微信版本示例信息:"Mozilla/5.0(iphone;CPU iphone OS 5_1_1 like Mac OS X)AppleWebKit/534.46(KHTML,like Geocko) Mobile/9B206MicroMessenger/5.0"其中5.0 为用户安装的微信版本号,商户可以判定版本号是否高于或者等于5.0。

地址格式
微信地址共享使用的数据字段包括:

  • 收货人姓名

  • 地区,省市区三级

  • 详细地址

  • 邮编

  • 联系电话

其中,地区对应是国标三级地区码,如“广东省-广州市-天河区”,对应的邮编是是510630。详情参考链接: CopyRight 2014 All Rights Reserved*/define('APPID', "wx—b7559b828e3c13e");define('APPSECRET', "2b21b42d0c497de9a691a6bb5048a601");class class_weixin{ var $appid = APPID; var $appsecret = APPSECRET; //构造函数,获取Access Token public function __construct($appid = NULL, $appsecret = NULL) { if($appid && $appsecret){ $this->appid = $appid; $this->appsecret = $appsecret; } } //生成OAuth2的URL public function oauth2_authorize($redirect_url, $scope, $state = NULL) { $url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$this->appid."&redirect_uri=".$redirect_url."&response_type=code&scope=".$scope."&state=".$state."#wechat_redirect"; return $url; } //生成OAuth2的Access Token public function oauth2_access_token($code) { $url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$this->appid."&secret=".$this->appsecret."&code=".$code."&grant_type=authorization_code"; $res = $this->http_request($url); return json_decode($res, true); } //生成随机字符串 function create_noncestr($length = 16) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = ""; for ($i = 0; $i < $length; $i++ ){ $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1); } return $str; } //生成签名 function get_biz_sign($bizObj) { //参数小写 foreach ($bizObj as $k => $v){ $bizParameters[strtolower($k)] = $v; } //字典序排序 ksort($bizParameters); //URL键值对拼成字符串 $buff = ""; foreach ($bizParameters as $k => $v){ $buff .= $k."=".$v."&"; } //去掉最后一个多余的& $buff2 = substr($buff, 0, strlen($buff) - 1); //sha1签名 return sha1($buff2); } //HTTP请求(支持HTTP/HTTPS,支持GET/POST) protected function http_request($url, $data = null) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); if (!empty($data)){ curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); $output = curl_exec($curl); curl_close($curl); return $output; }}

oauth2_authorize($url, "snsapi_base", "fangbei");    Header("Location: $jumpurl");}else{    $oauth2_access_token = $weixin->oauth2_access_token($_GET["code"]);    $access_token = $oauth2_access_token['access_token'];}$timestamp = strval(time());$noncestr = $weixin->create_noncestr();$obj['appId']               = $weixin->appid;$obj['url']                 = $url;$obj['timeStamp']           = $timestamp;$obj['noncestr']            = $noncestr;$obj['accesstoken']         = $access_token;$signature  = $weixin->get_biz_sign($obj);?>                    获取共享收货地址                <script language="javascript">            function callpay()            {                WeixinJSBridge.invoke('editAddress',{                    "appId" : "",                    "scope" : "jsapi_address",                    "signType" : "sha1",                    "addrSign" : "",                    "timeStamp" : "",                    "nonceStr" : "",                },function(res){                     alert(JSON.stringify(res));                      document.form1.address1.value         = res.proviceFirstStageName;                    document.form1.address2.value         = res.addressCitySecondStageName;                    document.form1.address3.value         = res.addressCountiesThirdStageName;                    document.form1.detail.value           = res.addressDetailInfo;                    document.form1.national.value         = res.nationalCode;                    document.form1.user.value            = res.userName;                    document.form1.phone.value            = res.telNumber;                    document.form1.postcode.value         = res.addressPostalCode;                    document.form1.errmsg.value         = res.err_msg;                });            }        《script》                

更多微信支付开发收货地址共享接口 相关文章请关注PHP中文网!

工具库

本文由欣才IT学院整理发布,未经许可,禁止转载。
支持24不支持0