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实现用户在线时间统计详解
Oct 08 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
解析php中static,const与define的使用区别
Jun 18 PHP
php中如何防止表单的重复提交
Aug 02 PHP
PHP中Enum(枚举)用法实例详解
Dec 07 PHP
PHP利用imagick生成组合缩略图
Feb 19 PHP
thinkphp自带验证码全面解析
Sep 18 PHP
php实现批量上传数据到数据库(.csv格式)的案例
Jun 18 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
redis+php实现微博(三)微博列表功能详解
Sep 23 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
Oct 11 PHP
php操作redis命令及代码实例大全
Nov 19 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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
Laravel 集成 Geetest验证码的方法
2018/05/14 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
动态加载图片路径 保持JavaScript控件的相对独立性
2010/09/06 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
解决jQuery uploadify在非IE核心浏览器下无法上传
2015/08/05 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
深入学习jQuery中的data()
2016/12/22 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
nodejs中使用HTTP分块响应和定时器示例代码
2017/03/19 NodeJs
使用jQuery和ajax代替iframe的方法(详解)
2017/04/12 jQuery
react-native ListView下拉刷新上拉加载实现代码
2017/08/03 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
原生js实现移动端触摸轮播的示例代码
2017/12/22 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
mpvue实现左侧导航与右侧内容的联动
2019/10/21 Javascript
[01:31:22]Ti4 循环赛第四日附加赛LGD vs Mouz
2014/07/13 DOTA
Python配置mysql的教程(推荐)
2017/10/13 Python
SVM基本概念及Python实现代码
2017/12/27 Python
python中pip的使用和修改下载源的方法
2019/07/08 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
Python如何读写CSV文件
2020/08/13 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
python regex库实例用法总结
2021/01/03 Python
国际象棋商店:The Chess Store
2018/07/09 全球购物
市场拓展计划书
2014/05/03 职场文书
汽车维修专业自荐书
2014/05/26 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang