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中的CMS的涵义
Mar 11 PHP
PHP 采集程序 常用函数
Dec 18 PHP
PHP中防止SQL注入实现代码
Feb 19 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
Yii框架登录流程分析
Dec 03 PHP
php中的观察者模式简单实例
Jan 20 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
PHP MPDF中文乱码的解决方式
Dec 08 PHP
PHP实现类似于C语言的文件读取及解析功能
Sep 01 PHP
Yii框架组件的事件机制原理与用法分析
Apr 07 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 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/07/08 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
用js实现下载远程文件并保存在本地的脚本
2008/05/06 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
深入分析javascript中的错误处理机制
2016/07/17 Javascript
node网页分段渲染详解
2016/09/05 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
微信小程序访问豆瓣电影api的实现方法
2019/03/31 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
vue中keep-alive,include的缓存问题
2019/11/26 Javascript
Python中endswith()函数的基本使用
2015/04/07 Python
python获取list下标及其值的简单方法
2016/09/12 Python
从0开始的Python学习014面向对象编程(推荐)
2019/04/02 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
2019/06/03 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
2020/03/18 Python
Python中bisect的用法及示例详解
2020/07/20 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
详解如何使用Pytest进行自动化测试
2021/01/14 Python
加拿大消费电子和手机购物网站:The Source
2017/01/28 全球购物
关于赌博的检讨书
2014/01/08 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
住宅质量保证书
2014/04/29 职场文书
创建绿色社区汇报材料
2014/08/22 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
部门2014年度工作总结
2014/11/12 职场文书
总经理助理岗位职责
2015/01/31 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
新手入门Mysql--概念
2021/06/18 MySQL
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python