修改后的php示例代码!

  1. <?php
  2. /**
  3. * wechat php test
  4. */
  5.  
  6. //define your token
  7. define("TOKEN", "wechatbyzp");
  8. $wechatObj = new wechatCallbackapiTest();
  9. $wechatObj->valid();
  10.  
  11. class wechatCallbackapiTest
  12. {
  13. public function valid()
  14. {
  15. $echoStr = $_GET["echostr"];
  16.  
  17. //valid signature , option
  18. if($this->checkSignature()){
  19. echo $echoStr;
  20. exit;
  21. }
  22. }
  23.  
  24. public function responseMsg()
  25. {
  26. //get post data, May be due to the different environments
  27. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
  28.  
  29. //extract post data
  30. if (!empty($postStr)){
  31.  
  32. $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  33. $fromUsername = $postObj->FromUserName;
  34. $toUsername = $postObj->ToUserName;
  35. $keyword = trim($postObj->Content);
  36. $time = time();
  37. $textTpl = "<xml>
  38. <ToUserName><![CDATA[%s]]></ToUserName>
  39. <FromUserName><![CDATA[%s]]></FromUserName>
  40. <CreateTime>%s</CreateTime>
  41. <MsgType><![CDATA[%s]]></MsgType>
  42. <Content><![CDATA[%s]]></Content>
  43. <FuncFlag>0</FuncFlag>
  44. </xml>";
  45. if(!empty( $keyword ))
  46. {
  47. $msgType = "text";
  48. $contentStr = "Welcome to wechat world!";
  49. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  50. echo $resultStr;
  51. }else{
  52. echo "Input something...";
  53. }
  54.  
  55. }else {
  56. echo "";
  57. exit;
  58. }
  59. }
  60.  
  61. private function checkSignature()
  62. {
  63. $signature = $_GET["signature"];
  64. $timestamp = $_GET["timestamp"];
  65. $nonce = $_GET["nonce"];
  66.  
  67. $token = TOKEN;
  68. $tmpArr = array($token, $timestamp, $nonce);
  69. sort($tmpArr, SORT_STRING);
  70. $tmpStr = implode( $tmpArr );
  71. $tmpStr = sha1( $tmpStr );
  72.  
  73. if( $tmpStr == $signature ){
  74. return true;
  75. }else{
  76. return false;
  77. }
  78. }
  79. }
  80.  
  81. ?>

---恢复内容结束---

  1. <?php
  2. /**
  3. * wechat php test
  4. */
  5.  
  6. //define your token
  7. define("TOKEN", "wechatbyzp");
  8. $wechatObj = new wechatCallbackapiTest();
  9. $wechatObj->valid();
  10.  
  11. class wechatCallbackapiTest
  12. {
  13. public function valid()
  14. {
  15. $echoStr = $_GET["echostr"];
  16.  
  17. //valid signature , option
  18. if($this->checkSignature()){
  19. echo $echoStr;
  20. exit;
  21. }
  22. }
  23.  
  24. public function responseMsg()
  25. {
  26. //get post data, May be due to the different environments
  27. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
  28.  
  29. //extract post data
  30. if (!empty($postStr)){
  31.  
  32. $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
  33. $fromUsername = $postObj->FromUserName;
  34. $toUsername = $postObj->ToUserName;
  35. $keyword = trim($postObj->Content);
  36. $time = time();
  37. $textTpl = "<xml>
  38. <ToUserName><![CDATA[%s]]></ToUserName>
  39. <FromUserName><![CDATA[%s]]></FromUserName>
  40. <CreateTime>%s</CreateTime>
  41. <MsgType><![CDATA[%s]]></MsgType>
  42. <Content><![CDATA[%s]]></Content>
  43. <FuncFlag>0</FuncFlag>
  44. </xml>";
  45. if(!empty( $keyword ))
  46. {
  47. $msgType = "text";
  48. $contentStr = "Welcome to wechat world!";
  49. $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
  50. echo $resultStr;
  51. }else{
  52. echo "Input something...";
  53. }
  54.  
  55. }else {
  56. echo "";
  57. exit;
  58. }
  59. }
  60.  
  61. private function checkSignature()
  62. {
  63. $signature = $_GET["signature"];
  64. $timestamp = $_GET["timestamp"];
  65. $nonce = $_GET["nonce"];
  66.  
  67. $token = TOKEN;
  68. $tmpArr = array($token, $timestamp, $nonce);
  69. sort($tmpArr, SORT_STRING);
  70. $tmpStr = implode( $tmpArr );
  71. $tmpStr = sha1( $tmpStr );
  72.  
  73. if( $tmpStr == $signature ){
  74. return true;
  75. }else{
  76. return false;
  77. }
  78. }
  79. }
  80.  
  81. ?>

