实例介绍
【实例简介】
【实例截图】
【核心代码】
/===========================API申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
define("token", "");//接口配置信息-Token
define("appid", "");//测试号消息-appID
define("appsecret", "");//测试号消息-appsecret
define("template_id", "");//模板消息接口-模版ID
define("openid", "");//管理员openid
//===========================
//===========================API申请地址:http://www.tuling123.com/member/robot/index.jhtml
define("tulingkey", "");//图灵key
//===========================
//===========================API申请地址:https://console.bce.baidu.com/ai/#/ai/ocr/app/list
define("API_Key", "");//百度OCR API_Key
define("Secret_Key", "");//百度OCR Secret_Key
//===========================
$wechat = new wechatcallback();
if (isset($_GET['echostr'])){//微信token验证
echo $wechat->checkSignature();
}else if(isset($_GET['type'])){//推送消息
if($_GET['type']=="send"){
$wechat->send();
}elseif($_GET['type']=="send2html"){
$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
$url = $http_type.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."2html";
echo '<!DOCTYPE html><html><head><meta http-equiv="Content-Type"content="text/html; charset=UTF-8"><title>胖虎胖虎胖胖胖胖胖</title><meta name="viewport"content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/><style type="text/css">body{font-family:Helvetica,arial,freesans,clean,sans-serif;font-size:14px;line-height:1.6;color:#333;background-color:#fff;padding:20px;max-width:960px;margin:0 auto}body>*:first-child{margin-top:0!important}body>*:last-child{margin-bottom:0!important}p,blockquote,ul,ol,dl,table,pre{margin:15px 0}h1,h2,h3,h4,h5,h6{margin:20px 0 10px;padding:0;font-weight:bold;-webkit-font-smoothing:antialiased}h1 tt,h1 code,h2 tt,h2 code,h3 tt,h3 code,h4 tt,h4 code,h5 tt,h5 code,h6 tt,h6 code{font-size:inherit}h1{font-size:28px;color:#000}h2{font-size:24px;border-bottom:1px solid#ccc;color:#000}h3{font-size:18px}h4{font-size:16px}h5{font-size:14px}h6{color:#777;font-size:14px}body>h2:first-child,body>h1:first-child,body>h1:first-child h2,body>h3:first-child,body>h4:first-child,body>h5:first-child,body>h6:first-child{margin-top:0;padding-top:0}a:first-child h1,a:first-child h2,a:first-child h3,a:first-child h4,a:first-child h5,a:first-child h6{margin-top:0;padding-top:0}h1 p,h2 p,h3 p,h4 p,h5 p,h6 p{margin-top:10px}a{color:#4183C4;text-decoration:none}a:hover{text-decoration:underline}ul,ol{padding-left:30px}ul li>:first-child,ol li>:first-child,ul li ul:first-of-type,ol li ol:first-of-type,ul li ol:first-of-type,ol li ul:first-of-type{margin-top:0px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}dl{padding:0}dl dt{font-size:14px;font-weight:bold;font-style:italic;padding:0;margin:15px 0 5px}dl dt:first-child{padding:0}dl dt>:first-child{margin-top:0px}dl dt>:last-child{margin-bottom:0px}dl dd{margin:0 0 15px;padding:0 15px}dl dd>:first-child{margin-top:0px}dl dd>:last-child{margin-bottom:0px}pre,code,tt{font-size:12px;font-family:Consolas,"Liberation Mono",Courier,monospace}code,tt{margin:0 0px;padding:0px 0px;white-space:nowrap;border:1px solid#eaeaea;background-color:#f8f8f8;border-radius:3px}pre>code{margin:0;padding:0;white-space:pre;border:none;background:transparent}pre{background-color:#f8f8f8;border:1px solid#ccc;font-size:13px;line-height:19px;overflow:auto;padding:6px 10px;border-radius:3px}pre code,pre tt{background-color:transparent;border:none}kbd{-moz-border-bottom-colors:none;-moz-border-left-colors:none;-moz-border-right-colors:none;-moz-border-top-colors:none;background-color:#DDDDDD;background-image:linear-gradient(#F1F1F1,#DDDDDD);background-repeat:repeat-x;border-color:#DDDDDD#CCCCCC#CCCCCC#DDDDDD;border-image:none;border-radius:2px 2px 2px 2px;border-style:solid;border-width:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;line-height:10px;padding:1px 4px}blockquote{border-left:4px solid#DDD;padding:0 15px;color:#777}blockquote>:first-child{margin-top:0px}blockquote>:last-child{margin-bottom:0px}hr{clear:both;margin:15px 0;height:0px;overflow:hidden;border:none;background:transparent;border-bottom:4px solid#ddd;padding:0}table th{font-weight:bold}table th,table td{border:1px solid#ccc;padding:6px 13px}table tr{border-top:1px solid#ccc;background-color:#fff}table tr:nth-child(2n){background-color:#f8f8f8}img{max-width:100%}</style></head><body><h1>鸡你太美(•̀ᴗ•́)و ̑̑ </h1><hr><h3>这条内容的链接为:</h3><pre><code>'.$url.'</code></pre><h3>这里的链接可以自由设置你的内容,<br>比如下面这样:</h3><p><img src="https://0d077ef9e74d8.cdn.sohucs.com/rp0UNzs"></p><blockquote>https://www.52pojie.cn</blockquote><blockquote>made by 0xE9</blockquote></body></html>';
}else{
exit("are you cxk?");
}
}else{//收到消息
echo $wechat->responseMsg();
}
class wechatcallback{
const ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=";
const SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
const TULING_URL = "http://www.tuling123.com/openapi/api";
const BAIDU_URL = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage";
const BAIDU_TOKEN_URL = "https://aip.baidubce.com/oauth/2.0/token";
public function checkSignature(){
$echoStr = $_GET["echostr"];
$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 $echoStr;
}else{
return;
}
}
public function get_access_token(){
$output = $this->https_request(self::ACCESS_TOKEN_URL .appid."&secret=".appsecret);
$jsoninfo = json_decode($output, true);
$access_token = $jsoninfo["access_token"];
return $access_token;
}
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);
if($postObj->FromUserName == openid){
if($RX_TYPE == "text"){//文本消息
$contentStr = $this->gettuling($postObj->Content);
$result = $this->transmitText($postObj, "图灵返回:".$contentStr);
}else if($RX_TYPE == "image"){//图片消息
$contentStr = $this->getocr($postObj->PicUrl);
$result = $this->transmitText($postObj, "百度识图:".$contentStr);
}else if($RX_TYPE == "event"){//菜单消息
$eventkey = $postObj->EventKey;
if($eventkey==""){$eventkey = $postObj->Event;}
switch ($eventkey){
case "subscribe"://普通关注
$fromuser = $postObj->FromUserName;
$result = $this->transmitText($postObj, "管理员关注我啦!");
break;
case "unsubscribe"://取消关注
$fromuser = $postObj->FromUserName;
$content = $this->DeleteUuid($fromuser);
break;
default:
}
}else{
$result = $this->transmitText($postObj, "未设定的消息:".$RX_TYPE);
}
}else{
$result = $this->transmitText($postObj, "未设置管理员账户");
}
return $result;
}else {
return;
}
}
public function send(){
$access_token = $this->get_access_token();
$url = self::SEND_URL . $access_token;
$http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
$data = [
'touser' => openid,
'template_id' => template_id,
'url' => $http_type.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."2html",//设置推送消息点击后的链接
'data'=>array(
'func'=>array('value' => '这是测试来源','color' => '#173177'),
'time'=>array('value' => date("Y-m-d H:i:s",time()),'color' => '#173177'),
'msg'=>array('value' => '这是测试内容','color' => '#173177'),
)
];
$json = json_encode($data);
$req = $this->https_request($url, $json);
echo $req;
return $req;
}
private function gettuling($txt){
$a1=tulingkey;
if(empty($a1)){
return "接收的内容为".$txt.",图灵key未配置,无法自动回复";
}
$url = self::TULING_URL."?key=".tulingkey."&info=".$txt;
$res = $this -> https_request($url);
$res = json_decode($res);
switch($res ->code){
case '100000'://文本类消息
$contentStr = $res->text;
break;
case '200000'://链接类
$contentStr = $res->text;
$contentStr.= $res->url;
break;
default:
$contentStr = "沙雕网友";
}
return $contentStr;
}
private function getocr($pic){
$a1=Secret_Key;
$a2=API_Key;
if(empty($a1)||empty($a2)){
return "接收的图片为".$pic.",百度key未配置,无法识别";
}
$url = self::BAIDU_URL;
$data['grant_type'] = 'client_credentials';
$data['client_id'] = API_Key;
$data['client_secret'] = Secret_Key;
$access_token_url = self::BAIDU_TOKEN_URL;
$result = $this -> https_request($access_token_url, $data);
$result = json_decode($result,true);
$access_token = $result['access_token'];
$request_data = array("url"=>$pic,"detect_direction"=>"true");
$request_url = $url . "?access_token={$access_token}&aipSdk=php&aipSdkVersion=2_2_2";
$data_result = $this -> https_request($request_url, $request_data);
$api = json_decode($data_result,true);
$str="";
for($i=0;$i<count($api["words_result"]);$i ){
$str.= $api["words_result"][$i]["words"].PHP_EOL;
}
return $str;
}
private function transmitText($object, $content){
$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content></xml>";
$result = sprintf($textTpl, $object->FromUserName, $object->ToUserName, time(), $content);
return $result;
}
private function https_request($url,$data = null){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
if (!empty($data)){
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return $output;
}
}
?>
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论