Per REST API - Bestellung auf Versendet stellen

Thema wurde von Richard_24, 16. April 2020 erstellt.

  1. Richard_24

    Richard_24 Erfahrener Benutzer

    Registriert seit:
    27. Dezember 2018
    Beiträge:
    117
    Danke erhalten:
    12
    Danke vergeben:
    34
    Hallo,

    ich möchte mir ersparen bei Klarna-Bestellungen Jedes Mal ins Backend zu gehen und per Statusänderung den Status auf Versendet zu stellen.

    Mit dieser Aktion wird Klarna mitgeteilt, dass die Ware versendet wurde, was Voraussetzung dazu ist, dass der Rechnungsbetrag auch an uns ausbezahlt wird.

    Ein reines Beschreiben der Datenbank hilft hier nicht, da der Übermittlungsprozess an Klarna "angestoßen" werden muss.

    Habe mich schon etwas in die API Methodik von Gambio eingelesen, API Calls nutzen wir auch für Ebay und Amazon, dass Ganze ist uns also nicht ganz fremd. Gibt es in Gambio überhaupt eine API Funktion für diesen Zweck oder gibt es eine Alternative?

    bestellungen_auf_versendet.jpg


    Viele Grüße - Richard
     
  2. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    Gibt es. Ich habe leider hier am Notebook nicht alle Infos dazu, aber hier die Dokumentation dazu:

    https://developers.gambio.de/docs/4...gx3-api/reference/orders/update-order-status/

    Du schickst also den CURL Befehl an die entsprechende Order, die Status ID für "versendet" hab ich auch nicht zur Hand, kannst Du aber auslesen mit:

    https://developers.gambio.de/docs/4.../reference/order-statuses/get-order-statuses/

    Morgen kann ich evtl. mehr dazu schreiben (wenn ich dran denke...).

    Über welche Software schickst Du die API Befehle?
     
  3. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    Ich weiss nicht ob Du es noch brauchst, aber das sind bei mir die vorinstallierten Order-Stat..i?usse? (was ist da noch mal die Mehrzahl?):
    Code:
    [
        {
            "id": 0,
            "names": {
                "EN": "Not validated",
                "DE": "Nicht best\u00e4tigt"
            },
            "color": "e0412c"
        },
        {
            "id": 1,
            "names": {
                "EN": "Pending",
                "DE": "Offen"
            },
            "color": "f5ae49"
        },
        {
            "id": 2,
            "names": {
                "EN": "Processing",
                "DE": "In Bearbeitung"
            },
            "color": "0c7fda"
        },
        {
            "id": 3,
            "names": {
                "EN": "Dispatched",
                "DE": "Versendet"
            },
            "color": "45a845"
        },
        {
            "id": 99,
            "names": {
                "EN": "Canceled",
                "DE": "Storniert"
            },
            "color": "e0412c"
        },
        {
            "id": 149,
            "names": {
                "EN": "Invoice created",
                "DE": "Rechnung erstellt"
            },
            "color": "45a845"
        },
        {
            "id": 150,
            "names": {
                "EN": "unknown",
                "DE": "unbekannt"
            },
            "color": "897b65"
        },
        {
            "id": 151,
            "names": {
                "EN": "pending",
                "DE": "ausstehend"
            },
            "color": "897b65"
        },
        {
            "id": 152,
            "names": {
                "EN": "completed",
                "DE": "abgeschlossen"
            },
            "color": "897b65"
        },
        {
            "id": 153,
            "names": {
                "EN": "partially_refunded",
                "DE": "teilerstattet"
            },
            "color": "897b65"
        },
        {
            "id": 154,
            "names": {
                "EN": "refunded",
                "DE": "erstattet"
            },
            "color": "897b65"
        },
        {
            "id": 155,
            "names": {
                "EN": "denied",
                "DE": "abgelehnt"
            },
            "color": "897b65"
        }
    ]
     
  4. Richard_24

    Richard_24 Erfahrener Benutzer

    Registriert seit:
    27. Dezember 2018
    Beiträge:
    117
    Danke erhalten:
    12
    Danke vergeben:
    34
    Vielen Dank für die Antwort!

    Den Bestellstatus kann ich programmatisch schon ändern.


    upload_2020-4-20_16-13-47.png
    Ich will das ganze mal durchspielen.
    Ich habe für eine Bestellung auf "Status ändern" geklickt.
    Daraufhin öffnet sich das obige Menü.
    Den neuen Bestellstatus habe ich auf "Versendet" geändert.
    Und "Klarna benachrichtigen" habe ich angehakt.
    Wenn ich jetzt auf den Button "Ausführen" klicke, dann geschieht meines Verständnis nach folgendes:

    1. In der Datenbank-Tabelle "orders" wird das "orders-status" Feld der ausgewählten Bestellung auf 3 geupdated.
    2. An Klarna wird eine Nachricht übermittelt, dass der Status der Bestellung jetzt "Versendet" ist.

    MIt 1. habe ich keine Probleme. Ich kann die Tabellen der Datenbank beliebig updaten.

    Mein Problem ist 2. Ich habe leider keine Ahnung wie ich über die api (oder auch mit einer PHP-Datei) eine Nachricht mit dem neuen Bestellstatus übermitteln kann.

    Der Punkt ist, ich will den Klick auf Ausführen nicht händisch machen, sondern programmatisch simulieren.

    Mit freundlichen Grüßen

    Robin Schwab
     
  5. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.670
    Danke erhalten:
    1.264
    Danke vergeben:
    300
    @Richard_24 Wenn du das über die REST-API machst, dann brauchst du weder den 1. noch den 2. Schritt machen, sondern nur ein Request an den Endpunkt (Link nur für registrierte Nutzer sichtbar.)
    Der Shop macht dann genau das was du auch in der Datenbank machts und sendet auch automatisch den Status an Klarna. Zudem muss im Klarna-Modul die Funktion "Automatische Statusaktualisierung" (ERP-Integration) an sein, damit dies möglich ist.
     
  6. Richard_24

    Richard_24 Erfahrener Benutzer

    Registriert seit:
    27. Dezember 2018
    Beiträge:
    117
    Danke erhalten:
    12
    Danke vergeben:
    34
    Auch dir vielen Dank für die Antwort!

    die Funktion im Klarna-Modul "Automatische Statusaktualisierung" ist aktiv.

    Ich habe jetzt einmal folgenden Code für eine Klarna-Bestellung ausprobiert:

    <?php

    $curl = curl_init();


    curl_setopt_array($curl, array(

    CURLOPT_URL => "https://www.schilderhimmel.de/api.php/v2/orders/401137/status",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "PATCH",
    CURLOPT_POSTFIELDS => "{\"id\":401137,\"statusId\":3,\"dateAdded\":\"2020-01-01 12:12:12\",\"comment\":\"test\",\"customerNotified\":false}",
    CURLOPT_HTTPHEADER => array(

    "authorization: Basic meinToken",
    "content-type: application/json"

    ),

    ));

    $response = curl_exec($curl);

    $err = curl_error($curl);

    curl_close($curl);


    if ($err) {

    echo "cURL Error #:" . $err;
    } else {
    echo $response;
    }

    Damit habe ich den Order Status der Bestellung erfolgreich ändern können. Die Datenbank wurde geupdatet und auch im Gambio-Backend wird die Bestellung als versendet angezeigt.

    Nur bei Klarna wurde die Anzahl der erfassten Bestellungen nicht geupdatet.

    Am 16. April hatten wir vier Klarna-Bestellungen.
    upload_2020-4-21_14-40-7.png
    Den Bestellstatus von zwei dieser Bestellungen haben wir damit geupdatet.
    upload_2020-4-21_14-38-16.png
    Diese beiden Bestellungen sind auch bei Klarna erfasst.
    Die Bestellung, die ich mit der API geupdatet habe, ist leider nicht erfasst wurden.
    upload_2020-4-21_14-41-36.png
    Es müssten drei erfasste Bestellungen sein, sind aber nur zwei (die händisch gemachten).

    Ich habe eine Idee bezüglich des Problems. Der momentane API-Code macht das selbe wie das händische Updaten des Bestellstatus außer, dass Klarna nicht benachrichtigt wird.
    upload_2020-4-21_14-47-31.png
    Im API-Code wird an einer Stelle angegeben, dass der Kunde nicht benachrichtigt werde soll:
    customerNotified\":false
    Ich denke es müsste auch einen solchen Befehl für Klarna geben, den ich auf true setzten kann.
    So was wie.
    KlarnaNotified:true

    Mit freundlichen Grüßen

    Robin Schwab


     
  7. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Nein, wenn im Klarna Modul der Haken für den ERP Modus an ist passiert das normal unabänderbar immer bei Status Änderungen per API in die relevanten Status.
     
  8. Richard_24

    Richard_24 Erfahrener Benutzer

    Registriert seit:
    27. Dezember 2018
    Beiträge:
    117
    Danke erhalten:
    12
    Danke vergeben:
    34
    Hmmm,

    weiss vielleicht noch jemand Rat, weshalb das nicht geht ? Oder eine andere Möglichkeit?

    Viele Grüße - Richard