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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
Oct 09 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
解析php入库和出库
Jun 25 PHP
使用php判断服务器是否支持Gzip压缩功能
Sep 24 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
Jan 26 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
May 12 PHP
php提取身份证号码中的生日日期以及验证是否为成年人的函数
Sep 29 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
joomla数据库操作示例代码
Jan 06 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 PHP
PHP配置文件php.ini中打开错误报告的设置方法
Jan 09 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中判断字符串是否全是中文或含有中文的实现代码
2011/09/16 PHP
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
php定时计划任务的实现方法详解
2013/06/06 PHP
ThinkPHP之getField详解
2014/06/20 PHP
php通过array_shift()函数移除数组第一个元素的方法
2015/03/18 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
子窗口、父窗口和Silverlight之间的相互调用
2010/08/16 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
js数组操作常用方法
2014/05/08 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
jQuery的框架介绍
2016/05/11 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
jquery分页优化操作实例分析
2019/08/23 jQuery
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
webstorm建立vue-cli脚手架的傻瓜式教程
2020/09/22 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[42:34]VP vs VG 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:14]2019完美世界城市挑战赛(秋季赛)全国总决赛精彩花絮
2020/01/08 DOTA
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
浅谈Python 敏感词过滤的实现
2019/08/15 Python
keras模型保存为tensorflow的二进制模型方式
2020/05/25 Python
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
生日派对邀请函
2014/01/13 职场文书
培训自我鉴定
2014/01/31 职场文书
简历的自我评价范文
2014/02/04 职场文书
校运会入场式解说词
2014/02/10 职场文书
银行简历自我评价
2014/02/11 职场文书
水利专业大学生职业生涯规划书范文
2014/09/17 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
mysql优化之query_cache_limit参数说明
2021/07/01 MySQL
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android