问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

微信公众平台开发模式下如何设置图文回复

发布网友 发布时间:2022-06-02 04:08

我来回答

2个回答

热心网友 时间:2023-10-28 09:24

<?php

/*
回复不同的消息 包括文字,图片,图文,链接等
*/

define("TOKEN", "pondbay");

$wechatObj = new wechatCallbackapiTest();
if (isset($_GET['echostr'])) {
$wechatObj->valid();
}else{
$wechatObj->responseMsg();
}

class wechatCallbackapiTest
{
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;
}
}

public function responseMsg()
{
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$RX_TYPE = trim($postObj->MsgType);

switch ($RX_TYPE)
{
case "text":
$resultStr = $this->receiveText($postObj);
break;
}
echo $resultStr;
}else {
echo "";
exit;
}
}

private function receiveText($object)
{
$funcFlag = 0;
$keyword = trim($object->Content);
$resultStr = "";
$contentStr = "";

if($keyword == "文本"){
$contentStr = "这是个文本消息";
$resultStr = $this->transmitText($object, $contentStr, $funcFlag);
}
else if($keyword == "图文" || $keyword == "单图文"){
$dateArray = array();
$dateArray[] = array("Title"=>"单图文标题",
"Description"=>"单图文内容",
"Picurl"=>"图片地址(你自己的)",
"Url" =>"链接(你自己的)");
$resultStr = $this->transmitNews($object, $dateArray, $funcFlag);
}
else if($keyword == "多图文"){
$dateArray = array();
$dateArray[] = array("Title"=>"多图文1标题", "Description"=>"", "Picurl"=>"图片地址(你自己的)", "Url" =>"链接(你自己的)");
$dateArray[] = array("Title"=>"多图文2标题", "Description"=>"", "Picurl"=>"图片地址(你自己的)", "Url" =>"链接(你自己的)");
$dateArray[] = array("Title"=>"多图文3标题", "Description"=>"", "Picurl"=>"图片地址(你自己的)", "Url" =>"链接(你自己的)");
$resultStr = $this->transmitNews($object, $dateArray, $funcFlag);
}
else if($keyword == "音乐"){
$musicArray = array("Title"=>"最炫民族风", "Description"=>"歌手:凤凰传奇", "MusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3","HQMusicUrl"=>"http://121.199.4.61/music/zxmzf.mp3");
$resultStr = $this->transmitMusic($object, $musicArray, $funcFlag);
}
return $resultStr;
}

private function receiveEvent($object)
{
$contentStr = "";
switch ($object->Event)
{
case "subscribe":
$contentStr = "欢迎关注方倍工作室";
break;
}
$resultStr = $this->transmitText($object, $contentStr);
return $resultStr;
}

private function transmitText($object, $content, $flag = 0)
{
$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>%d</FuncFlag>
</xml>";
$resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content, $flag);
return $resultStr;
}

private function transmitNews($object, $arr_item, $flag = 0)
{
if(!is_array($arr_item))
return;

$itemTpl = " <item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>
";
$item_str = "";
foreach ($arr_item as $item)
$item_str .= sprintf($itemTpl, $item['Title'], $item['Description'], $item['Picurl'], $item['Url']);

$newsTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<Content><![CDATA[]]></Content>
<ArticleCount>%s</ArticleCount>
<Articles>
$item_str</Articles>
<FuncFlag>%s</FuncFlag>
</xml>";

$resultStr = sprintf($newsTpl, $object->FromUserName, $object->ToUserName, time(), count($arr_item), $flag);
return $resultStr;
}

private function transmitMusic($object, $musicArray, $flag = 0)
{
$itemTpl = "<Music>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<MusicUrl><![CDATA[%s]]></MusicUrl>
<HQMusicUrl><![CDATA[%s]]></HQMusicUrl>
</Music>";

$item_str = sprintf($itemTpl, $musicArray['Title'], $musicArray['Description'], $musicArray['MusicUrl'], $musicArray['HQMusicUrl']);

$textTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[music]]></MsgType>
$item_str
<FuncFlag>%d</FuncFlag>
</xml>";

$resultStr = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $flag);
return $resultStr;
}
}
?>

热心网友 时间:2023-10-28 09:24

去百度经验找
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
东北人眼中的南方人? 酒店管理研究生就业很难吗 在美国学酒店管理的就业前景 怎么样 美国酒店管理研究生的就业前景怎么样? 流放者柯南克立尔城堡在哪 克立尔的堡垒怎么进入 《刺客信条》兄弟会全版修改哪里有? 跪求 我的猫用直流12V直接供电 现在烧毁 打开电源现在无反应 应该是... 感情爱上你一生不放弃,是什么歌曲名字里的歌词 起亚嘉华商务车天一热空调就不工作 二级路由器可以带多少台电脑 带有超声波马达的镜头有什么用处,手动镜头是不是没有超声波马达, 什么叫“超声波”? 四线制超声波液位计的工作原理及接线图.?为什么四线制超声波液位计的两个输出端都有电压。电机不停的工 在做AVR M16超声波避障小车,看到有种超声波模块会自己转动的。转动的原理是什么?需要什么器件?用的超 超声导波是怎么形成的?麻烦具体一点。 超声波马达简称是什么? 新买的宝骏510,车上的电瓶充一天的电第二天就没有电了,车都启动不了,各位大侠是什么原因呢!谢谢 宝骏510电瓶是多少安培的? 眼镜镜片什么品牌最好 什么材料最好 ? 近视眼镜镜片品牌和材质选择什么样子的好? 美团买药地址怎么填 吉利星瑞时空版皓月有没有倒车镜加热 被催婚的时候,你们是怎么说服父母的? 星瑞时空版皓月排气是真的吗 【时空版星辰 这车怎么样?】 星瑞时空版比普通版车身低 红枣的营养价值有哪些?哪个品牌的红枣比较好? 在最无助的时候 真的可以看清很多人,什么意思 有没有人,有时候看清了很多人的真面目,对身边所有的人和事,感到无比的绝望 无线路由器最多能带多少台电脑上网?? 一个无线路由器最多可以连几台电脑上网? 车没有电打不了火,要如何处理? win10为什么安装不了10显卡驱动 微信提现周末多久才能到账 国外购买的VIVO S9手机,可以在马来西亚使用吗?可以使用马来西亚的电话卡吗 我的下颌侧面和脖子连接处,无原无顾的长了一个好像囊肿一样的东西,前年才发现时很小不明显,到今年一直 象牙果和牛骨哪个寓意更好 iphone的激活锁忘记了,怎么能快速解锁 课中坏事百度网盘链接 课中坏事360云盘,谢谢 Cisco anyconnect :disconnect Cisco AnyConnect 无法连接到Internet怎么办? cisco anyconnect 3.0.5版本安装后为什么无法点击地址栏,是灰的只能自动连接,有何办法可以改正地址? 在平安0首付买的车,1年了保险应该怎么买? 合肥平安保险零首付购车有真的吗 线上手机分期,哪里比较靠谱的 零首付 今年的金融危机对平安保险影响有多大 艺术中情感的表达方式有几种? 艺术是情感的形式是谁提出的,怎么理解