最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

  • php 無限級數(shù)據(jù)JSON格式及JS解析

    php 無限級數(shù)據(jù)JSON格式及JS解析

    公司要做個Flash效果的頁面,需要個無限級樹,顯示用戶邀請的好友及其下線,由此就構(gòu)成了無限級的關(guān)系,可能下線有無限多。
    2010-07-07
  • php生成圖片驗證碼-附五種驗證碼

    php生成圖片驗證碼-附五種驗證碼

    這篇文章主要給大家講解php生成圖片驗證碼,包括數(shù)字驗證碼、數(shù)字和字母驗證碼、中文驗證碼、仿google驗證碼、算術(shù)驗證碼,實現(xiàn)此功能主要通過GD庫,生成一張帶有驗證碼的圖片,并把驗證碼存在session中,本文講解的比較全面,需要的朋友可以參考下
    2015-08-08
  • 通過5個php實例細(xì)致說明傳值與傳引用的區(qū)別

    通過5個php實例細(xì)致說明傳值與傳引用的區(qū)別

    今天有個同事問我傳值和傳引用有什么不同,這讓我想起了,剛學(xué)php的時候,那個時候做過很多項目,做東西多,就以為自己php掌握的差不多了,隨著時間的推移,越深入的學(xué)習(xí),越覺得自己知道的真的很少,很少
    2012-08-08
  • Laravel中的where高級使用方法實例講解

    Laravel中的where高級使用方法實例講解

    這篇文章主要介紹了Laravel中的where高級使用方法實例講解,有對于laravel中的sql中高級用法感興趣的同學(xué)可以看看文中的實例學(xué)習(xí)下
    2021-03-03
  • Laravel5.1 框架模型創(chuàng)建與使用方法實例分析

    Laravel5.1 框架模型創(chuàng)建與使用方法實例分析

    這篇文章主要介紹了Laravel5.1 框架模型創(chuàng)建與使用方法,結(jié)合實例形式分析了laravel5.1框架模型的原理、創(chuàng)建、更新、獲取等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • php反射應(yīng)用示例

    php反射應(yīng)用示例

    這篇文章主要介紹了php反射應(yīng)用示例,需要的朋友可以參考下,代碼很簡單,直接看下面的代碼吧
    2014-02-02
  • ThinkPHP結(jié)合AjaxFileUploader實現(xiàn)無刷新文件上傳的方法

    ThinkPHP結(jié)合AjaxFileUploader實現(xiàn)無刷新文件上傳的方法

    這篇文章主要介紹了ThinkPHP結(jié)合AjaxFileUploader實現(xiàn)無刷新文件上傳的方法,是ThinkPHP文件上傳中一個比較典型的應(yīng)用技巧,非常具有實用價值,需要的朋友可以參考下
    2014-10-10
  • Symfony查詢方法實例小結(jié)

    Symfony查詢方法實例小結(jié)

    這篇文章主要介紹了Symfony查詢方法,結(jié)合實例形式總結(jié)分析了createQuery與getQuery查詢數(shù)據(jù)的具體使用技巧,需要的朋友可以參考下
    2017-06-06
  • php實現(xiàn)mysql數(shù)據(jù)庫備份類

    php實現(xiàn)mysql數(shù)據(jù)庫備份類

    備份程序一共只有兩個類:數(shù)據(jù)庫備份器(DbBak)和表備份器(TableBak): 這個程序僅僅備份和恢復(fù)數(shù)據(jù),使用方法很簡單,實例化DbBak,然后調(diào)用bakupDb和restoreDb方法:
    2008-03-03
  • Laravel框架驗證碼類用法實例分析

    Laravel框架驗證碼類用法實例分析

    這篇文章主要介紹了Laravel框架驗證碼類用法,結(jié)合實例形式分析了Laravel框架驗證碼類的使用操作技巧與相關(guān)注意事項,需要的朋友可以參考下
    2019-09-09

最新評論

奉节县| 顺平县| 清远市| 淮阳县| 南通市| 拉萨市| 贵州省| 无锡市| 井冈山市| 凌云县| 长泰县| 玛曲县| 钟祥市| 台前县| 多伦县| 龙海市| 家居| 天峻县| 交城县| 温州市| 象州县| 鹤壁市| 巫溪县| 河北区| 久治县| 昌宁县| 丰镇市| 崇阳县| 盐山县| 中西区| 万盛区| 娄烦县| 博爱县| 运城市| 扶沟县| 桓台县| 金乡县| 客服| 桦甸市| 利川市| 英山县|