微信用户量很多,那么我们如何开始一个属于自己的微信小程序呢,因为自己不是高微信的。最近研究了一下微信,只是先微信的一个小功能。那么下面开始微信开发的搭建。这里如何申请微信公众号自己去官网申请就行了。最后登录该公众号。下面从我公众号开始讲

开启开发者模式

  • 点击左侧菜单的基本配置

  • 然后是做微信开发我们得有一个属于自己的服务器,方便在上面编写代码。这里我用新浪云作为自己的服务器。
    新浪云服务注册地址

新浪云申请

  • 进入新浪云后选择控制台sae

  • 然后点击创建新应用 按钮 后弹出选择服务器的界面,我们选择标准版的,因为是免费的。

  • 至于里面的二级域名这就是看个人喜好设置的了。设置好之后我们回到父页面,就是点击创建新应用的那个界面就会看到我们创建的应用了,我这里是我实现创立好的。

微信开发者配置

  • 通过上面我们就已经有了服务器了,下面我们来填写微信的相关配置

  • 上面的url就填写我们的新建的新浪云应用的地址,至于token随便你自己填写,只不过你得记住,因为在新浪云服务器里写代码的时候需要用到。

  • 然后点击确定你的微信公众号就成为了开发者模式了。下面我们开始在服务器上实现我们的功能

微信服务器的代码编写

  • 点击我们的应用的连接进入应用界面

  • 选择左侧菜单树种的应用后再点击代码管理,在右侧就可以看到应用的编辑代码超链接了,点击超链接

  • 这里我们可以选择我们index.php进行代码的修改,或者是实现。直接将下面的代码赋值到你的服务器里
