update
This commit is contained in:
parent
de6a67c910
commit
ba51b6b8d0
8
config/game1011/weixin/config.php
Normal file
8
config/game1011/weixin/config.php
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
//微信App_ID已及APP_Secret
|
||||||
|
const WEIXIN_APP_ID = 'wxfa9c8ea6a55f00d0';
|
||||||
|
const WEIXIN_APP_SECRET = '999712592d00ad2f75b04421e030ba04';
|
||||||
|
const WEIXIN_API_URL = 'https://api.weixin.qq.com/sns/jscode2session';
|
||||||
|
const WEIXIN_MSG_KEY = 'MzebhFcmcIFT85xOr5TnrDVeLx5HMbpgAl5gw2PVvhX';
|
||||||
|
const WEIXIN_TOKEN = 'kingsome';
|
@ -1,16 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
define("TOKEN", "kingsome");
|
|
||||||
define("MSG_KEY", 'MzebhFcmcIFT85xOr5TnrDVeLx5HMbpgAl5gw2PVvhX');
|
|
||||||
define("SHAOWEI_APPID", 'wxfa9c8ea6a55f00d0');
|
|
||||||
define("PRIVATE_KEY", '999712592d00ad2f75b04421e030ba04');
|
|
||||||
|
|
||||||
|
|
||||||
class KefuController {
|
class KefuController {
|
||||||
|
|
||||||
protected function getRedis($openid)
|
protected function getRedis($openid)
|
||||||
{
|
{
|
||||||
|
|
||||||
$redis_conf = getRedisConfig(crc32($openid));
|
$redis_conf = getRedisConfig(crc32($openid));
|
||||||
$r = new phpcommon\Redis(array(
|
$r = new phpcommon\Redis(array(
|
||||||
'host' => $redis_conf['host'],
|
'host' => $redis_conf['host'],
|
||||||
@ -22,11 +18,17 @@ class KefuController {
|
|||||||
|
|
||||||
public function checkServer() // 校验服务器地址URL
|
public function checkServer() // 校验服务器地址URL
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$gameid = $_REQUEST['gameid'];
|
||||||
|
error_log($gameid);
|
||||||
|
$config_name = "../config/game$gameid/weixin/config.php";
|
||||||
|
require $config_name;
|
||||||
if ( isset($_REQUEST['echostr'])) {
|
if ( isset($_REQUEST['echostr'])) {
|
||||||
$this->valid();
|
$this->valid();
|
||||||
} else {
|
} else {
|
||||||
$this->responseMsg();
|
$this->responseMsg();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function valid()
|
public function valid()
|
||||||
@ -36,7 +38,7 @@ class KefuController {
|
|||||||
echo $echoStr;
|
echo $echoStr;
|
||||||
exit;
|
exit;
|
||||||
} else {
|
} else {
|
||||||
echo $echoStr . '+++' . TOKEN;
|
echo $echoStr . '+++' . WEIXIN_TOKEN;
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -48,14 +50,11 @@ class KefuController {
|
|||||||
$timestamp = $_REQUEST["timestamp"];
|
$timestamp = $_REQUEST["timestamp"];
|
||||||
$nonce = $_REQUEST["nonce"];
|
$nonce = $_REQUEST["nonce"];
|
||||||
|
|
||||||
$token = TOKEN;
|
$token = WEIXIN_TOKEN;
|
||||||
error_log('token:' . $token);
|
|
||||||
$tmpArr = array ( $token , $timestamp , $nonce );
|
$tmpArr = array ( $token , $timestamp , $nonce );
|
||||||
sort( $tmpArr , SORT_STRING);
|
sort( $tmpArr , SORT_STRING);
|
||||||
$tmpStr = implode( $tmpArr );
|
$tmpStr = implode( $tmpArr );
|
||||||
$tmpStr = sha1($tmpStr);
|
$tmpStr = sha1($tmpStr);
|
||||||
error_log('tmpStr:' . $tmpStr);
|
|
||||||
error_log('signature:' . $signature);
|
|
||||||
|
|
||||||
if ( $tmpStr == $signature ){
|
if ( $tmpStr == $signature ){
|
||||||
return true ;
|
return true ;
|
||||||
@ -64,7 +63,7 @@ class KefuController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function disposeText($postArr)
|
private function disposeText($postArr, $gameid)
|
||||||
{
|
{
|
||||||
$openid = $postArr['FromUserName'];
|
$openid = $postArr['FromUserName'];
|
||||||
$toUserName = $postArr['ToUserName'];
|
$toUserName = $postArr['ToUserName'];
|
||||||
@ -73,68 +72,70 @@ class KefuController {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function_exists($postArr)
|
private function disposeImage($postArr, $gameid)
|
||||||
{
|
{
|
||||||
$openid = $postArr['FromUserName'];
|
$openid = $postArr['FromUserName'];
|
||||||
$toUserName = $postArr['ToUserName'];
|
$toUserName = $postArr['ToUserName'];
|
||||||
$CreateTime = $postArr['CreateTime'];
|
$CreateTime = $postArr['CreateTime'];
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private function disposeEvent($postArr, $gameid)
|
||||||
|
{
|
||||||
|
$openid = $postArr['FromUserName'];
|
||||||
|
$toUserName = $postArr['ToUserName'];
|
||||||
|
$CreateTime = $postArr['CreateTime'];
|
||||||
|
|
||||||
|
if($postArr['Event'] == 'user_enter_tempsession')
|
||||||
|
{
|
||||||
|
$content = '您好,有什么能帮助你?' ;
|
||||||
|
$data = array (
|
||||||
|
"touser"=> $openid,
|
||||||
|
"msgtype"=>"text",
|
||||||
|
"text"=> array ("content" => $content)
|
||||||
|
);
|
||||||
|
$postarray = json_encode( $data ,JSON_UNESCAPED_UNICODE);
|
||||||
|
|
||||||
|
//POST发送https请求客服接口api
|
||||||
|
$access_token = $this->getAccessToken($openid, $gameid);
|
||||||
|
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=$access_token";
|
||||||
|
$response = '';
|
||||||
|
if (!phpcommon\HttpClient::post($url, $postarray, $response)) {
|
||||||
|
phpcommon\sendError(ERR_RETRY, '系统繁忙');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$ret_info = json_decode($response, true);
|
||||||
|
if ($ret_info['errcode'] == 0) {
|
||||||
|
echo(json_encode(array(
|
||||||
|
'errcode' => 0,
|
||||||
|
'errmsg' => ''
|
||||||
|
)));
|
||||||
|
exit ;
|
||||||
|
} else {
|
||||||
|
phpcommon\sendError(ERR_RETRY, 'token失败');
|
||||||
|
error_log($response);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function responseMsg()
|
public function responseMsg()
|
||||||
{
|
{
|
||||||
$postStr = $GLOBALS ["HTTP_RAW_POST_DATA" ];
|
$postStr = $GLOBALS ["HTTP_RAW_POST_DATA" ];
|
||||||
error_log('responseMsg');
|
error_log($postStr);
|
||||||
|
|
||||||
if (!empty( $postStr ) && is_string( $postStr )){
|
if (!empty( $postStr ) && is_string( $postStr )){
|
||||||
|
|
||||||
$postArr = json_decode( $postStr , true );
|
$postArr = json_decode( $postStr , true );
|
||||||
if (!empty( $postArr ['MsgType']) && $postArr['MsgType'] == 'text'){ // 文本消息
|
if (!empty( $postArr ['MsgType']) && $postArr['MsgType'] == 'text'){ // 文本消息
|
||||||
$fromUsername = $postArr ['FromUserName']; // 发送者openid
|
|
||||||
$toUserName = $postArr ['ToUserName']; // 小程序id
|
$this->disposeText($postArr, $gameid);
|
||||||
$textTpl = array (
|
|
||||||
"ToUserName" =>$fromUsername ,
|
|
||||||
"FromUserName"=> $toUserName ,
|
|
||||||
"CreateTime"=> time (),
|
|
||||||
"MsgType"=>"transfer_customer_service",
|
|
||||||
);
|
|
||||||
exit (json_encode( $textTpl ));
|
|
||||||
} elseif (!empty( $postArr ['MsgType']) && $postArr['MsgType'] == 'image'){ // 图文消息
|
} 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();
|
$this->disposeImage($postArr, $gameid);
|
||||||
/*
|
|
||||||
* POST发送https请求客服接口api
|
|
||||||
*/
|
|
||||||
|
|
||||||
$url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" . $access_token;
|
} elseif (!empty( $postArr ['MsgType']) && $postArr['MsgType'] == 'event' ){ // 进入客服动作
|
||||||
|
$this->disposeEvent($postArr, $gameid);
|
||||||
$response = '';
|
|
||||||
if (!phpcommon\HttpClient::get($url, $params, $response)) {
|
|
||||||
phpcommon\sendError(ERR_RETRY, '系统繁忙');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( $response == 0 ){
|
|
||||||
echo 'success'; exit ;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
exit ('aaa');
|
exit ('aaa');
|
||||||
@ -145,28 +146,38 @@ class KefuController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAccessToken($openid, $gameid)
|
||||||
|
{
|
||||||
|
|
||||||
public function getAccessToken(){
|
$r = $this->getRedis($openid);
|
||||||
if (S('access_token' )){
|
$access_token = $r->get('weixin_token:' . $gameid . ':' . $openid);
|
||||||
return S('access_token' );
|
if (!empty($access_token)) {
|
||||||
|
return $access_token;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$appid = SHAOWEI_APPID;
|
|
||||||
$appkey = PRIVATE_KEY;
|
$appid = WEIXIN_APP_ID;
|
||||||
$url = "https://api.weixing.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appkey";
|
$appkey = WEICIN_APP_SECRET;
|
||||||
|
$url = "https://api.weixin.qq.com/cgi-bin/token?" .
|
||||||
|
"grant_type=client_credential&appid=$appid&secret=$appkey";
|
||||||
|
$params = array();
|
||||||
$response = '';
|
$response = '';
|
||||||
|
|
||||||
if (!phpcommon\HttpClient::get($url, $params, $response)) {
|
if (!phpcommon\HttpClient::get($url, $params, $response)) {
|
||||||
phpcommon\sendError(ERR_RETRY, '系统繁忙');
|
phpcommon\sendError(ERR_INTERNAL, '系统繁忙');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$res = json_decode($response, true);
|
$res = json_decode($response, true);
|
||||||
if ( $res ) {
|
if ( $res ) {
|
||||||
S( 'access_token', $res ['access_token'],7100 );
|
$r->set('weixin_token:' . $gameid . ':' .
|
||||||
return S('access_token' );
|
$openid, $res['access_token']); //刚获取的token放到redis中
|
||||||
|
$r->pexpire('weixin_token:' . $openid, 7150); //微信限制过期时间为两小时
|
||||||
|
return $res['access_token'];
|
||||||
} else {
|
} else {
|
||||||
return 'api return error' ;
|
phpcommon\sendError(ERR_INTERNAL, '获取access_token失败');
|
||||||
|
die;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user