php获取微信共享收货地址的方法


Posted in PHP onDecember 21, 2017

本文实例为大家分享了php获取微信共享收货地址的具体代码,供大家参考,具体内容如下

必须是微信授权目录 我直接放到了根目录 其他目录无效

/* 
* 在执行此操作之前 首先判断您是否开通了 微信支付功能 审核通过后均可使用一下代码 
* 1、设置微信公众平台网页授权 域名 www.abc.com 
* 2、设置下面的 “ 微信参数 ” 
* 3、把 当前文件 index.php 放入根目录 
* 4、用微信访问http://www.abc.com/index.php 就可以了 切记一定是微信哦 
* */
<?php
//微信参数
$appId = '*********';
$appSecret = '*****************';

//获取get参数
$code = $_GET['code'];

//获取 code
$redirect_uri = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=$appId&redirect_uri=".urlencode($redirect_uri)."&response_type=code&scope=jsapi_address&state=cft#wechat_redirect";
if(empty($code)){
 header("location: $url");
}

//获取 access_token
$access_token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appId."&secret=".$appSecret."&code=".$code."&grant_type=authorization_code";
$access_token_json = getUrl($access_token_url);
$access_token = json_decode($access_token_json,true);


// 定义参数
$timestamp = time();
$nonceStr = rand(100000,999999);
$Parameters = array();
//===============下面数组 生成SING 使用=====================
$Parameters['appid'] = $appId;
$Parameters['url'] = $redirect_uri;
$Parameters['timestamp'] = "$timestamp";
$Parameters['noncestr'] = "$nonceStr";
$Parameters['accesstoken'] = $access_token['access_token'];
// 生成 SING
$addrSign = genSha1Sign($Parameters);


function getUrl($url){
 $opts = array(
  CURLOPT_TIMEOUT  => 30,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_SSL_VERIFYPEER => false,
  CURLOPT_SSL_VERIFYHOST => false,
 );
 /* 根据请求类型设置特定参数 */
 $opts[CURLOPT_URL] = $url ;
 $ch = curl_init();
 curl_setopt_array($ch, $opts);
 $data = curl_exec($ch);
 $error = curl_error($ch);
 curl_close($ch);
 return $data;
}
function p($star){
 echo '<pre>';
 print_r($star);
 echo '</pre>';
}
function logtext($content){
 $fp=fopen("json.ini","a");
 fwrite($fp,"\r\n".$content);
 fclose($fp);
}
//创建签名SHA1
function genSha1Sign($Parameters){
 $signPars = '';
 ksort($Parameters);
 foreach($Parameters as $k => $v) {
  if("" != $v && "sign" != $k) {
   if($signPars == '')
    $signPars .= $k . "=" . $v;
   else
    $signPars .= "&". $k . "=" . $v;
  }
 }
 //$signPars = http_build_query($Parameters);
 $sign = SHA1($signPars);
 $Parameters['sign'] = $sign;
 return $sign;
}
?>
<!DOCTYPE html>
<html>
<head>
 <title>获取共享地址</title>
 <meta charset="utf-8" />
 <meta id="viewport" name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1; user-scalable=no;" />
</head>
<script language="javascript">
 function getaddr(){
  WeixinJSBridge.invoke('editAddress',{
   "appId" : "<?php echo $appId;?>", //公众号名称,由商户传入
   "timeStamp" : "<?php echo $timestamp;?>", //时间戳 这里随意使用了一个值
   "nonceStr" : "<?php echo $nonceStr;?>", //随机串
   "signType" : "SHA1", //微信签名方式:sha1
   "addrSign" : "<?php echo $addrSign;?>", //微信签名
   "scope" : "jsapi_address"
  },function(res){
   if(res.err_msg == 'edit_address:ok'){
    document.getElementById("showAddress").innerHTML="收件人:"+res.userName+" 联系电话:"+res.telNumber+" 收货地址:"+res.proviceFirstStageName+res.addressCitySecondStageName+res.addressCountiesThirdStageName+res.addressDetailInfo+" 邮编:"+res.addressPostalCode;
   }
   else{
    alert("获取地址失败,请重新点击");
   }
  });
 }
</script>
<body>
<style>
 section.content{padding:10px 12px;}
 section .showaddr{border:1px dashed #C9C9C9;padding:10px 10px 15px;margin-bottom:20px;color:#666666;font-size:12px;text-align:center;}
 section .showaddr strong{font-weight:normal;color:#9900FF;font-size:26px;font-family:Helvetica;}
</style>

<section class="content">
 <div class="showaddr" id="showAddress" ><a id="editAddress" href="javascript:getaddr();" rel="external nofollow" ><strong>点击设置收货地址</strong></a></div>
</section>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 时间转换Unix时间戳代码
Jan 22 PHP
php mysql_real_escape_string函数用法与实例教程
Sep 30 PHP
个人写的PHP验证码生成类分享
Aug 21 PHP
PHP查找与搜索数组元素方法总结
Jun 12 PHP
ThinkPHP框架表单验证操作方法
Jul 19 PHP
PHP编译configure时常见错误的总结
Aug 17 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
Laravel框架使用Redis的方法详解
May 30 PHP
对php 判断http还是https,以及获得当前url的方法详解
Jan 15 PHP
php设计模式之观察者模式实例详解【星际争霸游戏案例】
Mar 30 PHP
PHP 实现缩略图
Mar 09 PHP
详解PHP用mb_string处理windows中文字符
May 26 PHP
php实现socket推送技术的示例
Dec 20 #PHP
PHP实现模拟http请求的方法分析
Dec 20 #PHP
php封装db类连接sqlite3数据库的方法实例
Dec 19 #PHP
PHP性能分析工具xhprof的安装使用与注意事项
Dec 19 #PHP
PHP实现的最大正向匹配算法示例
Dec 19 #PHP
PHP实现的字符串匹配算法示例【sunday算法】
Dec 19 #PHP
PHP实现的折半查找算法示例
Dec 19 #PHP
You might like
php面向对象全攻略 (七) 继承性
2009/09/30 PHP
php curl_init函数用法
2014/01/31 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
php实现的SSO单点登录系统接入功能示例分析
2016/10/12 PHP
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
JQuery 1.6发布 性能提升,同时包含大量破坏性变更
2011/05/10 Javascript
基于jquery的DIV随滚动条滚动而滚动的代码
2012/07/20 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
jquery根据属性和index来查找属性值并操作
2014/07/25 Javascript
jQuery中addClass()方法用法实例
2015/01/05 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
详谈LABJS按需动态加载js文件
2015/05/07 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
原生javascript实现连连看游戏
2019/01/03 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
在Python的列表中利用remove()方法删除元素的教程
2015/05/21 Python
python3爬取数据至mysql的方法
2018/06/26 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
python和JavaScript哪个容易上手
2020/06/23 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
打架检讨书800字
2014/01/10 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
英文演讲稿开场白
2014/08/25 职场文书
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle