php微信公众号开发,入门篇(实现了关注公众号发送欢迎信息,发关键词自回复)

大致效果如下图所示!

一、入门经历

首先我看的慕课网的视频,理论的东西还不错,可是跟着把代码敲一遍的时候就没懵逼了,除了验证服务器通过之外,

关注公众号根本不会自动回复,着急呀,再找其他的,敲完代码,再测试依然不行,折磨人呀!于是我重新来排查一遍,

说下都排查了哪些些:

第一:用的订阅号没问题(有在关注时回复信息的功能)

第二:开发用的服务器的公网开发地址(要直接指向自己的程序)要配置好

第三:服务器上的文件目录要和第二部的网址对应起来,检测也没问题

然后我就各种检查代码,结果一次次失败,关注公众号就是不会回复欢迎信息,我没放弃,不断尝试,换了其他方式,比如下载别人的

源代码,结果也是徒劳,搞得我都认为不是代码出错了,而是其他环节出错了,而事实证明只要你能成功验证服务器,那么就可以进行开发

出错的话,就是程序的问题,果不其然,我又尝试了一份源码,结果可以用,好开心呀,下面把源码粘上,谢谢大家耐心看我吐槽!

二、入门经历

下面为index.php只有这一个页面就实现了回复欢迎信息及发送关键词回复信息的功能

  1 <?php
  2 /**
  3  * wechat php test
  4  */
  5
  6 //define your token
  7 define("TOKEN", "weixin");
  8 $wechatObj = new wechatCallbackapiTest();
  9 //$wechatObj->valid();//接口验证
 10 $wechatObj->responseMsg();//调用回复消息方法
 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  /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
 32   the best way is to check the validity of xml by yourself */
 33  libxml_disable_entity_loader(true);
 34   $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
 35  $fromUsername = $postObj->FromUserName;
 36  $toUsername = $postObj->ToUserName;
 37  $keyword = trim($postObj->Content);
 38  $time = time();
 39  $msgType = $postObj->MsgType;//消息类型
 40  $event = $postObj->Event;//时间类型,subscribe(订阅)、unsubscribe(取消订阅)
 41  $textTpl = "<xml>
 42   <ToUserName><![CDATA[%s]]></ToUserName>
 43   <FromUserName><![CDATA[%s]]></FromUserName>
 44   <CreateTime>%s</CreateTime>
 45   <MsgType><![CDATA[%s]]></MsgType>
 46   <Content><![CDATA[%s]]></Content>
 47   <FuncFlag>0</FuncFlag>
 48   </xml>";
 49
 50  switch($msgType){
 51   case "event":
 52   if($event=="subscribe"){
 53   $contentStr = "Hi,欢迎关注海仙日用百货!"."\n"."回复数字‘1‘,了解店铺地址."."\n"."回复数字‘2‘,了解商品种类.";
 54   }
 55   break;
 56   case "text":
 57   switch($keyword){
 58   case "1":
 59   $contentStr = "店铺地址:"."\n"."杭州市江干艮山西路233号新东升市场地下室第一排.";
 60   break;
 61   case "2":
 62   $contentStr = "商品种类:"."\n"."杯子、碗、棉签、水桶、垃圾桶、洗碗巾(刷)、拖把、扫把、"
 63    ."衣架、粘钩、牙签、垃圾袋、保鲜袋(膜)、剪刀、水果刀、饭盒等.";
 64   break;
 65   default:
 66   $contentStr = "对不起,你的内容我会稍后回复";
 67   }
 68   break;
 69  }
 70  $msgType = "text";
 71  $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
 72  echo $resultStr;
 73  }else {
 74  echo "";
 75  exit;
 76  }
 77  }
 78
 79  private function checkSignature()
 80  {
 81  // you must define TOKEN by yourself
 82  if (!defined("TOKEN")) {
 83  throw new Exception(‘TOKEN is not defined!‘);
 84  }
 85
 86  $signature = $_GET["signature"];
 87  $timestamp = $_GET["timestamp"];
 88  $nonce = $_GET["nonce"];
 89
 90  $token = TOKEN;
 91  $tmpArr = array($token, $timestamp, $nonce);
 92  // use SORT_STRING rule
 93  sort($tmpArr, SORT_STRING);
 94  $tmpStr = implode( $tmpArr );
 95  $tmpStr = sha1( $tmpStr );
 96
 97  if( $tmpStr == $signature ){
 98  return true;
 99  }else{
100  return false;
101  }
102  }
103 }

好难呀,接下来还要开发微信卡包会员卡,希望顺利吧!

时间: 2024-10-24 22:24:22

php微信公众号开发,入门篇(实现了关注公众号发送欢迎信息,发关键词自回复)的相关文章

[1] 微信公众号开发 - 入门基本流程

