diff --git a/webapp/controller/KefuController.class.php b/webapp/controller/KefuController.class.php index a2d25c2..659fb67 100644 --- a/webapp/controller/KefuController.class.php +++ b/webapp/controller/KefuController.class.php @@ -227,12 +227,17 @@ class KefuController { } $ret_info = json_decode($response, true); error_log(json_encode($response)); - if (isset($ret_info['errcode']) && ($ret_info['errcode'] == 40001 || $ret_info['errcode'] == 40003)) { + if (isset($ret_info['errcode']) && ($ret_info['errcode'] == 40001 || $ret_info['errcode'] == 40003 || $ret_info['errcode'] == 41001)) { + if ($ret_info['errcode'] == 40003) { + //无效的openid,(更换appid appkey导致之前的openid失效) + //从db里删除这种过期的openid + return true; + } error_log('重新获取access_token'); $r = $this->getRedis($gameid); $r->del('kf_token:' . $gameid . ':'); $access_token = $this->getAccessToken($gameid); - $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=$access_token"; + $url = "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=". urlencode($access_token); $response = ''; error_log(json_encode($data, JSON_UNESCAPED_UNICODE)); @@ -243,6 +248,7 @@ class KefuController { phpcommon\sendError(ERR_RETRY, '系统繁忙'); return; } + error_log('retry:' . $response); $ret_info = json_decode($response, true); } return !empty($ret_info) && $ret_info['errcode'] == 0; @@ -402,6 +408,7 @@ class KefuController { $r->pexpire('kf_token:' . $gameid . ':', 1000 * ($respobj['expires_in'] - 60 * 1)); return $respobj['access_token']; } else { + error_log('getAccessToken:' . $response); return ''; } }