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版(5)
Oct 09 PHP
PHP 遍历XP文件夹下所有文件
Nov 27 PHP
PHP设计模式之结构模式的深入解析
Jun 13 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
PHP定时更新程序设计思路分享
Jun 10 PHP
完美的2个php检测字符串是否是utf-8编码函数分享
Jul 28 PHP
PHP date()函数警告: It is not safe to rely on the system解决方法
Aug 20 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
php文件扩展名判断及获取文件扩展名的N种方法
Sep 12 PHP
php简单日历函数
Oct 28 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
PHP基于mcript扩展实现对称加密功能示例
Feb 21 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/02/08 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
PHP基本语法总结
2014/09/06 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
js中关于new Object时传参的一些细节分析
2011/03/13 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
全面兼容的javascript时间格式化函数(比较实用)
2014/05/14 Javascript
函数式 JavaScript(一)简介
2014/07/07 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/09/29 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
Puppet的一些技巧
2018/09/17 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
2019/08/20 Javascript
layui的表单验证支持ajax判断用户名是否重复的实例
2019/09/06 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
js 解析 JSON 数据简单示例
2020/04/21 Javascript
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
Python实现手写一个类似django的web框架示例
2018/07/20 Python
python利用跳板机ssh远程连接redis的方法
2019/02/19 Python
python远程邮件控制电脑升级版
2019/05/23 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
林清轩官方网站:山茶花润肤油开创者
2016/10/26 全球购物
经销商会议欢迎词
2014/01/11 职场文书
2014端午节活动策划方案
2014/01/27 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
政风行风建设责任书
2014/07/23 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
在宿舍喝酒的检讨书
2014/09/28 职场文书
2014法制宣传日活动总结范文
2014/11/01 职场文书
停发工资证明范本
2015/06/12 职场文书
Python预测分词的实现
2021/06/18 Python
Java Spring 控制反转(IOC)容器详解
2021/10/05 Java/Android