微信公众号开发:自动回复文本/图片/图文消息/关键词回复/上传素材/自定义菜单
对接流程
1、申请微信公众号测试账号
URL:https://mp.weixin.qq.com/debu...
2、登录,配置开发者服务器URL和Token
开发者服务器配置代码:
config.php
<?php
define("TOKEN", "weixin"); //TOKEN值
$wechatObj = new wechat();
$wechatObj->valid();
class wechat {
public function valid() {
$echoStr = $_GET["echostr"];
if($this->checkSignature()){
echo $echoStr;
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;
}
}
}
?>
URL是config.php在你服务器的URL
Token是上面代码自己设置的Token
搞定之后,就能完成接口配置的绑定。
开发
清空config.php的代码,粘贴下方代码,保存。
<?php
// 页面编码
header("Content-type:text/html;charset=utf-8");
// 接收用户发送过来的XML消息
$postStr = file_get_contents('php://input');
// 使用SimpleXML进行解析XML
$postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);
// 消息发送方
$fromUsername = $postObj->FromUserName;
// 公众号
$toUsername = $postObj->ToUserName;
// 内容
$content = trim($postObj->Content);
// 消息类型
$msgType = $postObj->MsgType;
// 时间戳
$time = time();
// 文本消息XML模板
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Content><![CDATA[%s]]></Content>
</xml>";
// 图片消息XML模板
$imageTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<Image>
<MediaId><![CDATA[%s]]></MediaId>
</Image>
</xml>";
// 图片素材ID
$media_id = "GHYb4PhayrbCAWgHCwkBQIAg_b46UI0Dl-xJukV-XoryFMp-t5c50_VqyId074_U";
// 图文消息XML模板
$newsTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[%s]]></MsgType>
<ArticleCount>1</ArticleCount>
<Articles>
<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>
</Articles>
</xml>";
// 根据关键词恢复
if($content == '你好'){
// 将文本消息发送给用户
echo sprintf($textTpl,$fromUsername,$toUsername,$time,"text",$content);
}else if($content == '图片'){
// 将图片消息发送给用户
echo sprintf($imageTpl,$fromUsername,$toUsername,$time,"image", $media_id);
}else if($content == '图文'){
// 将图文消息发送给用户
echo sprintf($newsTpl,$fromUsername,$toUsername,$time,"news","这是一篇图文卡片消息","只需向公众号发送一条消息即可生成卡片!","https://d1.faiusr.com/2/AAEIABACGAAg_vuznQYogr-b2gIwuAg4uAg.jpg","https://www.qq.com");
}
?>
体验
希望帮到您。
WeChat:sansure2016
Web:likeyunba.com
Date:2019-12-20
Author:Tanking
推荐阅读
黑苹果macOS Catalina 10.15.7升级为Big Sur(i5 3470+XSB75M-PK+HD 7750)
HD 7700HD 7730HD 7750HD 7770HD 7790HD 7850HD 7870HD 7950HD 7970HD 7990
TANKING赞 1阅读 987
初学后端,如何做好表结构设计?
这篇文章介绍了设计数据库表结构应该考虑的4个方面,还有优雅设计的6个原则,举了一个例子分享了我的设计思路,为了提高性能我们也要从多方面考虑缓存问题。
王中阳Go赞 4阅读 1.8k评论 2
一分钟搞明白!快速掌握 Go WebAssembly
最近因为各种奇怪的原因,更多的接触到了 WebAssembly。虽然之前很多博客也翻过写过各种文章,但总感觉欠些味道。于是今天梳理了一版,和大家一起展开学习。
煎鱼赞 4阅读 2.3k
Laravel入门及实践,快速上手ThinkSNS+二次开发
【摘要】自从ThinkSNS+不使用ThinkPHP框架而使用Laravel框架之后,很多人都说技术门槛抬高了,其实你与TS+的距离仅仅只是学习一个新框架而已,所以,我们今天来说说Laravel的入门。
ThinkSNS赞 1阅读 2.5k
悬赏任务源码+开源威客系统网站源码+部署教程
威客悬赏任务发布系统源码是用来进行日常在线任务接单处理的威客系统。系统可以用来发布或处理悬赏任务,甚至可以知道一个帐户的信息,如任务类型和处理状态等,它们很方便,易于使用,它允许雇主和威客执行快速...
火爆的筷子赞 1阅读 3.8k评论 1
我让chatGPT用PHP写一个MVC框架,不仅写出来,还能跑!
没想到写出来的框架确实挺简单的,但是又没觉得哪里不对,于是我尝试把这个框架放到服务器试试能不能跑起来,最后还真的可以跑起来,为了让大家能够看到这个框架的演示,我直接爬一个热搜,然后便于展示数据。
TANKING赞 1阅读 1.8k
开发一个全网搜索引擎的大致流程
由于对搜索引擎技术很感兴趣,便开始尝试开发一个搜索引擎。在参考了网上有限的资料后,加上自己钻研,最终开发出了一个小型的全网搜索引擎,底部有项目地址和搜索测试图片。
会飞的鸟赞 1阅读 5.8k评论 1
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。