wechat开发笔记之1.接口示例代码的更多相关文章

  1. EasyNVR网页Chrome无插件播放摄像机视频功能二次开发之云台控制接口示例代码

    随着多媒体技术和网络通信技术的迅速发展,视频监控技术在电力系统.电信行业.工业监控.工地.城市交通.水利系统.社区安防等领域得到越来越广泛的应用.摄像头直播视频监控通过网络直接连接,可达到的世界任何角 ...

  2. wechat开发笔记之1.线上环境搭建与测试

    Wechat开发笔记 线上环境搭建: 申请一个wechat公众平台. 手机个人微信可以用webwechat来测试. Website:https://web.weixin.qq.com/ 手机客户端扫一 ...

  3. EasyNVR网页H5无插件播放摄像机视频功能二次开发之直播通道接口保活示例代码

    背景需求 随着雪亮工程.明厨亮灶.手机看店.智慧幼儿园监控等行业开始将传统的安防摄像头进行互联网.微信直播,我们知道摄像头直播的春天了.将安防摄像头或NVR上的视频流转成互联网直播常用的RTMP.HT ...

  4. redis 学习笔记(2)-client端示例代码

    redis提供了几乎所有主流语言的client,java中主要使用二种:Jedis与Redisson 一.Jedis的使用 <dependency> <groupId>redi ...

  5. java对接申通下单接口示例代码

    上面是控制台示例代码 public class Sample{ private final static String URL = "http://order.sto-express.cn: ...

  6. java开发笔记——表映射实体类代码示例

    package com.special.ipmsdm; import java.io.Serializable; import javax.persistence.Column; import jav ...

  7. Android开发笔记之《特斯拉-Tesla 代码分析》

    转载请注明出处 一.反编译APK文件,查看包结构 // Android库,不多解释android.support // HttpClient 4.1 repackaged for Android // ...

  8. 【搜索引擎Jediael开发笔记】v0.1完整代码

    详细代码请见 E:\Project\[重要]归档代码\SearchEngine归档代码 或 https://code.csdn.net/jediael_lu/jediael/tree/10991c83 ...

  9. 【搜索引擎Jediael开发笔记】v0.1完整代码 2014-05-26 15:17 463人阅读 评论(0) 收藏

    详细代码请见 E:\Project\[重要]归档代码\SearchEngine归档代码 或 https://code.csdn.net/jediael_lu/jediael/tree/10991c83 ...

随机推荐

  1. 17、GATK使用简介 Part2/2

    转载:http://blog.sina.com.cn/s/blog_6721167201018jik.html Change Logs: 13/01/12: 增加了一篇文献,外加一些无聊的修改.12/ ...

  2. img src 直接显示图片字符串,微信例子

    <div class="weui-cell__hd"><img src="data:image/png;base64,iVBORw0KGgoAAAANS ...

  3. 18.phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613)

    phpmyadmin 4.8.1 远程文件包含漏洞(CVE-2018-12613) phpMyAdmin是一套开源的.基于Web的MySQL数据库管理工具.其index.php中存在一处文件包含逻辑, ...

  4. hdu1055

    #include<iostream> #include<iomanip> #include<cstdio> #include<cstring> #inc ...

  5. Linux——DNS

    正向解析和逆向解析  正向域名解析,即DNS解析,是通过域名查询IP的解析方式.  逆向域名解析,即反向DNS解析,是通过IP地址查询域名. [root@localhost ~]# cp /var ...

  6. ASP.NET MVC 小牛之旅4:ASP.NET MVC的运行生命周期

    ASP.NET MVC的运行生命周期大致分成三大过程:(1)网址路由对比. (2)运行Controller与Action. (3)运行View并回传结果. 4.1网址路由对比 当iis收到http请求 ...

  7. vue -- 使用sass并引入公共sass文件

    sass可以提高我们的开发效率,怎么在vue的项目中使用sass并且可以设置一些公共的文件呢? 使用sass 1.安装sass的依赖包 npm install --save-dev sass-load ...

  8. Ocelot(三)- 服务发现

    Ocelot(三)- 服务发现 作者:markjiang7m2 原文地址:https://www.cnblogs.com/markjiang7m2/p/10907856.html 源码地址:https ...

  9. Fiddler-抓Android和IOS包

    知识:Fiddler能捕获IOS设备发出的请求,比如IPhone, IPad, MacBook. 等等苹果的设备.  同理,也可以截获Andriod,Windows Phone的等设备发出的HTTP/ ...

  10. 数据返回正常 而header头Status=500

    访问接口数据成功返回,但header头Status Code:500,而调用接口的html用ajax访问一直返回500服务器错误,并且ajax一直走error,走不到success中,错误返回状态是连 ...