1.公众号的类别和注册 1.1 公众号类别 微信公众号目前有三种,订阅号.服务号.企业号,另外还有一种后来推出的和公众号带点关系的小程序. 订阅号.服务号和企业号的功能区别如下(更多详细区别戳参考链接): 而在我们微信的日常使用中可以看到,订阅号会集中放置在"订阅号"中,不会直接出现在聊天栏,而是放在二级目录下(如虎嗅网.36氦).服务号的话,则是直接放在聊天面板的一级目录中的(如中国移动10086),主要是用以部分大公司企业提供服务,而订阅号主打是咨询和媒体.而企业号主要是用于公司内

微信公众号开发入门心得(一)

一.前言 为了快速了解微信公众号开发过程,我选择了php语言来进行微信公众号开发,选择php的原因有两点,一是网上有很多用php开放微信公众号的教程,可以减少学习成本:二是php也比较容易学习,学习门槛低. 学习php开发微信公众号,开发者需要有一点php基础.对于学过其他编程语言的童鞋,了解一些基本的php语法就可以开始了.我的 PHP基础学习笔记(一) 二.微信公众号开发的步骤 三.微信公众号开发步骤详解   + 微信公众号开发入门可以参考 微信公众平台开发入门教程 教程中用的新浪云做的服务

微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+M

微名汇-微信公众平台开发入门教程

在这篇微信公众平台开发教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯.及HTTP/XML/CSS/JS等基础. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用 启用微信公众平台开发模式 基础接口消息及事件 微信公众平台PHP SDK 微信公众平台开发模式原理 开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境.申请地址:http://sae.

[转]抢先Mark!微信公众平台开发进阶篇资源集锦

FROM : http://www.csdn.net/article/2014-08-01/2820986 由CSDN和<程序员>杂志联合主办的 2014年微信开发者大会 将于8月23日在北京举行.作为一线微信开发商云集.专注在开发实践方面的顶级技术活动,演讲话题极为丰富,涵盖了微信开发不同维度的多个层内容 (首批议程发布),包括:企业服务号开发和高级应用.企业号开发.如何与业务系统对接.各种高级接口功能.智能客服与LBS.HTML5社交应用.微信支付.微信电商开发等多方面(查看 参加微信开发

微信公众平台开发入门教程(图文)

关键字:微信公众平台开发入门 作者:C++研究室 背景知识:微信公众平台的开发需要有一定的PHP基础知识,PHP是一种HTML内嵌式的语言,广泛用于网站开发.微信服务器和开发者的服务器间有两种数据传输方式,分别是XML和JSON.其中XML主要用在接受发送普通消息和事件推送中,而用户管理.创建自定义菜单和高级群发等则需要用到JOSN格式数据. 在这篇微信公众平台开发教程中,你可以跟着教程一起在整体上感性了解微信公众平台的开发框架,可以帮助你更好的去入手. 我们将使用微信公众账号西安校园创客空间作

[050] 微信公众平台开发入门视频教程已发布

2014年4月26日晚8点,我在CSDN社区在线培训课堂讲解了微信公众平台开发入门的相关知识,受到广大网友的一致好评,在此非常感谢大家的支持!课程结束后,很多网友表示由于报名人数限制.临时有事等原因,未能参加,希望能够提供录制视频的观看地址.视频教程的主要内容包括: 1.移动APP发展趋势(Native APP.Web APP.Light APP) 2.微信公众平台基础知识(服务号/订阅号.公众账号注册的注意事项.微信认证) 3.开发模式的使用(启用开发模式.接收与响应消息.回复文本/图文/音乐

PHP实现微信公众平台开发—基础篇

PHP实现微信公众平台开发-基础篇 2 1课程介绍 2 2. 微信公众号账号介绍的申请流程详解 2 2.1微信三角色关系 2 2.2信息流的过程 2 2.4微信公众账号的认证 3 2.5订阅号的申请流程 3 3. 微信公众号的工作原理 3 3.1数据交互流程 3 3.2编辑模式和开发者模式的介绍 4 3.3编辑模式的简单演示 5 3.4接口介绍 5 4. 接入微信公众账号的API 5 1.验证配置介绍   5 2.验证参数介绍 5 3.填写验证配置 6 4.生成公网访问的脚本文件 6 5.验证代

微信公众平台开发 - 动手篇。使用weinxinFundation开始一个微信公众平台的开发

本文主要讲解如何使用 weinxinFundation 进行二次开发. 步骤如下: 1.创建新的web项目. 在eclipse里新建一个dynamicly web project,比如本文叫weixinDemo 2.引用weinxinFundation 获得weinxinFundation的方法: 参考我的另一篇文章:http://www.cnblogs.com/vir56k/p/3664181.html 有两种引用方式: 1).如果你拿到的是个jar包,请按常规方式引用,程序员都知道. 2).

PHP微信公众平台开发高级篇—微信JS-SDK

PHP微信公众平台开发高级篇—微信JS-SDK 第一步.绑定域名: 第二步.引入JS文件: 第三部.通过Config接口注入权限验证配置 第四部.通过Read接口处理成功验证 第五部.通过Error接口处理失败验证 实际案例:分享接口内容