第一步
填写接口配置信息,包括:URL(必须以http://或https://开头),Token(口令,必须为英文或数字)。
需要服务器,填写的URL需要正确响应微信发送的Token验证。
第二步
验证消息的确来自微信服务器,需要写php代码来实现。
<?php
//定义常量token为123456
define("TOKEN", "123456");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->responseMsg();
class wechatCallbackapiTest
{
public function run()
{
$echoStr = $_GET["echostr"];//得到echostr(随机数)
if($this->checkSignature()){//判断
echo $echoStr;//最重要!!!
exit;
}
}
//回复的消息
public function responseMsg()
{
$postStr=file_get_contents("php://input");//获得微信发来的字符串
file_put_contents('msg.txt', $postStr);//将字符串写入msg.txt文件中
//判断得到的字符串是否为空
if (!empty($postStr)){
// 将字符串为SimpleXMLElement对象,然后输出
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj->FromUserName;//发送者的name
$toUsername = $postObj->ToUserName;//收到信息的name
$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 ))
{
$contentStr = $this->test($keyword);
$msgType = "text";
$contentStr = "Welcome to wechat world!";//公众号将自动回复的消息
}else{
echo "Input something...";
}
}else {
echo "";
exit;
}
}
//获取参数,判断验证信息是否来自微信服务器
private function checkSignature()
{
//得到 signature:微信加密签名,timestamp:时间戳,nonce:随机数
$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;
}
}
}
?>
最一开始的时候先调用run方法,后再调用responseMsg方法。
将写好的php文件传到自己服务器上,利用url网址能正常访问php代码,口令和url都对,接口就配置成功。