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边学边教》(02.Apache+PHP环境配置――上篇)
Dec 13 PHP
如何突破PHP程序员的技术瓶颈分析
Jul 17 PHP
ThinkPHP模板IF标签用法详解
Jul 01 PHP
linux下实现定时执行php脚本
Feb 13 PHP
PHP的APC模块实现上传进度条
Oct 27 PHP
eclipse php wamp配置教程
Jun 30 PHP
php基于curl实现的股票信息查询类实例
Nov 11 PHP
详解EventDispatcher事件分发组件
Dec 25 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
PHP实现统计所有字符在字符串中出现次数的方法
Oct 17 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
Sep 08 PHP
PHP命名空间(namespace)原理与用法详解
Dec 11 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读写文件的方法(生成HTML)
2006/11/27 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP批量生成图片缩略图的方法
2015/06/18 PHP
PHP关键特性之命名空间实例详解
2017/05/06 PHP
PHP实现对文件锁进行加锁、解锁操作的方法
2017/07/04 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
利用PHP访问MySql数据库的逻辑操作以及增删改查的实例讲解
2017/08/30 PHP
jQuery Validation实例代码 让验证变得如此容易
2010/10/18 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
JS画5角星方法介绍
2013/09/17 Javascript
js中的push和join方法使用介绍
2013/10/08 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
使用JavaScript的AngularJS库编写hello world的方法
2015/06/23 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
vue axios数据请求及vue中使用axios的方法
2018/09/10 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
vue 中Virtual Dom被创建的方法
2019/04/15 Javascript
js尾调用优化的实现
2019/05/23 Javascript
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
Django Admin中增加导出CSV功能过程解析
2019/09/04 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
可以随进度显示不同颜色的css3进度条分享
2014/04/11 HTML / CSS
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
公司年会晚宴演讲稿
2014/01/06 职场文书
租赁协议书范本
2014/04/22 职场文书
学习党的群众路线剖析材料
2014/10/09 职场文书
Python实现数据的序列化操作详解
2022/07/07 Python
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技