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 相关文章推荐
elgg 获取文件图标地址的方法
Mar 20 PHP
php中CI操作多个数据库的代码
Jul 05 PHP
PHP读取PDF内容配合Xpdf的使用
Nov 24 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
php+ajax实现无刷新分页的方法
Nov 04 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
PHP身份证校验码计算方法
Aug 10 PHP
PHP单例模式定义与使用实例详解
Feb 06 PHP
简单谈谈PHP中的trait
Feb 25 PHP
php base64 编码与解码实例代码
Mar 21 PHP
详解PHP实现支付宝小程序用户授权的工具类
Dec 25 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
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
JavaScript实现数字数组正序排列的方法
2015/04/06 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
值得分享和收藏的Bootstrap学习教程
2016/05/12 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
js获取文件里面的所有文件名(实例)
2017/10/17 Javascript
Vue2 配置 Axios api 接口调用文件的方法
2017/11/13 Javascript
vue实现图片加载完成前的loading组件方法
2018/02/05 Javascript
react组件从搭建脚手架到在npm发布的步骤实现
2019/01/09 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
实例分析JS中的相等性判断===、 ==和Object.is()
2019/11/17 Javascript
[58:42]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第一局
2016/02/27 DOTA
巧用Python装饰器 免去调用父类构造函数的麻烦
2012/05/18 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
python根据unicode判断语言类型实例代码
2018/01/17 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
浅析python继承与多重继承
2018/09/13 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
2020/04/22 Python
如何通过Python实现RabbitMQ延迟队列
2020/11/28 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
2021/01/08 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
酒店出纳岗位职责
2013/12/29 职场文书
团支部建设方案
2014/05/02 职场文书
公司募捐倡议书
2014/05/14 职场文书
党建工作经验交流材料
2014/05/25 职场文书
社区矫正工作方案
2014/06/04 职场文书