Paypal Rest API mit Java

jimb0p

Erfahrenes Mitglied
Hallo Zusammen,

versuche aktuell vergebens die erste Verbindung zur Paypal API aufzubauen. Wie hier beschrieben, habe ich versucht den curl Request mit der Apache http Library abzusetzen. Dies sieht aktuell so aus:

Java:
private static HttpResponse connectToPayPal(String customUrl) throws Exception {
        HttpClient client = HttpClientBuilder.create().build();
        HttpPost request = new HttpPost(customUrl);
        request.addHeader("Accept", "application/json");
        request.addHeader("Accept-Language", "en_US");
        request.addHeader(clientId, secret);
        request.setEntity(new ByteArrayEntity("grant_type=client_credentials".getBytes("UTF-8")));
        return client.execute(request);
    }

Habe schon mehrere Varianten durch, ist es mit dem HttpClient überhaupt ein guter Weg?

Bekomme immer folgende Response:

Code:
{"error":"invalid_client","error_description":"Client credentials are missing"}

Bin gespannt wie die korrekte Lösung aussieht :)

Beste Grüße!
 
Hallo jimb0p

Bei client_credentials OAuth 2 werden client_id und client_secret als basic authorization übergeben.
request.addHeader(clientId, secret);

Müsste so sein (Pseudocode):
addHeader("Authorization", "Basic " + Base64(client_id + ":" + client_secret))

Viele Grüsse
Cromon
 
Hi Cromon,

das hat soweit funktioniert, habe mich nun aber für das Paypal SDK entschieden, da es deutlich komfortabler ist und nicht so viel Schreibarbeit fordert. Allerdings habe ich das Problem das ich obwohl die sdk_config.properties konfiguriert ist ich immer folgende Exception bekomme:

SCHWERWIEGEND: Error Message : No API accounts have been configured in application properties

Habe das properties File nach der Vorlage konfiguriert:

Code:
http.ConnectionTimeOut=5000
http.Retry=1
http.ReadTimeOut=30000
http.MaxConnection=100

# HTTP Proxy configuration
# If you are using proxy set http.UseProxy to true and replace the following values with your proxy parameters
http.ProxyPort=8080
http.ProxyHost=127.0.0.1
http.UseProxy=false
http.ProxyUserName=null
http.ProxyPassword=null

#Set this property to true if you are using the PayPal SDK within a Google App Engine java app
http.GoogleAppEngine = false

# Service Configuration
service.EndPoint=https://api.sandbox.paypal.com
# Live EndPoint
# service.EndPoint=https://api.paypal.com

# Credentials
clientId=ID
clientSecret=SECRET

# Webhook Validation
#webhook.trustCert=DigiCertSHA2ExtendedValidationServerCA.crt

Muss die ID und das Secret hier eventuell auch vorher noch angepackt werden? Habe es nämlich so wie im Backend einfach eingefügt. Aus der Doku geht das leider nicht hervor.
 
Nach langem Probieren, lag der Fehler darin, dass man selbst wenn man die Einstellung über eine Hashmap übergibt, man dennoch die .properties einbinden muss. Bisschen strange das ganze. Allerdings läuft es dann.
 

Neue Beiträge

Zurück