2.3 接入微信开发者模式
本节重点讲解接入微信公众平台开发者模式的步骤和示例,从而帮助开发者快速入门。
2.3.1 部署PHP接入示例到测试服务器
若需要接入微信公众平台并进行相应的开发,需要以下3个步骤:
(1)在开发者服务器部署接入文件。
(2)填写服务器配置并验证服务器地址的有效性。
(3)依据接口文档实现业务逻辑。
微信公众平台提供了PHP版本的接入示例文件,开发者可以借助此示例文件来了解接入的流程。访问“http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.20140819.zip”即可下载 PHP版本的示例文件,在本地解压后可获得wx_sample.php文件。
为了方便演示在本地新增wxdev项目目录,重命名“wx_sample.php”为“configToken.php”并复制到wxdev目录下,然后部署wxdev项目到在线测试服务器的/var/www/目录下。
其中修改configToken.php文件的valid()方法,使用file_put_contents()方法记录微信公众平台发送过来的数据:
public function valid()
{
$echoStr = $_GET["echostr"];
// 把请求的数据保存到JSON文件中
file_put_contents('./show_data.json', json_encode($_REQUEST));
// Token验证
if($this->checkSignature()){
echo $echoStr;
exit;
}
}
在wxdev目录下新增showJsonData.php文件,实现JSON文件的解析和展示:
<?php
header('Content-type:text/html;charset=utf-8');
echo "<pre>";
print_r(json_decode(file_get_contents('./show_data.json') , true));
?>
保存以上两个文件并提交上线到测试服务器即可完成接入文件的部署。
注意
本小节示例文件的其他代码未做修改。
2.3.2 配置URL并验证Token
在上一小节中,我们部署了微信公众平台提供的示例文件,其作用就是在配置开发者模式中,进行Token验证时可以进行有效接收和验证,处理的流程如图2.21所示。
图2.21 Token验证流程图
登录微信公众平台管理后台,找到“开发”下的“基本配置”页面并进入,单击“服务器配置”后的“修改配置”按钮进入配置页面。输入configToken.php在外网可访问的URL地址(如http://外网域名或者IP/wxdev/configToken.php),Token字段填写“weixin”(configToken.php定义的常量),EncodingAESKey字段值此时可以使用后面的“随机生成”按钮随机生成。消息加密解密则默认为明文模式。
完成以上配置后,单击页面下方的“提交”按钮,若在页面顶部出现“提交成功”字样则说明配置完成,Token验证成功,如图2.22所示。
图2.22 Token验证成功
若提示提交失败则可以通过以下3种方式进行处理:
❑ 验证 URL 是否可以正确访问:可以通过手动访问,查看 Token 验证的入口文件是否存在程序错误或地址错误。
❑ 验证Token是否正确:配置页面中填写的Token务必与configToken.php示例文件中定义的Token一致才可通过验证。
❑ 微信公众平台或网络原因:尝试通过多次提交配置信息解决。
在线访问showJsonData.php文件,可以查看微信公众平台发送给开发者测试服务器的请求内容,如图2.23所示。
图2.23 Token验证时微信公众平台请求的数据
2.3.3 开发自动回复消息功能
在验证Token成功后,我们开发一个自动回复的实例来加深理解。微信公众平台的示例文件提供了一个responseMsg()方法可供参考。
首先修改configToken.php文件中wechatCallbackapiTest类的responseMsg()方法,找到以下代码:
if(!empty( $keyword )) // 用户输入的关键字
{
$msgType = "text"; // 消息类型
$contentStr = "Welcome to wechat world!"; // 自动回复文本
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType,$contentStr); // 格式化处理
echo $resultStr; // 发送给微信
}else{
echo "Input something...";
}
从中找到以下代码:
$contentStr = "Welcome to wechat world!"; // 自动回复文本
修改为:
$contentStr = "Welcome to wechat world!input:".$keyword;// 自动回复文本
这样就可以自动回复用户发送给微信公众平台的文本消息了,同时调用responseMsg()方法如下:
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
// $wechatObj->valid(); // 关闭Token验证方法
$wechatObj->responseMsg(); // 开启自动回复消息方法
部署到在线服务器后,在微信公众平台内发送任意的文本消息会收到自动回复,如图2.24所示。
图2.24 基于文本消息的自动回复功能
我们发现,只有发送纯文本类型的消息可以发起自动回复的功能,而其他类型(如图片)则无法成功。关于消息类型和相关处理的内容在后面会有详细说明。