首先这是微信公众平台的地址:https://mp.weixin.qq.com //我们可以在这里先了解微信的一些基本功能,比如说我们先做个自定义菜单,自动回复等小功能
注册登录进入主页面 后很明显能看到 可以设置自动回复以及菜单,非常简单 在这里就不多说啦 。
下面我们应该看到的是开发者工具,就能看到开发文档以及测试工具,再往下看 接口权限 ,只有一些基本权限,所以呢 这里我们可以了解下基本功能。
我们如果要做一些功能的话 我们可以看到 基本都需要token 所以第一步就是获取token
点击 开始开发-》获取token 我们可以看到获取token的方法 需要注意的是 我们刚才看权限时 看到过token每天只能有2000次所以我们需要省着用 而每次有效期为2小时也就是7200秒所以我们获取一次token后就可以存一下等7200秒后我们再重新获取这样就可以节省次数了
获取 token的路径为
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET参数说明
| 参数 | 是否必须 | 说明 |
|---|---|---|
| grant_type | 是 | 获取access_token填写client_credential |
| appid | 是 | 第三方用户唯一凭证 |
| secret | 是 | 第三方用户唯一凭证密钥,即appsecret |
返回说明
正常情况下,微信会返回下述JSON数据包给公众号:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
|
| 参数 | 说明 |
|---|---|
| access_token | 获取到的凭证 |
| expires_in | 凭证有效时间,单位:秒 |
可以直接测试下
如果我们能够获取到token后我们先实现一个被动发送消息的接口 简单说就是自动回复
打开 消息管理->消息回复-被动回复这里 可以看到可以回复的有很多 我们先看下回复文本的
回复文本消息
|
| 参数 | 是否必须 | 描述 |
|---|---|---|
| ToUserName | 是 | 接收方帐号(收到的OpenID) |
| FromUserName | 是 | 开发者微信号 |
| CreateTime | 是 | 消息创建时间 (整型) |
| MsgType | 是 | text |
| Content | 是 | 回复的消息内容(换行:在content中能够换行,微信客户端就支持换行显示) |
//这里是一个自动回复的简单代码
<?php
$wechatObj = new wechatCallbackapiTest();
$wechatObj -> responseMsg();
class wechatCallbackapiTest
{
public function responseMsg()
{
//接收用户的消息
$postStr = file_get_contents("php://input");
//判断是否接收到有效消息
if (!empty($postStr))
{
//解析用户的xml
libxml_disable_entity_loader(true);
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
//消息发送者
$fromUsername = $postObj->FromUserName;
//消息接收人
$toUsername = $postObj->ToUserName;
//消息内容
$keyword = trim($postObj->Content);
//消息的类型
$msgType=$postObj->MsgType;
//当前时时间戳
$time = time();
//如果用户发送的类型是地址位置
if($msgType=="location")
{
$msgType = "text";
$contentStr="您的所在位置的经度为".$postObj->Location_Y.",纬度为:".$postObj->Location_X."地点是:".$postObj->Label;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
//如果用户发送的是语音
if($msgType=='voice')
{
$msgType = "text";
//将语音转为文字
$contentStr=$postObj->Recognition;
$this->sendNews($contentStr,$fromUsername,$toUsername,$time);
}
if(!empty($keyword))
{
$this->sendNews($keyword,$fromUsername,$toUsername,$time);
}
}
else
{
echo "";
exit;
}
}
function sendNews($keyword,$fromUsername,$toUsername,$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($keyword == "时间")
{
$msgType = "text";
$contentStr= "当前的时间为".date("Y年m月d日 H时i分s秒",time());
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
else
{
$msgType = "text";
$contentStr= $keyword;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultStr;
}
}
} 只作为简单的调试用 如有疑问请评论
1331

被折叠的 条评论
为什么被折叠?



