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 相关文章推荐
文件系统基本操作类
Nov 23 PHP
PHP开发中四种查询返回结果分析
Jan 02 PHP
Linux下实现PHP多进程的方法分享
Aug 16 PHP
解析php通过cookies获取远程网页的指定代码
Jun 25 PHP
PHP获取QQ达人QQ信息的方法
Mar 05 PHP
PHP书写格式详解(必看)
May 23 PHP
php中实现进程锁与多进程的方法
Sep 18 PHP
php mysql 封装类实例代码
Sep 18 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 09 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 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
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
php 图片加水印与上传图片加水印php类
2010/05/12 PHP
Destoon模板制作简明教程
2014/06/20 PHP
php+mysql数据库查询实例
2015/01/21 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
表单填写时用回车代替TAB的实现方法
2007/10/09 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
利用JQuery和Servlet实现跨域提交请求示例分享
2014/02/12 Javascript
javascript 判断两个日期之差的示例代码
2015/09/05 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
2015/11/18 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
2017/03/24 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
axios发送post请求,提交图片类型表单数据方法
2018/03/16 Javascript
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
Vue中&quot;This dependency was not found&quot;问题的解决方法
2018/06/19 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
python使用sorted函数对列表进行排序的方法
2015/04/04 Python
Python2.6版本中实现字典推导 PEP 274(Dict Comprehensions)
2015/04/28 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
python3-flask-3将信息写入日志的实操方法
2019/11/12 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
让IE9以下版本的浏览器兼容HTML5的方法
2014/03/12 HTML / CSS
别名指示符是什么
2012/10/08 面试题
单位消防安全责任书
2014/07/23 职场文书
晚会开场白和结束语
2015/05/29 职场文书
八月一日观后感
2015/06/10 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
Nginx URL重写rewrite机制原理及使用实例
2021/04/01 Servers
pycharm无法安装cv2模块问题
2022/05/20 Python