php实现paypal 授权登录_php实例

php实现paypal 授权登录

<?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 参数决定访问令牌的访问权限 各个参数详解url;:https://www.paypal-biz.com/product/login-with-paypal/index.html#configureButton

  public $token = null;
  public $protocol = "http";

  /**
  * @name 构造函数
  * @param $flag 是否沙箱环境
  */
  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;
  }

  /**
   * 创建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, //通过应用程序注册流程获得的唯一客户端标识符。必需。
        'response_type' =>'code', //表明授权代码被发送回应用程序返回URL。为了使访问令牌在用户代理中不可见, 建议使用<code>code</code>一值。如果您希望在响应中同时收到授权代码和 id_token ,请传递 code+id_token。另一个可能的 response_type 值是 token ——大部分由javascript和移动客户端等公共客户端使用。
        'scope' => $this->_scope,//;implode(',', $this->scope),
        'redirect_uri' => urlencode($this->_redirect_uri), //应用程序的返回URL。结构、主机名和端口必须与您在注册应用程序时设置的返回URL相符。
        'nonce' => time().rand(), //不透明的随机标识符,可减少重放攻击风险。简单的函数是:(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;
    }
  }
}
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php
, paypal
授权登录
java实现微信授权登录、php实现微信授权登录、订阅号实现授权登录、paypal未经授权、paypal授权,以便于您获取更多的相关知识。

时间: 2024-09-19 08:57:08

php实现paypal 授权登录_php实例的相关文章

php实现paypal 授权登录

  本文给大家分享的是php实现的paypal授权登录的代码,十分的简单实用,有需要的小伙伴可以参考下. php实现paypal 授权登录 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 6

PHP+Ajax验证码验证用户登录_php实例

用AJAX 验证用户登录的一个好处是不刷新跳转页面,外加用到验证码就更安全了,摸索的写了下.一共用到三个文件: yz.php:  生成验证码的PHP 文件,将验证码将在SESSION 里,供登录时对比调用index.php: 用户登录的HTML 文件loginCheck.php: 验证用户登录的文件 下面一一解析:yz.php 文件 <?php session_start(); //生成验证码图 Header("Content-type: image/PNG"); //长与宽 $

Laravel实现用户注册和登录_php实例

Laravel身为最优雅的PHP框架,很多学习PHP的小伙伴造就对Laravel垂涎欲滴.今天就来实现你的愿望,让我们一起从零开始,利用Laravel实现Web应用最常见的注册和登录功能!所有的课程源码已放在Github上:laravel-start. Race Start ! 首先我们来明确一下我们这个课程需要的东西: Laravel 4.2 Bootstrap 3.3 Laravel就是我们关心的核心部分,Bootstrap用来快速设置一些前端的CSS样式. 1.安装Laravel 简单说明

phpMyAdmin安装并配置允许空密码登录_php实例

下载phpMyAdmin,解压到apache的web目录中 http://www.phpmyadmin.net/ 访问 http://127.0.0.1/phpMyAdmin/index.php 用数据库的用户名和密码即可登录. 如果出现"空密码登录被禁止 (参见 允许空密码)"的错误提示,其解决方法如下: 1. 将phpMyAdmin目录下的 config.sample.inc.php 复制一份改名为 config.inc.php 2. 将下面的键的值改为 true 即可. 复制代码

weiphp微信公众平台授权设置_php实例

weiphp后台使用设置 实现在用户授权时候显示公众号的名字以及分享使用该服务号 使用步骤 1:在weiphp后台打开公众号管理-新增 2:输入公众号名字,原始ID,微信号 3:在这里公众号能查找到 4: 输入完成之后下一步,他会提供URL和token令牌.然后就要在微信公众号后台配置 6输入完成之后我,记录下key,appid和appSecret,输入在这里 7:按保存了之后, 在右上角选中你刚填写的服务号信息切换为当前公众号 8:打开基础插件-自定义菜单-新增 如果新增成功, 则保存成功,如

discuz免激活同步登入代码修改方法(discuz同步登录)_php实例

复制代码 代码如下: //打开discuz/api/uc.php//synlogin方法(180行)处,往下找到if(($member = getuserbyuid($uid, 1))) {    dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);} //改为if(($member = getuserbyuid($uid, 1))) {    dsetcookie

基于CI框架的微信网页授权库示例_php实例

本文实例讲述了基于CI框架的微信网页授权库.分享给大家供大家参考,具体如下: 这里演示建立在CI框架上的微信网页授权功能. 1. 微信小类库,网页授权放置在libraries文件夹 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); Class Weixin { private $appId; private $appSecret; function __construct() { $this->

PHP Curl模拟登录微信公众平台、新浪微博实例代码_php实例

使用curl之前先打开curl配置,具体方式百度一下就知道,开启curl扩展.密码用md5加密,这是经过测试成功的,把用户跟密码改成你的就行了. 下面一段代码给大家介绍php使用curl模拟登录微信公众平台,具体代码如下所示: <?php //模拟微信登入 $cookie_file = tempnam('./temp','cookie'); $login_url = 'https://mp.weixin.qq.com/cgi-bin/login'; $pwd = md5("********

Yii中实现处理前后台登录的新方法_php实例

本文实例讲述了Yii中实现处理前后台登录的新方法.分享给大家供大家参考,具体如下: 因为最近在做一个项目涉及到前后台登录问题,我是把后台作为一个模块(Module)来处理的.我看很多人放两个入口文件index.php和admin.php,然后分别指向前台和后台.这种方法固然很好,可以将前后台完全分离,但我总觉得这种方式有点牵强,这和两个应用啥区别?还不如做两个App用一个framework更好.而且Yii官方后台使用方法也是使用Module的方式.但是Moudle的方式有一个很头疼的问题,就是在