1.订阅号配置服务器
为了避免代码错误频繁修改,先用公众平台测试账号去调试代码。那么怎么去配置服务器呢?其实很简单,只需要注意两点即可,第一点:URL 第二点:Token 只要这两点对应好之后,即可配置成功。
详细操作步骤--首先在左侧菜单栏选择开发栏中的子栏目‘开发者工具’----->(选择)公众平台测试账号 会弹出如下图所示的界面
当然,需要说明的是,测试号信息中的appID,appsecret这两项是微信平台会给信息的,我这张图片是故意删除了这个。重点是接口配置信息的修改,这两项默认是空的,需要用户自己去填写,URL写自己的服务器地址,建议是阿里云服务器,阿里云服务器可以用ftp登录,仅需要把文件上传至FTP中即可。百度云服务器也可以,不过呢经过测试发现百度云修改代码后上传过程慢,这样就会浪费大量的时间。Token相当于密匙,用于安全认证。需要和写的代码中的Token相同。
下面是php相应的代码
<?php
/**
* wechat php test
*/
//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->run();
class wechatCallbackapiTest
{
public function run()
{
if ($this->checkSignature() == false) {
die('非法访问');
}
if (isset($_GET['echostr'])) {
$echoStr = $_GET['echostr'];
echo $echoStr;
exit;
}else{
$this->responseMsg();
}
}
public function responseMsg()
{
//get post data, May be due to the different environments
// $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
$postStr = file_get_contents("php://input");
//extract post data
if (!empty($postStr)){
$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 = "欢迎关注";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}else{
echo "Input something...";
}
}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;
}
}
}
?>