PHP 对接微信公众平台消息接口开发流程实例

网友投稿 888 2024-06-17


PHP 对接微信公众平台消息接口开发流程实例

这篇文章主要介绍了php对接微信公众平台消息接口开发流程,如何使用php版接口操作公众平台消息,需要的朋友可以参考下

一、写好接口程序

在你的服务器上上传好一个接口程序文件内容如下:

代码如下:


<?php

define("TOKEN", "weixin");//自己定义的token 就是个通信的私钥

$wechatObj = new wechatCallbackapiTest();

$wechatObj->valid();

//$wechatObj->responseMsg();

class wechatCallbackapiTest

{

public function valid()

{

$echoStr = $_GET["echostr"];

if($this->checkSignature()){

echo $echoStr;

exit;

}

}

public function responseMsg()

{

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

if (!empty($postStr)){

$postObj = simplexml_load_string($postStr, &#39;SimpleXMLElement&#39;, 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 = &#39;你好啊,屌丝&#39;;

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

echo $resultStr;

}else{

echo &#39;咋不说哈呢&#39;;

}

}else {

echo &#39;咋不说哈呢&#39;;

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填上面的http://www.yourdomain.com/weixin.php,token必须跟上面程序里面定义的Token一致)

三、验证接口

用自己的个人微信关注下你的公众账号,给这个账号发一条消息过去,收到原样的消息返回,即验证成功了。

四、开始自定义回复

注释掉$wechatObj->valid(); 这行,同时去掉//$wechatObj->responseMsg();这行的注释。

你可以修改responseMsg函数里面的代码,根据用户的消息类型('text','image','location')和消息内容来回复用户不同的内容。

消息接口就可以使用了,发个消息试试看吧?

1.封装weixin.class.php

由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处理。

我们就考虑在这个基础上做一次封装,weixin.class.php,代码如下:

代码如下:


<?php

class Weixin

{

public $token = &#39;&#39;;//token

public $debug =  false;//是否debug的状态标示,方便我们在调试的时候记录一些中间数据

public $setFlag = false;

public $msgtype = &#39;text&#39;;   //(&#39;text&#39;,&#39;image&#39;,&#39;location&#39;)

public $msg = array();

public function __construct($token,$debug)

{

$this->token = $token;

$this->debug = $debug;

}

//获得用户发过来的消息(消息内容和消息类型  )

public function getMsg()

{

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

if ($this->debug) {

$this->write_log($postStr);

}

if (!empty($postStr)) {

$this->msg = (array)simplexml_load_string($postStr, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA);

$this->msgtype = strtolower($this->msg[&#39;MsgType&#39;]);

}

}

//回复文本消息

public function makeText($text=&#39;&#39;)

{

$CreateTime = time();

$FuncFlag = $this->setFlag ? 1 : 0;

$textTpl = "<xml>

<ToUserName><![CDATA[{$this->msg[&#39;FromUserName&#39;]}]]></ToUserName>

<FromUserName><![CDATA[{$this->msg[&#39;ToUserName&#39;]}]]></FromUserName>

          &n


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:php 实现简单微信文本通讯的微信公众号开发
下一篇:php 用于微信开发获取用户信息之实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~