2016-12-19 3 views
3

Ich versuche ein PayPal-Abonnement auf Google App Engine mit dem PayPal-Java-SDK zu erstellen. Ich habe eine geringfügige Variation des Codes in diesem link implementiert, aber ich bekomme die Ausnahme unten beim Aufruf des Plan.update nach dem Erstellen des PATCH-Objekts.PayPal-Java-SDK & Google App Engine - Abonnement Reflection Error

java.lang.SecurityException: java.lang.IllegalAccessException: Reflection is not allowed on protected java.lang.String java.net.HttpURLConnection.method 

Nach dem Code zu aktualisieren verwenden "context.usingGoogleAppEngine (true);", bekomme ich eine neue Nachricht:

Invalid HTTP method: PATCH 

So bin assuimg ich die usingGoogleAppEngine die Verwendung von Reflection deaktiviert, aber immer noch erlaubt den PATCH-Vorgang nicht, der erforderlich ist, um den Status des Zahlungsplans in PayPal zu ändern. Hier

ist der Codeblock:

public Plan update(APIContext context, Plan plan) throws PayPalRESTException, IOException 
{ 
    List<Patch> patchRequestList = new ArrayList<Patch>(); 
    Map<String, String> value = new HashMap<String, String>(); 
    value.put("state", "ACTIVE"); 

    Patch patch = new Patch(); 

    patch.setPath("/"); 
    patch.setValue(value); 
    patch.setOp("replace"); 
    patchRequestList.add(patch); 

    try{ 
     plan.update(context, patchRequestList); 
    } 
    catch (PayPalRESTException e) { 
     log.warning("PayPalRESTException!: " + e.getMessage()); 
    } 
    System.out.println("updated. now returning."); 

    return plan; 
} 

Schließlich habe ich ein Problem im Protokoll mit dem SDK here

+0

Ich war das sehr offensichtlich fehlt "context.usingGoogleAppEngine (true);" Methode, bevor Sie die Anrufe tätigen. Wenn Sie das jetzt hinzufügen, wirft das Programm einen weiteren Fehler auf, den ich jetzt erforsche: "Ungültige HTTP-Methode: PATCH" –

+0

Zeigt der Stack-Trace den Fehler von GoogleAppEngineHttpConnection.java oder DefaultHttpConnection.java? [Die Javadoc Staaten] (https://github.com/paypal/PayPal-Java-SDK/blob/master/rest-api-sdk/src/main/java/com/paypal/base/GoogleAppEngineHttpConnection.java) "In Um diese Funktion zu aktivieren, legen Sie "http.GoogleAppEngine = true" in der SDK-Konfigurationsdatei fest. Daher benötigen Sie möglicherweise diesen zusätzlichen Schritt, um die korrekte HttpConnection-Klasse in App Engine zu verwenden. – Adam

Antwort

-1

Ich habe keine Import-Anweisung für Patch in Ihrer git Hub-Datei. Können Sie bitte versuchen, Patch von PayPal-Paket zu importieren.