欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php實現(xiàn)paypal 授權(quán)登錄

 更新時間:2015年05月28日 15:10:27   投稿:hebedich  
本文給大家分享的是php實現(xiàn)的paypal授權(quán)登錄的代碼,十分的簡單實用,有需要的小伙伴可以參考下。

php實現(xiàn)paypal 授權(quán)登錄

<?php
 
/**
 * @project   paypal login
 * @author   jiangjianhe 
 * @date   2015-04-03
 */
 
 
class paypallogin
{
 
  //沙箱token鏈接
  private $_sanbox_oauth2_auth_uri = 'https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize';
  private $_live_oauth2_auth_uri = 'https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize';
   
  private $_acquire_user_profile_sandbox_url = 'https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/userinfo?schema=openid&access_token=';
  private $_acquire_user_profile_live_url = 'https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/userinfo?schema=openid&access_token=';
 
  //沙箱token鏈接
  private $_token_service_sandbox_url = 'https://www.sandbox.paypal.com/webapps/auth/protocol/openidconnect/v1/tokenservice'; 
  private $_token_service_live_url = 'https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/tokenservice';
  private $_sanbox_flag = true;
  private $_client_id = null;
  private $_client_secret = null;
  private $_redirect_uri = null;
  private $_state = '';
  private $_scope = 'openid email phone profile address https://uri.paypal.com/services/paypalattributes'; //scope 參數(shù)決定訪問令牌的訪問權(quán)限 各個參數(shù)詳解url;:https://www.paypal-biz.com/product/login-with-paypal/index.html#configureButton
 
  public $token = null;
  public $protocol = "http";
 
 
  /**
  * @name 構(gòu)造函數(shù)
  * @param $flag 是否沙箱環(huán)境
  */
  public function __construct($redirect_uri, $client_id,$client_secret,$scope,$state,$flag = true)
  {
    $this->_sanbox_flag = $flag;
    $this->_redirect_uri = $redirect_uri;
    $this->_client_id = $client_id;
    $this->_client_secret = $client_secret;
    $this->_scope = $scope;
    $this->_state = $state;
  }
 
  /**
   * 創(chuàng)建paypal request url
   * @return string
   */
  public function create_request_url()
  {
    $oauth2_auth_uri = $this->_sanbox_flag ? $this->_sanbox_oauth2_auth_uri :$this->_live_oauth2_auth_uri;
    $url = $oauth2_auth_uri.'?'.
    http_build_query(
      array(
        'client_id' => $this->_client_id, //通過應(yīng)用程序注冊流程獲得的唯一客戶端標(biāo)識符。必需。
        'response_type' =>'code', //表明授權(quán)代碼被發(fā)送回應(yīng)用程序返回URL。為了使訪問令牌在用戶代理中不可見, 建議使用<code>code</code>一值。如果您希望在響應(yīng)中同時收到授權(quán)代碼和 id_token ,請傳遞 code+id_token。另一個可能的 response_type 值是 token ——大部分由javascript和移動客戶端等公共客戶端使用。
        'scope' => $this->_scope,//;implode(',', $this->scope),
        'redirect_uri' => urlencode($this->_redirect_uri), //應(yīng)用程序的返回URL。結(jié)構(gòu)、主機名和端口必須與您在注冊應(yīng)用程序時設(shè)置的返回URL相符。
        'nonce' => time().rand(), //不透明的隨機標(biāo)識符,可減少重放攻擊風(fēng)險。簡單的函數(shù)是:(timestamp + Base64 encoding (random\[16\]))。
        'state' => $this->_state, // CSRF驗證碼
      )
    );
    return $url;
  }
 
  /**
   * get PayPal access token
   * @param string $code ?
   * @return string    access token
   */
  public function acquire_access_token($code ) {
    $accessToken = null;
 
    try {
      $postvals = sprintf("client_id=%s&client_secret=%s&grant_type=authorization_code&code=%s",$this->_client_id,$this->_client_secret,$code);
      if($this->_sanbox_flag)
        $ch = curl_init($this->_token_service_sandbox_url);
      else
        $ch = curl_init($this->_token_service_live_url); 
 
      $options = array(
        CURLOPT_POST      => 1,
        CURLOPT_VERBOSE    => 1,
        CURLOPT_POSTFIELDS   => $postvals,
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_SSL_VERIFYPEER => FALSE,
        //CURLOPT_SSLVERSION => 2
      );
 
      curl_setopt_array($ch, $options);
      $response = curl_exec($ch);
      $error = curl_error($ch);
 
      curl_close( $ch );
 
      if (!$response ) {
        throw new Exception( "Error retrieving access token: " . curl_error($ch));
      }
      $jsonResponse = json_decode($response );
 
      if ( isset( $jsonResponse->access_token) ) {
        $accessToken = $jsonResponse->access_token;
      }
 
    } catch( Exception $e) {
      throw new Exception($e->getMessage(), 1);
    }
 
    return $accessToken;
  }
 