<?php
/*新华工作室http://www.cnblogs.com/txw1958/CopyRight 2014 All Rights Reserved
*/define("TOKEN", "与微信配置中的token对应");$wechatObj = new wechatCallbackapiTest();
if (!isset($_GET['echostr'])) {$wechatObj->responseMsg();
}else{$wechatObj->valid();
}class wechatCallbackapiTest
{//验证签名public function valid(){$echoStr = $_GET["echostr"];$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){header('content-type:text');echo $echoStr;exit;}}//响应消息public function responseMsg(){$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];if (!empty($postStr)){$this->logger("R ".$postStr);$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$RX_TYPE = trim($postObj->MsgType);//消息类型分离switch ($RX_TYPE){case "event":$result = $this->receiveEvent($postObj);break;case "text":$result = $this->receiveText($postObj);break;default:$result = "unknown msg type: ".$RX_TYPE;break;}$this->logger("T ".$result);echo $result;}else {echo "";exit;}}//接收事件消息private function receiveEvent($object){$content = "";switch ($object->Event){case "subscribe":$content = "欢迎关注新华工作室 ";$content .= (!empty($object->EventKey))?("\n来自二维码场景 ".str_replace("qrscene_","",$object->EventKey)):"";break;case "unsubscribe":$content = "取消关注";break;case "SCAN":$content = "扫描场景 ".$object->EventKey;break;case "CLICK":switch ($object->EventKey){case "COMPANY":$content = array();$content[] = array("Title"=>"多图文1标题", "Description"=>"", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");break;default:$content = "点击菜单:".$object->EventKey;break;}break;case "LOCATION":$content = "上传位置:纬度 ".$object->Latitude.";经度 ".$object->Longitude;break;case "VIEW":$content = "跳转链接 ".$object->EventKey;break;case "MASSSENDJOBFINISH":$content = "消息ID:".$object->MsgID.",结果:".$object->Status.",粉丝数:".$object->TotalCount.",过滤:".$object->FilterCount.",发送成功:".$object->SentCount.",发送失败:".$object->ErrorCount;break;default:$content = "receive a new event: ".$object->Event;break;}if(is_array($content)){if (isset($content[0])){$result = $this->transmitNews($object, $content);}else if (isset($content['MusicUrl'])){$result = $this->transmitMusic($object, $content);}}else{$result = $this->transmitText($object, $content);}return $result;}//接收文本消息private function receiveText($object){$keyword = trim($object->Content);//多客服人工回复模式if (strstr($keyword, "您好") || strstr($keyword, "你好") || strstr($keyword, "在吗")){$result = $this->transmitService($object);}//自动回复模式else{if (strstr($keyword, "文本")){$content = "这是个文本消息";}else if (strstr($keyword, "单图文")){$content = array();$content[] = array("Title"=>"单图文标题",  "Description"=>"单图文内容", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");}else if (strstr($keyword, "图文") || strstr($keyword, "多图文")){$content = array();$content[] = array("Title"=>"多图文1标题", "Description"=>"", "PicUrl"=>"http://discuz.comli.com/weixin/weather/icon/cartoon.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");$content[] = array("Title"=>"多图文2标题", "Description"=>"", "PicUrl"=>"http://d.hiphotos.bdimg.com/wisegame/pic/item/f3529822720e0cf3ac9f1ada0846f21fbe09aaa3.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");$content[] = array("Title"=>"多图文3标题", "Description"=>"", "PicUrl"=>"http://g.hiphotos.bdimg.com/wisegame/pic/item/18cb0a46f21fbe090d338acc6a600c338644adfd.jpg", "Url" =>"http://m.cnblogs.com/?u=txw1958");}else if (strstr($keyword, "音乐")){$content = array();$content = array("Title"=>"最炫民族风", "Description"=>"歌手:凤凰传奇", "MusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3", "HQMusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3");}else{$content = date("Y-m-d H:i:s",time())."\n"."ID".$object->FromUserName."\n技术支持 新华工作室";}if(is_array($content)){if (isset($content[0]['PicUrl'])){$result = $this->transmitNews($object, $content);}else if (isset($content['MusicUrl'])){$result = $this->transmitMusic($object, $content);}}else{$result = $this->transmitText($object, $content);}}return $result;}//回复文本消息private function transmitText($object, $content){$xmlTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";$result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time(), $content);return $result;}//回复语音消息private function transmitVoice($object, $voiceArray){$itemTpl = "<Voice><MediaId><![CDATA[%s]]></MediaId>
</Voice>";$item_str = sprintf($itemTpl, $voiceArray['MediaId']);$xmlTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[voice]]></MsgType>
$item_str
</xml>";$result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time());return $result;}//回复图文消息private function transmitNews($object, $newsArray){if(!is_array($newsArray)){return;}$itemTpl = "    <item><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><PicUrl><![CDATA[%s]]></PicUrl><Url><![CDATA[%s]]></Url></item>
";$item_str = "";foreach ($newsArray as $item){$item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['PicUrl'], $item['Url']);}$xmlTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>%s</ArticleCount>
<Articles>
$item_str</Articles>
</xml>";$result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time(), count($newsArray));return $result;}//回复音乐消息private function transmitMusic($object, $musicArray){$itemTpl = "<Music><Title><![CDATA[%s]]></Title><Description><![CDATA[%s]]></Description><MusicUrl><![CDATA[%s]]></MusicUrl><HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
</Music>";$item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);$xmlTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
$item_str
</xml>";$result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time());return $result;}//回复多客服消息private function transmitService($object){$xmlTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[transfer_customer_service]]></MsgType>
</xml>";$result = sprintf($xmlTpl, $object->FromUserName, $object->ToUserName, time());return $result;}//日志记录private function logger($log_content){if(isset($_SERVER['HTTP_APPNAME'])){   //SAEsae_set_display_errors(false);sae_debug($log_content);sae_set_display_errors(true);}else if($_SERVER['REMOTE_ADDR'] != "127.0.0.1"){ //LOCAL$max_size = 10000;$log_filename = "log.xml";if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);}file_put_contents($log_filename, date('H:i:s')." ".$log_content."\r\n", FILE_APPEND);}}
}
?>
  • token一定要和微信配置中的相同

  • 然后让我们看看效果吧

转载于:https://www.cnblogs.com/zhangxinhua/p/8319205.html

