php微信开发之谷歌测距


Posted in PHP onJune 14, 2018

本文实例为大家分享了php微信谷歌测距的具体代码,供大家参考,具体内容如下

<?php
/**
 * wechat php test
 */

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj->valid();
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
  public function valid()
  {
    $echoStr = $_GET["echostr"];

    //valid signature , option
    if($this->checkSignature()){
      echo $echoStr;
      exit;
    }
  }

  public function responseMsg()
  {
    //get post data, May be due to the different environments
    $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

    //extract post data
    if (!empty($postStr)){

        $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
        $fromUsername = $postObj->FromUserName;
        $toUsername = $postObj->ToUserName;
        $type = $postObj->MsgType;
        $customrevent = $postObj->Event;
        $latitude = $postObj->Location_X;
        $longitude = $postObj->Location_Y;
        $keyword = trim($postObj->Content);
        $time = time();
        $textTpl = "<xml>
              <ToUserName><![CDATA[%s]]></ToUserName>
              <FromUserName><![CDATA[%s]]></FromUserName>
              <CreateTime>%s</CreateTime>
              <MsgType><![CDATA[%s]]></MsgType>
              <Content><![CDATA[%s]]></Content>
              <FuncFlag>0</FuncFlag>
              </xml>";       
        switch ($type)
      {  case "event";
        if ($customrevent=="subscribe")
          {$contentStr = '';}
        break;
        case "image";
        $contentStr = "你的图片很棒!";
        break;
        case "location";
        $disurl="http://maps.googleapis.com/maps/api/distancematrix/xml?origins={$latitude},{$longitude}&destinations=23.355164,116.681889&mode=walking&language=zh-CN&sensor=false";
      $apistr=file_get_contents($disurl);
      $apiobj=simplexml_load_string($apistr);
      $disobj=$apiobj->row->element->distance->text;
      $durobj=$apiobj->row->element->duration->text;
      $contentStr = "你离我公司约{$disobj}公里,步行约{$durobj}";

        break;
        case "link" ;
        $contentStr = "你的链接有病毒吧!";
        break;
        case "text";
        $weatherurl="http://api.map.baidu.com/telematics/v2/weather?location={$keyword}&ak=1a3cde429f38434f1811a75e1a90310c";
         $apistr=file_get_contents($weatherurl);
         $apiobj=simplexml_load_string($apistr);
         $placeobj=$apiobj->currentCity;//读取城市
         $todayobj=$apiobj->results->result[0]->date;//读取星期
         $weatherobj=$apiobj->results->result[0]->weather;//读取天气
         $windobj=$apiobj->results->result[0]->wind;//读取风力
         $temobj=$apiobj->results->result[0]->temperature;//读取温度
         $contentStr = "{$placeobj}{$todayobj}天气{$weatherobj},风力{$windobj},温度{$temobj}";
         break;          
      default;
      $contentStr ="此项功能尚未开发";  
      }
        $msgType="text";
        $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
        echo $resultStr;


    }else {
      echo "";
      exit;
    }
  }

  private function checkSignature()
  {
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];  

    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );

    if( $tmpStr == $signature ){
      return true;
    }else{
      return false;
    }
  }
}

?>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP面向接口编程 耦合设计模式 简单范例
Mar 23 PHP
PHP sprintf() 函数的应用(定义和用法)
Jun 29 PHP
整理的一些实用WordPress后台MySQL操作命令
Jan 07 PHP
PHP5中Cookie与 Session使用详解
Apr 30 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
一款简单实用的php操作mysql数据库类
Dec 08 PHP
PHP中static关键字以及与self关键字的区别
Jul 01 PHP
PHP错误Warning:mysql_query()解决方法
Oct 24 PHP
thinkPHP自动验证机制详解
Dec 05 PHP
PHP使用PHPExcel实现批量上传到数据库的方法
Jun 08 PHP
PHP实现生成模糊图片的方法示例
Dec 21 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 PHP
php微信开发之图片回复功能
Jun 14 #PHP
php微信开发之音乐回复功能
Jun 14 #PHP
php微信开发之关键词回复功能
Jun 13 #PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
Jun 13 #PHP
微信公众号开发之获取位置信息php代码
Jun 13 #PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
Jun 13 #PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
Jun 13 #PHP
You might like
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
codeigniter数据库操作函数汇总
2014/06/12 PHP
Yii获取当前url和域名的方法
2015/06/08 PHP
js下拉菜单语言选项简单实现
2013/09/23 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
JavaScript中的console.trace()函数介绍
2014/12/29 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
Node.js使用orm2进行update操作时关联字段无法修改的解决方法
2017/06/13 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
vue编译打包本地查看index文件的方法
2018/02/23 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
vue实现图片预览组件封装与使用
2019/07/13 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
python 读入多行数据的实例
2018/04/19 Python
python截取两个单词之间的内容方法
2018/12/25 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
介绍一下Linux内核的排队自旋锁
2014/08/27 面试题
员工自我鉴定范文
2013/10/06 职场文书
婚礼新郎父母答谢词
2014/01/16 职场文书
小学生期末评语大全
2014/04/21 职场文书
银行求职信
2014/05/31 职场文书
专业见习报告范文
2014/11/03 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
教育教学读书笔记
2015/07/02 职场文书
微软PC Health Check电脑健康状况检查应用下载(Win11配置检测工具)
2021/06/26 数码科技
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers
正则表达式基础与常用验证表达式
2022/06/16 Javascript