Exemple #1
0
 /**
  * 获取响应
  */
 public function doDelete()
 {
     $request = Http::get(self::DELETE_URL, array('query' => array('access_token' => $this->accessToken->getAccessToken())));
     $response = $request->json();
     if (array_key_exists('errcode', $response) && $response['errcode'] != 0) {
         throw new \Exception($response['errcode'] . ': ' . $response['errmsg']);
     }
     return true;
 }
Exemple #2
0
 /**
  * 授权回调(通过 Code 换取 Token)
  */
 public function getAccessToken($code)
 {
     $request = Http::get(self::ACCESS_TOKEN_URL, array('query' => array('appid' => $this->wechat['appid'], 'secret' => $this->wechat['appsecret'], 'code' => $code, 'grant_type' => 'authorization_code')));
     $response = $request->json();
     if (array_key_exists('access_token', $response) && array_key_exists('openid', $response)) {
         return $this->accessToken = new AccessToken($this->wechat, $response);
     }
     throw new \Exception($response['errcode'] . ': ' . $response['errmsg']);
 }
Exemple #3
0
 /**
  * 获取 AccessToken(从 API 获取)
  */
 protected function _getAccessToken()
 {
     $request = Http::get(self::ACCESS_TOKEN_URL, array('query' => array('grant_type' => 'client_credential', 'appid' => $this->wechat['appid'], 'secret' => $this->wechat['appsecret'])));
     $response = $request->json();
     if (array_key_exists('access_token', $response) && array_key_exists('expires_in', $response)) {
         return $response;
     }
     throw new \Exception($response['errcode'] . ': ' . $response['errmsg']);
 }
Exemple #4
0
 /**
  * 获取服务器 IP 列表
  */
 public function getServerIp()
 {
     $request = Http::get(self::SERVERIP_URL, array('query' => array('access_token' => $this->accessToken->getAccessToken())));
     $response = $request->json();
     if (array_key_exists('ip_list', $response)) {
         return $response['ip_list'];
     }
     throw new \Exception($response['errcode'] . ': ' . $response['errmsg']);
 }
Exemple #5
0
 /**
  * 获取 Ticket(从 API 获取)
  */
 protected function _getTicket($type)
 {
     $request = Http::get(self::TICKET_URL, array('query' => array('access_token' => $this->accessToken->getAccessToken(), 'type' => $type)));
     $response = $request->json();
     if (array_key_exists('ticket', $response) && array_key_exists('expires_in', $response)) {
         return $response;
     }
     throw new \Exception($response['errcode'] . ': ' . $response['errmsg']);
 }
Exemple #6
0
 /**
  * 构造方法
  */
 public function __construct(AccessToken $accessToken)
 {
     if (!$accessToken->isValid()) {
         $accessToken->refresh();
     }
     $request = Http::get(self::USERINFO_URL, array('query' => array('access_token' => $accessToken['access_token'], 'openid' => $accessToken['openid'])));
     $response = $request->json();
     if (array_key_exists('errcode', $response) && array_key_exists('errmsg', $response)) {
         throw new \Exception($response['errcode'] . ': ' . $response['errmsg']);
     }
     parent::__construct($response);
 }
Exemple #7
0
 /**
  * 构造方法
  */
 public function __construct(AccessToken $accessToken)
 {
     if (!$accessToken->isValid()) {
         $accessToken->refresh();
     }
     $request = Http::get(self::USERINFO_URL, array('query' => array('access_token' => $accessToken['access_token'], 'openid' => $accessToken['openid'])));
     $response = $request->json();
     if (array_key_exists('errcode', $response) && array_key_exists('errmsg', $response)) {
         throw new \Exception($response['errcode'] . ': ' . $response['errmsg']);
     }
     $required = array('openid', 'nickname', 'sex', 'language', 'city', 'province', 'country', 'headimgurl');
     $defined = array_merge($required, array('privilege', 'unionid'));
     $validator = new OptionValidator();
     $validator->setDefined($defined)->setRequired($required);
     $validated = $validator->validate($response);
     parent::__construct($validated);
 }
Exemple #8
0
 /**
  * 检测是否有效
  */
 public function isValid()
 {
     $request = Http::get(self::CHECK_URL, array('query' => array('access_token' => $this->options['access_token'], 'openid' => $this->options['openid'])));
     $response = $request->json();
     return $response['errmsg'] === 'ok';
 }
Exemple #9
0
 /**
  * 获取当前(已授权)用户信息
  */
 public function getUser($token)
 {
     $params = array('access_token' => $token->access_token, 'openid' => $token->openid);
     $response = Http::get(static::USERINFO_URL, $params);
     if (isset($response->openid) && isset($response->nickname) && isset($response->headimgurl)) {
         return $response;
     }
     throw new OAuthException($response->errcode . ': ' . $response->errmsg);
 }
Exemple #10
0
 /**
  * 获取微信服务器 IP
  */
 public function getServerIp()
 {
     try {
         $accessToken = $this->getAccessToken();
     } catch (AccessTokenException $e) {
         throw new WechatException($e->getMessage());
     }
     $params = array('access_token' => $accessToken);
     $response = Http::get(static::SERVERIP_URL, $params);
     if (isset($response->ip_list)) {
         return $response->ip_list;
     }
     throw new WechatException($response->errcode . ': ' . $response->errmsg);
 }