kefu/webapp/controller/KefuController.class.php
zhulongjun de6a67c910 update
2019-01-12 17:26:20 +08:00

174 lines
5.3 KiB
PHP

<?php
define("TOKEN", "kingsome");
define("MSG_KEY", 'MzebhFcmcIFT85xOr5TnrDVeLx5HMbpgAl5gw2PVvhX');
define("SHAOWEI_APPID", 'wxfa9c8ea6a55f00d0');
define("PRIVATE_KEY", '999712592d00ad2f75b04421e030ba04');
class KefuController {
protected function getRedis($openid)
{
$redis_conf = getRedisConfig(crc32($openid));
$r = new phpcommon\Redis(array(
'host' => $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' ;
}
}
}
}