php 위 챗 openid 획득 방법 요약

5346 단어 phpopenid
위 챗 인 터 페 이 스 를 사용 하면 자동 로그 인 이 든 위 챗 결제 든 우리 가 먼저 받 아야 할 것 은 openid 입 니 다.openid 를 얻 는 방식 은 두 가지 가 있 습 니 다.하 나 는 관심 을 가 질 때 얻 는 것 입 니 다.이런 구독 번 호 는 얻 을 수 있 습 니 다.두 번 째 는 웹 페이지 권한 수 여 를 통 해 얻 는 것 입 니 다.이런 획득 에 필요 한 것 은 인증 서비스 번호 입 니 다.
오늘 내 가 말 하고 자 하 는 것 은 두 번 째 웹 페이지 에서 openid 를 얻 을 수 있 는 권한 을 부여 하 는 것 이다.다음은 제 가 쓴 openid 가 져 오기 클래스 입 니 다.

<?php

/**

 *         

 * 

 * @link http://www.phpddt.com

 */

class Wchat

{

   private $app_id = 'wx444444444444';

   private $app_secret = '77777777';

   private $state='aaaa';

  /**

   *         

   * 

   * @param string $redirect_uri     

   * @param mixed $state   

   */

  public function get_authorize_url($redirect_uri = '', $state = '')

  {

    $redirect_uri = urlencode($redirect_uri);

    return "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";

  }

   /**

   *     openid

   */

  public function getOpenid($turl)

  {

    if (!isset($_GET['code'])){

      //      code 

       

       $url=$this->get_authorize_url($turl, $this->state);

       

      Header("Location: $url");

      exit();

    } else {

      //  code ,   openid

      $code = $_GET['code'];

      $access_info = $this->get_access_token($code);

      return $access_info;

    }

     

  }

  /**

   *     token    

   * 

   * @param string $code   get_authorize_url    code

   */

  public function get_access_token($code = '')

  {

   $appid=$this->app_id;

   $appsecret=$this->app_secret;

    

    $token_url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appid."&secret=".$appsecret."&code=".$code."&grant_type=authorization_code";

    //echo $token_url;

    $token_data = $this->http($token_url);

    // var_dump( $token_data);

    if($token_data[0] == 200)

    {

      $ar=json_decode($token_data[1], TRUE);

      return $ar;

    }

     

    return $token_data[1];

  }

   

   

  public function http($url, $method='', $postfields = null, $headers = array(), $debug = false)

  {

    $ci = curl_init();

    /* Curl settings */

    curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);

    curl_setopt($ci, CURLOPT_TIMEOUT, 30);

    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);

 

    switch ($method) {

      case 'POST':

        curl_setopt($ci, CURLOPT_POST, true);

        if (!empty($postfields)) {

          curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);

          $this->postdata = $postfields;

        }

        break;

    }

    curl_setopt($ci, CURLOPT_URL, $url);

    curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);

    curl_setopt($ci, CURLINFO_HEADER_OUT, true);

 

    $response = curl_exec($ci);

    $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);

 

    if ($debug) {

      echo "=====post data======\r
"; var_dump($postfields); echo '=====info=====' . "\r
"; print_r(curl_getinfo($ci)); echo '=====$response=====' . "\r
"; print_r($response); } curl_close($ci); return array($http_code, $response); } } ?>
getOpenid($turl)이 방법 은 openid 를 가 져 오 는 방법 입 니 다.전단 호출 코드 는 다음 과 같 습 니 다.

$openid=isset($_COOKIE['openid'])?$_COOKIE['openid']:'';

  

   if(empty($openid))

   {

     $wchat=new wchat();

     $t_url='http://'.$_SERVER['HTTP_HOST'].'/user.php?act=register';

      

     $info=$wchat->getOpenid($t_url);

      

     if($info){

        $openid=$info['openid'];

      setcookie('openid',$openid,time()+86400*30);  

        

     }

      

   }
이상 은 제 가 정리 한 openid 를 얻 는 방법 입 니 다.
이상 은 php 가 위 챗 openid 를 가 져 오 는 상세 한 내용 입 니 다.다른 관련 글 에 관심 을 가 져 주 십시오!

좋은 웹페이지 즐겨찾기