微信公众平台开发入门教程(2)接口配置
开发模式:
1. 简介
微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。微信公众平台分订阅号和服务号、企业号三类平台,利用公众账号平台进行自媒体活动,简单来说就是进行一对多的媒体性行为活动,如商家通过申请公众微信服务号实现展示商家微官网、微社区、微会员、微推送、微支付、微活动,微报名,微分享、微名片等,还可以实现部分轻应用功能。已经形成了一种主流的线上线下微信互动营销方式。 至2014年开通的微信公众平台账户已经超过600万。
许多机关、政府部门也开通微信公众平台,实现了由远距离变零距离服务的延伸,大大节约了群众办事成本,贴近了服务对象,方便了群众办事,也拉近了人口计生部门与群众的关系,践行了“为民、务实、清廉”的党的群众路线教育实践活动时代内涵,收到了良好的社会效果。
2. 注册微信平台公众帐号
3. 接口配置
示例代码设置
微信公众平台提供了一个php示例代码:
http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip
下载下来,解压缩,打开编辑。
将token值设置为你所需要的值,token可由开发者任意填写,用作生成签名。
编辑完保存并关闭文件,将文件wx_sample.php 更改成自定义的名字,这里改为wxapi.php,再次打包成wxapi.zip。
4 、服务器平台设置
如果有自己的服务器,而且支持php,可以将接口文件上传至服务器,如果没有自己的服务器,则可以选择部分免费的云平台进行开发,如百度应用引擎BAE(http://developer.baidu.com/bae),新浪云平台SAE(http://sae.sina.com.cn/)。
5. 配置接口
5.1 登录微信公众平台 -> 高能功能 -> 开发模式
5.2 成为开发者
5.3 接口配置信息
URL填写上面得到的BAE URL:http://zhuojin.duapp.com/,再加上上传的php文件名。即 http://zhuojin.duapp.com/wxapi.php
Token 填写自定义的token 值,这里为zhuojinsz。
对于SAE,URL填写 http://1.zhuojin.sinaapp.com/wxapi.php
5.4 提交
点击 “提交”,若一切设置正确,则会提示 “提交成功”。
5.5 查看接口配置信息
BAE 接口信息
SAE 接口信息
5.6 开启开发模式
至此,配置完毕。
接口配置代码如下:
<?php /** * wechat php test */ //define your token define("TOKEN", "weixin"); $wechatObj = new wechatCallbackapiTest(); if (isset($_GET['echostr'])) { $wechatObj->valid(); } else { $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)){ /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection, the best way is to check the validity of xml by yourself */ libxml_disable_entity_loader(true); $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $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>"; if(!empty( $keyword )) { $msgType = "text"; $contentStr = "Welcome to wechat world!"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; }else{ echo "Input something..."; } }else { echo ""; exit; } } private function checkSignature() { // you must define TOKEN by yourself if (!defined("TOKEN")) { throw new Exception('TOKEN is not defined!'); } $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); // use SORT_STRING rule sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?>