public static getAuthorizationUrl ( string $redirectUri, array $scope, string $clientId, null $nonce = null, null $state = null, |
||
$redirectUri | string | Uri on merchant website to where the user must be redirected to post paypal login |
$scope | array | The access privilges that you are requesting for from the user. Pass empty array for all scopes. |
$clientId | string | client id from developer portal See https://developer.paypal.com/webapps/developer/docs/integration/direct/log-in-with-paypal/detailed/#attributes for more |
$nonce | null | |
$state | null | |
$apiContext | Optional API Context | |
리턴 | string | Authorization URL |
public static function getAuthorizationUrl($redirectUri, $scope, $clientId, $nonce = null, $state = null, $apiContext = null)
{
$apiContext = $apiContext ? $apiContext : new ApiContext();
$config = $apiContext->getConfig();
if ($apiContext->get($clientId)) {
$clientId = $apiContext->get($clientId);
}
$clientId = $clientId ? $clientId : $apiContext->getCredential()->getClientId();
$scope = count($scope) != 0 ? $scope : array('openid', 'profile', 'address', 'email', 'phone', 'https://uri.paypal.com/services/paypalattributes', 'https://uri.paypal.com/services/expresscheckout');
if (!in_array('openid', $scope)) {
$scope[] = 'openid';
}
$params = array('client_id' => $clientId, 'response_type' => 'code', 'scope' => implode(" ", $scope), 'redirect_uri' => $redirectUri);
if ($nonce) {
$params['nonce'] = $nonce;
}
if ($state) {
$params['state'] = $state;
}
return sprintf("%s/signin/authorize?%s", self::getBaseUrl($config), http_build_query($params));
}
/** * @test */ public function testLoginWithCustomConfig() { $redirectUri = 'http://mywebsite.com'; $scope = array('this', 'that', 'and more'); $expectedBaseUrl = "https://www.paypal.com/signin/authorize"; $this->assertEquals($expectedBaseUrl . "?client_id=DummyId&response_type=code&scope=this+that+and+more+openid&redirect_uri=" . urlencode($redirectUri), OpenIdSession::getAuthorizationUrl($redirectUri, $scope, "DummyId", null, null, $this->context), "Failed case - custom config"); }