关键字:微信公众平台开发入门php
做者:贝创工做室html
原文: http://www.cnblogs.com/imaker/p/5491433.htmlmysql
背景知识:微信公众平台的开发须要有必定的PHP基础知识,PHP是一种HTML内嵌式的语言,普遍用于网站开发。微信服务器和开发者的服务器间有两种数据传输方式,分别是XML和JSON。其中XML主要用在接受发送普通消息和事件推送中,而用户管理、建立自定义菜单和高级群发等则须要用到JOSN格式数据。git
在这篇微信公众平台开发教程中,你能够跟着教程一块儿在总体上感性了解微信公众平台的开发框架,能够帮助你更好的去入手。web
咱们将使用微信公众帐号西安校园创客空间做为讲解的例子,二维码见底部。sql
这个入门教程将引导你学会完成以下任务:数据库
第一节json
申请新浪云计算并建立平台应用api
建立新浪云计算SAE应用引擎浏览器
申请新浪云帐号
若是咱们使用SAE新浪云计算平台做为服务器资源,而且申请PHP环境+MySQL数据库做为程序运行环境。
则申请地址为:
直接点击上述网址,能够看到右上角微博登陆的连接。
点击进入以后,使用新浪微博帐号进行登陆
登陆以后,按照提示注册我的信息便可。
建立新应用
回到首页,在菜单顶部选择 控制台 ,再选择 云应用SAE
进入SAE应用列表
点击下侧的建立新应用,这时会弹出提示, 禁止放置违法违规内容,点击继续建立,弹出以下窗口。
选择一个未使用的appid,若是总是已经被使用不知道该什么好,就填写你的QQ号或者手机号吧。
填写二级域名AppID、应用名称、验证码,开发语言选择PHP5.3,所有应用和框架下面选择第一个【PHP 空应用】。而后点击左下方的建立应用
应用建立成功。并自动跳转到应用列表中,能够看到已经有刚才建立的西安校园创客空间这个应用。
建立版本
点击刚才建立的应用名称,进入应用主页。
点击左侧的应用管理下面的代码管理,
跳转到代码管理
点击右侧的“建立版本”
我建立的是520,可是版本号默认为1,输入后点击建立,会弹出安全登陆,须要输入安全密码,若是不知道或者忘记了,就点里面的找回密码,从新设置一下就好了。
验证经过以后,以下所示
到这里,就成功建立了一个域名URL为 http://1.xaxymaker.applinzi.com/ 的应用了,记住你的这个URL,后面开发模式接入时将会用到。
上传代码
下述代码是一个微信接口文件,看不懂没有关系,你把代码拿去直接用就好了,后面你可能慢慢会明白!
1 <?php 2 //判断用户发送消息类型 贝创工做室 CopyRight 2016 3 4 5 define("TOKEN", "weixin"); 6 // $conn=mysql_connect('localhost','job','G2yI2zFR'); // 使用数据表 a_news 7 // mysql_select_db('sqljob',$conn); 8 // mysql_query("SET NAMES 'UTF8'"); 9 // mysql_query("SET CHARACTER SET UTF8"); 10 // mysql_query("SET CHARACTER_SET_RESULTS=UTF8'"); 11 12 $wechatObj = new wechatCallbackapiTest(); 13 if (!isset($_GET['echostr'])) { 14 // $wechatObj->responseMsg(); 15 $wechatObj->responseMsg(); 16 // $test->jianyan(); 17 }else{ 18 $wechatObj->valid(); 19 } 20 21 class wechatCallbackapiTest 22 { 23 public $fromUsername=''; 24 public $toUsername=''; 25 public function valid() 26 { 27 $echoStr = $_GET["echostr"]; 28 if($this->checkSignature()){ 29 echo $echoStr; 30 exit; 31 } 32 } 33 34 private function checkSignature() 35 { 36 $signature = $_GET["signature"]; 37 $timestamp = $_GET["timestamp"]; 38 $nonce = $_GET["nonce"]; 39 $token = TOKEN; 40 $tmpArr = array($token, $timestamp, $nonce); 41 sort($tmpArr, SORT_STRING); 42 $tmpStr = implode($tmpArr); 43 $tmpStr = sha1($tmpStr); 44 45 if($tmpStr == $signature){ 46 return true; 47 }else{ 48 return false; 49 } 50 } 51 52 public function responseMsg(){ 53 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 54 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 55 $fromUsername = $postObj->FromUserName; 56 $toUsername = $postObj->ToUserName; 57 $type = $postObj->MsgType; 58 $event=$postObj->Event; 59 $Event_Key=$postObj->EventKey; 60 $mid=$postObj->MediaId; 61 $link=$postObj->Url; 62 63 $latitude = $postObj->Location_X; 64 $longitude = $postObj->Location_Y; 65 $keyword = trim($postObj->Content); 66 $time = time(); 67 $textTpl = "<xml> 68 <ToUserName><![CDATA[%s]]></ToUserName> 69 <FromUserName><![CDATA[%s]]></FromUserName> 70 <CreateTime>%s</CreateTime> 71 <MsgType><![CDATA[text]]></MsgType> 72 <Content><![CDATA[%s]]></Content> 73 </xml>"; 74 if($keyword!=''){ $contentStr=$keyword;} 75 elseif($type=="image"){$contentStr="您发送的是图片消息,消息的MediaId是".$mid;} 76 elseif($type=="voice"){$contentStr="您发送的是语音消息,消息的MediaId是".$mid;} 77 elseif($type=="video"){$contentStr="您发送的是视频消息,消息的MediaId是".$mid;} 78 elseif($type=="location"){$contentStr="您发送的是地理位置消息,您的地理位置是:经度".$latitude."维度:".$longitude;} 79 elseif($type=="link"){$contentStr="您发送的是连接消息,消息连接为".$link;} 80 elseif($type=="event" && $event=="subscribe"){$contentStr="欢迎关注西安校园创客空间的微信公众帐号,带你进入奇妙有趣的微信公众号开发之旅";} 81 elseif($type="event" && $event=="unsubscribe"){$contentStr="期待您再次关注西安校园创客空间微信公众帐号。";} 82 else{echo "";} 83 84 $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $contentStr); 85 echo $resultStr; 86 87 } 88 89 } 90 91 92 ?>
咱们将使用上述代码与微信公众平台对接。
回到SAE的代码管理界面中。
再选择“上传代码包”,点击上传文件,选择刚才的index.zip文件,点击上传,上传成功后中间是一个绿色的横条,以下所示
若是没有绿色的横条,表示上传失败,须要重试。能够考虑在Chrome浏览器下重试一下。
点击编辑代码按钮,
有时候须要输入本身的安全密码,若是不记得了就点击“找回密码”。
安全验证成功后继续以前的操做。
咱们能够看到index.php已经上传成功,双击能够查看编辑里面的代码
新浪云应用的建立就成功了。
充值(本步骤可选择性进行)
新浪云SAE实行的是配额免费+超额付费的方式,相关标准请查看SAE价格体系介绍。初期对于大部分用户来讲免费配额已够用,若是您未来使用量比较大建议预先至少充值100元得到10000云豆,以避免超额后应用被禁用而影响业务。
第二节 申请虚拟主机及为微信平台搭建环境
这里我使用的是云邦互联的虚拟空间为你们做以演示,首先,打开网站以下图:
而后在右上角按照提示注册便可,选择使用1G的免费空间。
二、开通空间以后打开控制面板,就能够看到主机信息了。
三、接下来咱们用 8uftp 登录虚拟空间。
四、登陆以后,用 8uftp 将 index.php 文件上传到虚拟空间的根目录中的web文件夹下,以下:
至此,你使用虚拟空间为微信公众平台搭建服务器就成功了,后续只要将实现相应功能的代码经过8uftp上传上去便可。
第三节 启用开发模式与接入服务器
微信公众平台开发模式
高级功能
微信公众平台地址:https://mp.weixin.qq.com
登陆微信公众平台后台,在左侧列表中最下方,找到“ 基本配置 ”,点击进入
进入服务器配置填写框。
点击“修改配置”按钮,则出现下图。
此处的URL为上篇中介绍的云应用的域名,而Token在index.php中定义为weixin。EncodingAESKey则不用填,点击“随机生成”让自动生成一个,消息加解密方式选择“明文模式”,而后点击“提交”按钮。
在弹出的提示框中,点击“肯定”
配置修改后如图所示,再点击“启用”按钮
询问“是否肯定开启服务器配置”,点击“肯定”
若是提示“token验证失败”,能够先重次几回,微信服务器有时候不稳定。注:若是使用新浪SAE可能要求进行实名认证,请先上传身份证进行实名认证并经过审核后再试!
若是仍是失败,请先用微信调试器测试一下url和token是否正确。(直接在百度搜索 会有好多免费的哦)
成功启用后如上图。
这使的你是否有一股兴奋与惊喜,你已经成功的启用微信开发模式。
第四节 接口的调用与经常使用功能的实现
示例1:API调用之百度翻译
申请百度翻译API接口
下面介绍如何使用百度翻译 API 制做拥有翻译功能的公众帐号。
一、首先,登录申请成为百度开发者,申请连接地址为 http://developer.baidu.com/ 。申请成为开发者以后,登录该网站,在管理控制台的下拉菜单中选择开发者服务管理,以下图所示。
咱们经过调用百度翻译的API能够实现英文翻译中文,中文翻译英文,中文翻译日文,日文翻译中文。目前百度AIP支持这三种语言的翻译
首先进入百度翻译的网页,网站以下箭头所示
进入后点击“使用指南”
进入使用智能页面后,网下浏览页面,在页面中间部分,便可看到百度翻译的API接口
根据上面的接口,咱们能够构建接口代码:
http://openapi.baidu.com/public/2.0/bmt/translate?client_id=uA6zT1kh5O1UXvTrUuFjFHiK&q={$keyword}&from=auto&to=auto
“9peNkh97N6B9GGj9zBke9tGQ”这一串为本身的百度密钥,在百度的应用中心单击基本信息能够看到
关键代码为:
case "text";
$tranurl="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=uA6zT1kh5O1UXvTrUuFjFHiK&q={$keyword}&from=auto&to=auto";//百度翻译地址
$transtr=file_get_contents($tranurl);//读入文件
$transon=json_decode($transtr);//json解析
//print_r($transon);
$contentStr = $transon->trans_result[0]->dst;//读取翻译内容
break;
登陆手机微信,最后实现的结果以下:
1 <?php 2 // 百度翻译 贝创工做室 CopyRight 2016 3 define("TOKEN", "weixin"); 4 $wechatObj = new wechatCallbackapiTest(); 5 if (!isset($_GET['echostr'])) { 6 $wechatObj->responseMsg(); 7 }else{ 8 $wechatObj->valid(); 9 } 10 11 class wechatCallbackapiTest 12 { 13 public $fromUsername=''; 14 public $toUsername=''; 15 public function valid() 16 { 17 $echoStr = $_GET["echostr"]; 18 if($this->checkSignature()){ 19 echo $echoStr; 20 exit; 21 } 22 } 23 24 private function checkSignature() 25 { 26 $signature = $_GET["signature"]; 27 $timestamp = $_GET["timestamp"]; 28 $nonce = $_GET["nonce"]; 29 $token = TOKEN; 30 $tmpArr = array($token, $timestamp, $nonce); 31 sort($tmpArr, SORT_STRING); 32 $tmpStr = implode($tmpArr); 33 $tmpStr = sha1($tmpStr); 34 35 if($tmpStr == $signature){ 36 return true; 37 }else{ 38 return false; 39 } 40 } 41 42 public function responseMsg(){ 43 $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; 44 $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); 45 $fromUsername = $postObj->FromUserName; 46 $toUsername = $postObj->ToUserName; 47 $type = $postObj->MsgType; 48 $event=$postObj->Event; 49 $Event_Key=$postObj->EventKey; 50 $mid=$postObj->MediaId; 51 $link=$postObj->Url; 52 53 $latitude = $postObj->Location_X; 54 $longitude = $postObj->Location_Y; 55 $keyword = trim($postObj->Content); 56 $time = time(); 57 $textTpl = "<xml> 58 <ToUserName><![CDATA[%s]]></ToUserName> 59 <FromUserName><![CDATA[%s]]></FromUserName> 60 <CreateTime>%s</CreateTime> 61 <MsgType><![CDATA[text]]></MsgType> 62 <Content><![CDATA[%s]]></Content> 63 </xml>"; 64 if($keyword!=''){ 65 $id="R90FXoW4OPtCbLkD9Aiaihz0"; 66 $url="http://openapi.baidu.com/public/2.0/bmt/translate?client_id=$id&q=$keyword&from=auto&to=auto"; 67 $res=file_get_contents($url); 68 $res=json_decode($res,true); 69 $contentStr=$res['trans_result'][0]['dst']; 70 } $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $contentStr); 71 echo $resultStr; 72 } 73 } 74 ?>
示例2:API调用之小黄鸡
一、注册simsimi 帐号
URL: http://developer.simsimi.com/signUp
二、 激活帐号
三、 获取API Key
四、 具体实现
调用小黄鸡API 实现
调用simsim($keyword) 函数处理,将其中的“Your API Key” 换成申请到的API Key。
//小黄鸡 贝创工做室 CopyRight 2016 public function simsim($keyword){ $key="41250a68-3cb5-43c8-9aa2-d7b3caf519b1"; $url_simsimi="http://sandbox.api.simsimi.com/request.p?key=".$key."&lc=ch&ft=0.0&text=".$keyword; $json=file_get_contents($url_simsimi); // 把整个文件读入一个字符串中 $result=json_decode($json,true); // 对JSON 格式的字符串进行编码 //$errorCode=$result['result']; // 调试用 $response=$result['response']; // 回复的消息 if(!empty($response)){ return $response; }else{ $ran=rand(1,5); switch($ran){ case 1: return "小鸡鸡今天累了,明天再陪你聊天吧。"; break; case 2: return "小鸡鸡睡觉喽~~"; break; case 3: return "呼呼~~呼呼~~"; break; case 4: return "你话好多啊,不跟你聊了"; break; case 5: return "感谢您关注西安校园创客空间"."\n"."微信号:xaxymaker"."\n"; break; default: return "感谢您关注西安校园创客空间"."\n"."微信号:xaxymaker"."\n"; break; } } }
同时,微信公众号还能够实现 天气查询 火车查询 快递查询 会员卡、优惠券、大转盘、微网站、3G相册之类的。微菜单,微网站,微会员,微团购,微调研,微相册,微推送,微统计,微支付,微客服,等等功能。
以上即是简单的微信公众平台基本教程,若是你用心感悟了,感受你有所收获了,一切始于实践,请按照教程入手,开启你的微信开发之旅吧!! 若是还有什么不懂的,请扫一扫公众号二维码关注,回复“代码”、“微信教程” ... 所有视频教程 代码资料 等着你!!!
感谢你的阅读,请用心感悟!但愿能够帮到初学的您!!分享也是一种快乐!!!请接力。。。
更多相关教程 传送门 (点击 传送门 便可到达)
:本博客内容版权为贝创工做室博客与博客园共有,若您须要引用、转载,须要注明来源及原文连接,如涉及大面积转载,请来信告知,获取受权。