微信开发--开发模式简单配置相关推荐

  1. ROS入门(ROS安装+编译器配置)详细教程 ROSneotic安装 VScode的ROS开发环境的简单配置

    ROS安装 + vscode简单配置 假设你已经安装好了Ubuntu 20.04,并且只有国内网络环境. 换源 Ctrl + Alt + T打开终端 备份并打开 sudo cp /etc/apt/so ...

  2. 华为p50pro进入开发人员模式

    设置 -关于手机-连续点击Harmonyos,提示进入开发人员模式, 配置-系统和更新-开发人员模式,usb调试

  3. 微信订阅号服务器配置url如何配置,微信订阅号开发模式基本配置

    今天学习君尝试了微信订阅号的简单开发  在验证开发者基本配置的时候 遇到了问题 ,不了解微信的规则 ! 查阅开发者文档 也没找到完整,详细 直观的介绍,百度以后终于成功了  在这里总结下 php 开发 ...

  4. 微信订阅号开发模式基本配置

    今天学习君尝试了微信订阅号的简单开发  在验证开发者基本配置的时候 遇到了问题 ,不了解微信的规则 ! 查阅开发者文档 也没找到完整,详细 直观的介绍,百度之后终于成功了  在这里总结下 开发微信订阅 ...

  5. 微信企业号开发:启用回调模式

    微信企业号开发怎样启用回调模式?就是简单的登陆PC版微信,点击应用中心,选择须要应用,再点击回调模式启用? 似乎不是这么简单.! 能够看到核心的仅仅有三个URL.Token,EncodingAESKe ...

  6. 微信jssdk开发 java_Java微信公众平台开发(十三)--微信JSSDK中Config配置

    前端开发工程师和关注前端开发的开发者们在2015年中肯定被腾讯的JSSDk引爆过,搞APP的.搞前端的甚至是是搞后端的都跑过来凑热闹,一时之间也把微信JSSDK捧得特别牛逼,但是在我们的技术眼里它的实 ...

  7. 微信公众号的简单开发

    这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能. 今天给大家分享一下,修真院官网 ...

  8. WeUI - 微信官方推出的免费开源 UI 组件库,上手简单,风格简约,在微信生态开发轻量项目的绝佳选择

    微信早年发布的 UI 框架,对想要创建让微信用户感到熟悉的应用来说,是一个好选择. 关于 WeUI WeUI 一款由腾讯微信团队开发的 UI 组件库,是一套同微信原生视觉体验一致的基础样式库,由微信官 ...

  9. 微信小程序开发消息推送配置教程

    微信小程序开发消息推送配置教程 微信小程序开发消息推送配置这一块网上都是PHP居多,由于用egg.js写了一套验证方法. 第一步:填写服务器配置 登录微信小程序官网后,在小程序官网的"设置- ...

最新文章

  1. tomcat乱码怎么解决_PDF转word乱码怎么办?解决方法如此简单!
  2. 解析Objective-C中多态、动态类型和动态绑定
  3. JavaScript:prototype属性使用说明
  4. 时间计算题100道_2019四校及分校自招开放日情况汇总(含时间安排、考试内容难度、到场人数等)...
  5. java 内省 反射_如何使用反射/内省来维护程序?
  6. 林业大学计算机专业排名2019,2019北京林业大学专业排名(4页)-原创力文档
  7. 8183微型计算机,佳木斯大学12年微机原理复习题..doc
  8. HDU 1151 Air Raid
  9. linux禁ping禁什么端口,Linux配置防火墙,开启80,22等常用端口禁止ping等
  10. C++基础学习笔记 day03
  11. oracle索引有哪些分类,Oracle中的索引分类
  12. java apex_Apex简介
  13. CSDN怎么加粗字体
  14. Linux挂载移动群晖硬盘,通过USB移动硬盘盒挂载群晖格式硬盘的方法
  15. js第三章简答题5(制作如图所示的Tab切换效果)
  16. 事件查看器事件ID部分说明
  17. 电子计算机技术文件检索,GB T 4967-1995_电子计算器通用技术条件_高清版_可检索.pdf-文档在线预览...
  18. 使用c++SFML制作月圆之夜总集篇
  19. 使用OperatorHub.io自动化群集上的操作
  20. POJ 2987 Firing 最大权闭合图

热门文章

  1. html静态页面跳转传值,在静态页面html中跳转传值
  2. er图用什么软件_太牛逼!一款软件几乎可以操作所有的数据库!
  3. mysql服务器 配置文件,服务器上mysql编码配置文件
  4. Web Components 入门
  5. 在 vue/cli 中使用 Module Federation
  6. mysql insert锁 innodb_mysql – 处理ON INSERT触发器时如何锁定innodb表?
  7. 我的计算机用户账户logo,UserAccountControl
  8. 计算机二级基础知识微盘,计算机二级C++基础知识(整理版).pdf
  9. mysql表空间自增_Oracle 默认表空间问题及自增变量设置
  10. python扫雷算法_python实战教程之自动扫雷(自己存下来学习之用)