$redis_conf['host'], 'port' => $redis_conf['port'], 'passwd' => $redis_conf['passwd'] )); return $r; } public function checkServer() // 校验服务器地址URL { if ( isset($_REQUEST['echostr'])) { $this->valid(); } else { $this->responseMsg(); } } public function valid() { $echoStr = $_REQUEST['echostr']; if ( $this->checkSignature()){ echo $echoStr; exit; } else { echo $echoStr . '+++' . TOKEN; exit; } } private function checkSignature() { $signature = $_REQUEST["signature"]; $timestamp = $_REQUEST["timestamp"]; $nonce = $_REQUEST["nonce"]; $token = TOKEN; error_log('token:' . $token); $tmpArr = array ( $token , $timestamp , $nonce ); sort( $tmpArr , SORT_STRING); $tmpStr = implode( $tmpArr ); $tmpStr = sha1($tmpStr); error_log('tmpStr:' . $tmpStr); error_log('signature:' . $signature); if ( $tmpStr == $signature ){ return true ; } else { return false ; } } private function disposeText($postArr) { $openid = $postArr['FromUserName']; $toUserName = $postArr['ToUserName']; $CreateTime = $postArr['CreateTime']; } private function_exists($postArr) { $openid = $postArr['FromUserName']; $toUserName = $postArr['ToUserName']; $CreateTime = $postArr['CreateTime']; } public function responseMsg() { $postStr = $GLOBALS ["HTTP_RAW_POST_DATA" ]; error_log('responseMsg'); if (! empty( $postStr ) && is_string( $postStr )){ $postArr = json_decode( $postStr , true ); if (! empty ( $postArr ['MsgType']) && $postArr ['MsgType'] == 'text'){ // 文本消息 $fromUsername = $postArr ['FromUserName']; // 发送者openid $toUserName = $postArr ['ToUserName']; // 小程序id $textTpl = array ( "ToUserName" =>$fromUsername , "FromUserName"=> $toUserName , "CreateTime"=> time (), "MsgType"=>"transfer_customer_service", ); exit (json_encode( $textTpl )); } elseif (! empty ( $postArr ['MsgType']) && $postArr ['MsgType'] == 'image'){ // 图文消息 $fromUsername = $postArr ['FromUserName']; // 发送者openid $toUserName = $postArr ['ToUserName']; // 小程序id $textTpl = array ( "ToUserName"=> $fromUsername , "FromUserName"=> $toUserName , "CreateTime"=> time (), "MsgType"=>"transfer_customer_service", ); exit (json_encode( $textTpl )); } elseif ( $postArr ['MsgType'] == 'event' && $postArr ['Event']=='user_enter_tempsession'){ // 进入客服动作 $fromUsername = $postArr ['FromUserName']; // 发送者openid $content = '您好,有什么能帮助你?' ; $data = array ( "touser"=> $fromUsername , "msgtype"=>"text", "text"=> array ("content"=> $content ) ); $params = json_encode( $data ,JSON_UNESCAPED_UNICODE); $access_token = $this->getAccessToken(); /* * POST发送https请求客服接口api */ $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" . $access_token; $response = ''; if (!phpcommon\HttpClient::get($url, $params, $response)) { phpcommon\sendError(ERR_RETRY, '系统繁忙'); return; } if ( $response == 0 ){ echo 'success'; exit ; } } else { exit ('aaa' ); } } else { echo "" ; exit ; } } public function getAccessToken(){ if (S('access_token' )){ return S('access_token' ); } else { $appid = SHAOWEI_APPID; $appkey = PRIVATE_KEY; $url = "https://api.weixing.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appkey"; $response = ''; if (!phpcommon\HttpClient::get($url, $params, $response)) { phpcommon\sendError(ERR_RETRY, '系统繁忙'); return; } $res = json_decode($response, true ); if ( $res ){ S( 'access_token', $res ['access_token'],7100 ); return S('access_token' ); } else { return 'api return error' ; } } } }