  /**
   * get the PayPal user profile, decoded
   * @param string $accessToken
   * @return object
   */
  public function acquire_paypal_user_profile($accessToken ) {
    try {
      if($this->_sanbox_flag)
        $url = $this->_acquire_user_profile_sandbox_url . $accessToken;
      else
        $url = $this->_acquire_user_profile_live_url . $accessToken;  
 
      $ch = curl_init( $url );
      $options = array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_SSL_VERIFYPEER => FALSE,
        //CURLOPT_SSLVERSION => 2
      );
      curl_setopt_array($ch, $options);
 
      $response = curl_exec($ch);
      $error = curl_error( $ch);
      curl_close( $ch );
 
      if (!$response ) 
      {
        return false;
      }
      return json_decode($response);
    } catch( Exception $e ) {
      return false;
    }
  }
}
?>

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • yii的CURD操作實例詳解

    yii的CURD操作實例詳解

    這篇文章主要介紹了yii的CURD操作技巧,以實例形式詳細分析了基于yii框架的增刪改查的具體用法,非常具有實用價值,需要的朋友可以參考下
    2014-12-12
  • PHP常用正則表達式集錦

    PHP常用正則表達式集錦

    平時做網(wǎng)站經(jīng)常要用正則表達式,下面是一些講解和例子,僅供大家參考和修改使用:
    2014-08-08
  • 將文件夾壓縮成zip文件的php代碼

    將文件夾壓縮成zip文件的php代碼

    在php中生成zip其實很簡單,只要下面2步就能完成。
    2009-12-12
  • Yii框架安裝簡明教程

    Yii框架安裝簡明教程

    這篇文章主要介紹了Yii框架安裝方法,總結(jié)分析了Yii框架安裝的基本步驟、命令與相關(guān)操作注意事項,需要的朋友可以參考下
    2020-05-05
  • PHP使用FFmpeg獲取視頻播放總時長與碼率等信息

    PHP使用FFmpeg獲取視頻播放總時長與碼率等信息

    這篇文章給大家分享了利用PHP中的FFmpeg讀取視頻播放時長與碼率等信息,有需要的朋友們可以參考借鑒。下面來一起看看吧。
    2016-09-09
  • PHP網(wǎng)頁游戲?qū)W習(xí)之Xnova(ogame)源碼解讀(十六)

    PHP網(wǎng)頁游戲?qū)W習(xí)之Xnova(ogame)源碼解讀(十六)

    這篇文章主要介紹了PHP網(wǎng)頁游戲Xnova(ogame)源碼解讀的攻擊任務(wù)頁面的代碼流程,需要的朋友可以參考下
    2014-06-06
  • Yii1.0 不同頁面多個驗證碼的使用實現(xiàn)

    Yii1.0 不同頁面多個驗證碼的使用實現(xiàn)

    這篇文章主要介紹了Yii1.0 不同頁面多個驗證碼的使用實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • php生成html文件方法總結(jié)

    php生成html文件方法總結(jié)

    本文這里匯總了一些自己使用的和網(wǎng)上搜集來的php生成html靜態(tài)文件的方法,非常的使用,也分析了他們的優(yōu)缺點,是篇非常不錯的文章,這里推薦給大家。
    2014-12-12
  • PHP實現(xiàn)留言板功能的詳細代碼

    PHP實現(xiàn)留言板功能的詳細代碼

    這篇文章主要為大家詳細介紹了PHP實現(xiàn)留言板功能的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • WordPress中設(shè)置Post Type自定義文章類型的實例教程

    WordPress中設(shè)置Post Type自定義文章類型的實例教程

    這篇文章主要介紹了WordPress中設(shè)置Post Type自定義文章類型的實例教程,后臺文章類型的設(shè)置是WordPress的一大特色,然而自帶的文章類型往往并不夠用,需要的朋友可以參考下
    2016-05-05

最新評論