package org.pac4j.scribe.builder.api;
import com.github.scribejava.core.builder.api.DefaultApi20;
import com.github.scribejava.core.model.OAuthConfig;
import com.github.scribejava.core.utils.OAuthEncoder;
import com.github.scribejava.core.utils.Preconditions;
import java.util.Map;
import org.pac4j.core.util.CommonHelper;
/**
* This class represents the OAuth API implementation for PayPal. It could be part of the Scribe library.
*
* <p>More information at https://developer.paypal.com/docs/api/#identity</p>
*
* @author Jerome Leleu
* @since 1.4.2
*/
public class PayPalApi20 extends DefaultApi20 {
private static final String AUTHORIZATION_URL = "https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize?client_id=%s&redirect_uri=%s&scope=%s&response_type=code&nonce=%s";
@Override
public String getAuthorizationUrl(final OAuthConfig config, Map<String, String> additionalParams) {
Preconditions.checkValidUrl(config.getCallback(),
"Must provide a valid url as callback. PayPal does not support OOB");
final String nonce = System.currentTimeMillis() + CommonHelper.randomString(10);
return String.format(AUTHORIZATION_URL, config.getApiKey(), OAuthEncoder.encode(config.getCallback()),
(config.getScope()!=null)?OAuthEncoder.encode(config.getScope()):"", nonce);
}
@Override
protected String getAuthorizationBaseUrl() {
return "https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize";
}
@Override
public String getAccessTokenEndpoint() {
return "https://api.paypal.com/v1/identity/openidconnect/tokenservice";
}
}