使用PHP语言开发微信公众平台接口

来源:www.bjcall.com     作者:长青    时间:2015-12-08 09:35

 该教程的主要功能是发送自己的位置查询附近的母婴类商家,以及促销、团购等信息。发送与宝宝的合照测试与宝宝的脸部相似度)为例,讲解微信接口开发过程。
使用前提条件:拥有一个公网上的HTTP服务器主机空间,具有创建目录、上传文件等权限。推荐新浪的SAE
首先请注册微信公众平台的账号
本教程主要讲解接口的开发流程。
一、写好接口程序
在你的服务器上上传好一个接口程序文件,如http://www.bjcall.com/weixin.php 内容如下:
FromUserName; 
$toUsername = $postObj->ToUserName; 
$keyword = trim($postObj->Content); 
$time = time(); 
$textTpl = " 
 
 
%s 
 
 

"; 
if(!empty( $keyword )) 

$msgType = "text"; 
$contentStr = '你好啊,屌丝'; 
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); 
echo $resultStr; 
}else{ 
echo '咋不说哈呢'; 

}else { 
echo '咋不说哈呢'; 
exit; 


 
private function checkSignature() 

$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 ){ 
return true; 
}else{ 
return false; 



?>

二、配置微信公众平台回复接口
设置回复接口,填好URL和Token(url填上面的,token必须跟上面程序里面定义的Token一致)
三、验证接口
用自己的个人微信关注下你的公众账号,给这个账号发一条消息过去,收到原样的消息返回,即验证成功了。
四、开始自定义回复
注释掉$wechatObj->valid(); 这行,同时去掉//$wechatObj->responseMsg();这行的注释。
你可以修改responseMsg函数里面的代码,根据用户的消息类型('text','image','location')和消息内容来回复用户不同的内容。
消息接口就可以使用了,发个消息试试看吧?
封装weixin.class.php
由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理。
我们就考虑在这个基础上做一次封装,weixin.class.php,代码如下:
msgtype = strtolower($this->msg['MsgType']);
}
}
     //回复文本消息
public function makeText($text='')
{
$CreateTime = time();
$FuncFlag = $this->setFlag ? 1 : 0;
$textTpl = "
msg['FromUserName']}]]>
msg['ToUserName']}]]>
{$CreateTime}
 
%s
";
return sprintf($textTpl,$text,$FuncFlag);
}
     //根据数组参数回复图文消息
public function makeNews($newsData=array())
{
$CreateTime = time();
$FuncFlag = $this->setFlag ? 1 : 0;
$newTplHeader = "
msg['FromUserName']}]]>
msg['ToUserName']}]]>
{$CreateTime}
 
%s";
$newTplItem = "
 
";
$newTplFoot = "
%s
";
$Content = '';
$itemsCount = count($newsData['items']);
$itemsCount = $itemsCount < 10 ? $itemsCount : 10;//微信公众平台图文回复的消息一次最多10条
if ($itemsCount) {
foreach ($newsData['items'] as $key => $item) {
if ($keydebug) {
$this->write_log($data);
}
echo $data;
}
public function valid()
{
if ($this->checkSignature()) {
if( $_SERVER['REQUEST_METHOD']=='GET' )
{
echo $_GET['echostr'];
exit;
}
}else{
write_log('认证失败');
exit;
}
}
private function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
 
$tmpArr = array($this->token, $timestamp, $nonce);
sort($tmpArr);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
 
if( $tmpStr == $signature ){
return true;
}else{
return false;
}
}
private function write_log($log){
       //这里是你记录调试信息的地方 请自行完善 以便中间调试
    }
}
?>
调用weixin.class.php
把你的微信公众平台主接口文件(如前面定义的http://www.bjcall.com/weixin.php)中,修改代码为:

查询代码

还需要将数据库里面的查询结果格式化为特定的形式
             

热点推荐 更多>>