class PayPalApi20 extends DefaultApi20 {

    /** {@inheritDoc} */
    @Override
    public String getAuthorizationUrl(String responseType, String apiKey, String callback, String scope, String state,
            Map<String, String> additionalParams) {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override
    protected String getAuthorizationBaseUrl() {
        return "https://www.paypal.com/webapps/auth/protocol/openidconnect/v1/authorize";
    }

    /** {@inheritDoc} */
    @Override
    public String getAccessTokenEndpoint() {
        return "https://api.paypal.com/v1/identity/openidconnect/tokenservice";
    }
}

        CommonHelper.assertNotBlank("callback", callback,
            "Must provide a valid url as callback. PayPal does not support OOB");

        if (additionalParams == null) {
            additionalParams = new HashMap<>();
        }
        val nonce = System.currentTimeMillis() + CommonHelper.randomString(10);
        additionalParams.put("nonce", nonce);
        return super.getAuthorizationUrl(responseType, apiKey, callback, scope, state, additionalParams);
    
<methods>public void <init>() ,public com.github.scribejava.core.oauth.OAuth20Service createService(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.io.OutputStream, java.lang.String, com.github.scribejava.core.httpclient.HttpClientConfig, com.github.scribejava.core.httpclient.HttpClient) ,public abstract java.lang.String getAccessTokenEndpoint() ,public TokenExtractor<com.github.scribejava.core.model.OAuth2AccessToken> getAccessTokenExtractor() ,public com.github.scribejava.core.model.Verb getAccessTokenVerb() ,public java.lang.String getAuthorizationUrl(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, Map<java.lang.String,java.lang.String>) ,public com.github.scribejava.core.oauth2.bearersignature.BearerSignature getBearerSignature() ,public com.github.scribejava.core.oauth2.clientauthentication.ClientAuthentication getClientAuthentication() ,public java.lang.String getDeviceAuthorizationEndpoint() ,public com.github.scribejava.core.extractors.DeviceAuthorizationJsonExtractor getDeviceAuthorizationExtractor() ,public java.lang.String getRefreshTokenEndpoint() ,public java.lang.String getRevokeTokenEndpoint() <variables>