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的cURL快速入门教程 (小偷采集程序)
Jun 02 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
Mar 17 PHP
php实现猴子选大王问题算法实例
Apr 20 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
php文档工具PHP Documentor安装与使用方法
Jan 25 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
Apr 07 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 PHP
php png失真的原因及解决办法
Oct 24 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实现简单洗牌算法
2013/06/18 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
js获取日期:昨天今天和明天、后天
2014/06/11 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
2016/06/15 Javascript
JavaScript实现简单的拖动效果
2016/07/02 Javascript
避免jQuery名字冲突 noConflict()方法
2016/07/30 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
jQuery使用zTree插件实现可拖拽的树示例
2017/09/23 jQuery
聊聊Vue 中 title 的动态修改问题
2019/06/11 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
js实现文字头像的生成代码
2020/03/07 Javascript
js实现碰撞检测
2021/01/29 Javascript
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
[48:20]OpTic vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
浅谈Python浅拷贝、深拷贝及引用机制
2016/12/15 Python
python写入已存在的excel数据实例
2018/05/03 Python
Python wxpython模块响应鼠标拖动事件操作示例
2018/08/23 Python
python对日志进行处理的实例代码
2018/10/06 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
基于wxPython的GUI实现输入对话框(2)
2019/02/27 Python
python中的数据结构比较
2019/05/13 Python
解决pycharm中导入自己写的.py函数出错问题
2020/02/12 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
给排水专业应届生求职信
2013/10/12 职场文书
单位未婚证明范本
2014/01/18 职场文书
学校消防安全制度
2014/01/30 职场文书
签约仪式策划方案
2014/06/02 职场文书
年终晚会活动方案
2014/08/21 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
吴仁宝观后感
2015/06/09 职场文书
深入理解python协程
2021/06/15 Python