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提取数据库内容中的图片地址并循环输出
Mar 21 PHP
使用JSON实现数据的跨域传输的php代码
Dec 20 PHP
改写ThinkPHP的U方法使其路由下分页正常
Jul 02 PHP
自编函数解决pathinfo()函数处理中文问题
Nov 03 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
php实现的简单检验登陆类
Jun 18 PHP
使用PHP生成二维码的方法汇总
Jul 22 PHP
老生常谈PHP位运算的用途
Mar 12 PHP
PHP ADODB生成下拉列表框功能示例
May 29 PHP
php封装的pdo数据库操作工具类与用法示例
May 08 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
smarty模板的使用方法实例分析
Sep 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/12/25 PHP
Symfony生成二维码的方法
2016/02/04 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
不用AJAX和IFRAME,说说真正意义上的ASP+JS无刷新技术
2008/09/25 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
AngularJS实现表单手动验证和表单自动验证
2015/12/09 Javascript
41个Web开发者必须收藏的JavaScript实用技巧
2016/07/22 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
Bootstrap中的Dropdown下拉菜单更改为悬停(hover)触发
2016/08/31 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
微信小程序使用npm支持踩坑
2018/11/07 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
javascript实现的字符串转换成数组操作示例
2019/06/13 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
python实现随机森林random forest的原理及方法
2017/12/21 Python
python实现淘宝秒杀脚本
2020/06/23 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
Jupyter Notebook的连接密码 token查询方式
2020/04/21 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
HTML5的结构和语义(1):前言
2008/10/17 HTML / CSS
屈臣氏俄罗斯在线商店:Watsons俄罗斯
2020/08/03 全球购物
策划创业计划书
2014/02/06 职场文书
大学生安全责任书
2014/07/25 职场文书
个人债务授权委托书
2014/10/17 职场文书
工作检讨书500字
2014/10/19 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
vue选项卡切换的实现案例
2022/04/11 Vue.js
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers