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 相关文章推荐
Http 1.1 Etag 与 Last-Modified提高php效率
Jan 10 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
使用php get_headers 判断URL是否有效的解决办法
Apr 27 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
PHP抓取网页、解析HTML常用的方法总结
Jul 01 PHP
简单谈谈PHP中strlen 函数
Feb 27 PHP
php构造函数与析构函数
Apr 23 PHP
thinkPHP5项目中实现QQ第三方登录功能
Oct 20 PHP
laravel 解决强制跳转 https的问题
Oct 22 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 PHP
php 原生分页
Apr 01 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
str_replace只替换一次字符串的方法
2013/04/09 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
脚本吧 - 幻宇工作室用到js,超强推荐base.js
2006/12/23 Javascript
ext监听事件方法[初级篇]
2008/04/27 Javascript
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
javascript cookie的基本操作(添加和删除)
2017/07/24 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
python http接口自动化脚本详解
2018/01/02 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
python调用百度语音识别api
2018/08/30 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
解析HTML5的存储功能和web SQL的相关操作方法
2016/02/19 HTML / CSS
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
编程输出如下图形
2013/11/24 面试题
母亲节演讲稿
2014/05/27 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
党员转正意见怎么写
2015/06/03 职场文书
2015年度环卫处工作总结
2015/07/24 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
经典格言警句:没有热忱,世间便无进步
2019/11/13 职场文书
话题作文之关于呼唤
2019/11/29 职场文书
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
Golang 实现WebSockets
2022/04/24 Golang
超越Nginx的Web服务器caddy优雅用法
2022/06/21 Servers