有没有想过,向一个公众号发送长链接,然后公众号给你回复一个短网址?
其实很简单:
<?php define(\"TOKEN\", \"xiao\"); //用于回复用户消息 function responseMsg(){ $postStr = $GLOBALS[\"HTTP_RAW_POST_DATA\"]; if (!empty($postStr)){ $postObj = simplexml_load_string($postStr, \'SimpleXMLElement\', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $MsgT = $postObj->MsgType; $time = time(); //如果用户发的text类型 if($MsgT==\"text\"){ $key = trim($postObj->Content); $textTpl = \"<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>\"; $msgType = \"text\"; //生成短网址 $dwzapi = \"http://api.t.sina.com.cn/short_url/shorten.json?source=3271760578&url_long=\".$key; $dwzpost = file_get_contents($dwzapi); $dwzjsondecode = json_decode($dwzpost,true); //发送 $contentStr = $dwzjsondecode[0][\'url_short\']; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; exit; }else{ $textTpl = \"<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>\"; $msgType = \"text\"; //发送 $contentStr = \"请发送链接\"; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; exit; } //如果用户发的event(事件)类型 if($MsgT==\"event\"){ $Event = $postObj->Event; if ($Event==subscribe) { $contentStr = \"欢迎关注\"; }else{ $contentStr = \"希望您下次关注,但您收不到此条消息了\"; } $textTpl = \"<xml> <ToUserName><![CDATA[%s]]></ToUserName> <FromUserName><![CDATA[%s]]></FromUserName> <CreateTime>%s</CreateTime> <MsgType><![CDATA[%s]]></MsgType> <Content><![CDATA[%s]]></Content> </xml>\"; $Title = $postObj->Title; $Description = $postObj->Description; $Url = $postObj->Url; $msgType = \'text\'; $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr); echo $resultStr; exit; } }else{ echo \"不对\"; exit; } } $echoStr = $_GET[\"echostr\"]; //如果有$echoStr说明是对接 if (!empty($echoStr)) { //对接规则 $signature = $_GET[\"signature\"]; $timestamp = $_GET[\"timestamp\"]; $nonce = $_GET[\"nonce\"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr, SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ echo $echoStr; }else{ echo \"\"; exit; } }else{ responseMsg(); } ?>
配置方法:
1、登录公众号
2、打开基本配置
3、填写上面代码的url
Token在代码里面自己设置,要对应的,EncodingAESKey随机生成。
4、然后启用这个配置,然后去公众号发送一个url看看!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
© 版权声明
THE END
暂无评论内容