本篇文章的内容是PHP微信API的接入和关键字自动回复,现在分享给大家,有需要的朋友就可以参考一下本篇文章的内容了
https://blog.csdn.net/self_realian/article/details/70849159
公众账号的使用模式分类
1,编辑模式:有微信公众平台,提供给微信公众账号管理者的一个简单的,可视化操作的界面,主要是方便
微信公众账号管理者,能够进行一些简单的微信运营
2,开发者模式:就是调用一些微信的公用接口,来完成一些自身业务
立即学习“PHP免费学习笔记(深入)”;
应用中接入API接口步骤
1,填写服务器URL,token(注意:只支持80端口 也就是http服务必须在80端口打开,才能接收发送过来的消息
这里的url就是指第三方服务器的url,它的作用主要是接收微信推送的消息
这里的token是开发者与微信公众平台之间约定的口令,主要是用来验证第三方服务器真正的合法性
2,验证服务器地址的有效性,加密/校验流程如下:
(1)将token、timestamp、nonce三个参数进行字典序排序(这三个都是微信通过get方法传送过来的三个参数,通过这三个参数可以来验证请求是否来自于微信)
(2)将三个参数字符串拼接成一个字符串进行sha1加密
(3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
3,关于access_token
(1)access_token与appid,appsecred的关系
当你在微信公众平台注册微信公众账号时,微信公众平台为你生成了一个appid和appsecred,这两个值就是你在微信公众平台上的一个唯一标识
appid和appsecred(edd7d19a4d8c625ed1244d17f78a9165)就是用来产生access_token,access_token其实就是一个动态口令,它有时间性,一段时间内有效
也可以将access_token理解成调用微信公众平台的一些接口的钥匙
特点:(1)唯一有效性(2)全局有效性 (至于access_token的详解,可以进入微信,查看“开发者文档”)
微信开放接口
1,获取access_token
2,获取微信服务器地址
说完这些之后,下边就是代码部分。首先提醒大家,要想添加自己的这些功能,首先要有一个自己的公网可以访问的域名,没有的可以在腾讯云或阿里云上申请一个(我用的框架是ThinkPHP3.2.2的)
[php] view plain copy
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
$timestamp = $_GET['timestamp'];//timestamp其实就是一个时间戳
$nonce = $_GET['nonce'];//nonce是一个随机参数
$token = "weixin";//这个token填写你在微信公众平台上写的那个值
$signature = $_GET['signature'];//这个signature其实就是在微信公众平台已经加密好的字符串
$echostr = $_GET['echostr'];
$array = array( $timestamp, $nonce, $token);
sort($array);
$tmpstr = implode('', $array);
$tmpstr = sha1($tmpstr);
if( $tmpstr == $signature && $echostr){
echo $echostr;
exit;
}else{
$this->reponseMsg();
}
}
public function reponseMsg(){
$postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
$postObj = simplexml_load_string( $postArr );
if( strtolower( $postObj->MsgType) == 'event'){
//如果是关注事件(subscribe)
if( strtolower($postObj->Event == 'subscribe') ){
//回复用户消息
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$time = time();
$msgType = 'text';
$content = '欢迎关注 书旅and良玉 微信公众账号'.$postObj->FromUserName.'-'.$postObj->ToUserName;
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$info = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
echo $info;
}
}
//回复纯文本或单图文消息
if(($postObj->MsgType) == 'text' && trim($postObj->Content) == '夏目友人帐'){
$toUser = $postObj->FromUserName;
$fromUser = $postObj->ToUserName;
$arr = array(
array(
'title'=>'夏目友人帐',
'description'=>"此生无悔入夏目",
'picUrl'=>'http://img4.duitang.com/uploads/item/201508/16/20150816015528_X8dKY.jpeg',
'url'=>'http://www.shulvchen.cn',
),
);
$template = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>".count($arr)."</ArticleCount>
<Articles>";
foreach($arr as $k=>$v){
$template .="<item>
<Title><![CDATA[".$v['title']."]]></Title>
<Description><![CDATA[".$v['description']."]]></Description>
<PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
<Url><![CDATA[".$v['url']."]]></Url>
</item>";
}
$template .="</Articles>
</xml> ";
echo sprintf($template, $toUser, $fromUser, time(), 'news');
}else{
switch( trim($postObj->Content) ){
case 'bb':
$content = '我喜欢你';
break;
case '良玉':
$content = '我喜欢你';
break;
case '书旅':
$content = '加油';
break;
case 'dsdf':
$content = '不愿错过他';
break;
case '垒哥':
$content = '垒哥已死,有事儿烧纸';
break;
case '书旅and良玉':
$content = 'Forever with you';
break;
case '学弟':
$content = '书旅是你学长';
break;
default:
$content = "<a href='http://www.baidu.com'>百度一下,你就知道(点击文字,进入百度)</a>";
}
$template1 = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
$fromUser = $postObj->ToUserName;//消息从哪里来
$toUser = $postObj->FromUserName;//发送给谁
$time = time();
//$content = '我喜欢你';
$msgType = 'text';
echo sprintf($template1, $toUser, $fromUser,$time, $msgType, $content);
}
}
}
希望这篇博客对跟我一样喜欢微信开发的小菜鸟们有所帮助
相关推荐:
实例详解Python+Slack API 如何实现聊天机器人
以上就是PHP微信API的接入和关键字自动回复的详细内容,更多请关注php中文网其它相关文章!
微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号