/** * @descrpition 获取微信ACCESS_TOKEN * @return Ambigous|bool */ public static function getAccessToken() { $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . WECHAT_APPID . '&secret=' . WECHAT_APPSECRET; $accessToken = CurlBusiness::callWebServer($url, '', 'GET'); if (!isset($accessToken['access_token'])) { return MsgCommon::returnErrMsg(MsgConstant::ERROR_GET_ACCESS_TOKEN, '获取ACCESS_TOKEN失败'); } $accessToken['time'] = time(); //存入SESSION Response::setSession('wechat_access_token', $accessToken); return $accessToken; }
/** * Description: 通过code换取网页授权access_token * 首先请注意,这里通过code换取的网页授权access_token,与基础支持中的access_token不同。 * 公众号可通过下述接口来获取网页授权access_token。 * 如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。 * @param $code getCode()获取的code参数 */ public static function getAccessTokenAndOpenId($code) { //公众号的唯一标识 $appid = WECHAT_APPID; //公众号的appsecret $secret = WECHAT_APPSECRET; //填写为authorization_code $grant_type = 'authorization_code'; //构造请求微信接口的URL $url = 'https://api.weixin.qq.com/sns/oauth2/access_token?appid=' . $appid . '&secret=' . $secret . '&code=' . $code . '&grant_type=' . $grant_type . ''; //请求微信接口, Array(access_token, expires_in, refresh_token, openid, scope) return CurlBusiness::callWebServer($url); }
/** * @descrpition 从微信服务器获取微信ACCESS_TOKEN * @return Ambigous|bool */ private function _getAccessToken() { $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . WECHAT_APPID . '&secret=' . WECHAT_APPSECRET; $accessToken = CurlBusiness::callWebServer($url, '', 'GET'); if (!isset($accessToken['access_token'])) { return Msg::returnErrMsg(MsgConstant::ERROR_GET_ACCESS_TOKEN, '获取ACCESS_TOKEN失败'); } $accessToken['time'] = time(); $accessTokenJson = json_encode($accessToken); //存入数据库 /** * 这里通常我会把access_token存起来,然后用的时候读取,判断是否过期,如果过期就重新调用此方法获取,存取操作请自行完成 * * 请将变量$accessTokenJson给存起来,这个变量是一个字符串 */ return $accessToken; }
/** * @descrpition 图文 - 先调用self::newsItem()再调用本方法 * @param $tousername * @param $item 数组,每个项由self::newsItem()返回 * @return string */ public static function news($tousername, $item) { //获取ACCESS_TOKEN $accessToken = AccessToken::getAccessToken(); self::$queryUrl = self::$queryUrl . $accessToken; //开始 $template = array('touser' => $tousername, 'msgtype' => 'news', 'news' => array('articles' => $item)); $template = json_encode($template); return CurlBusiness::callWebServer(self::$queryUrl, $template, self::$action); }