Artikelliste von externer Webseite in den Warenkorb legen

Thema wurde von Peter Müller, 3. Februar 2019 erstellt.

  1. Peter Müller

    Peter Müller Erfahrener Benutzer

    Registriert seit:
    12. Januar 2019
    Beiträge:
    106
    Danke erhalten:
    18
    Danke vergeben:
    51
    Könnte man von einer externen Webseite einen Warenkorb übernehmen, den der Kunde dann selbst bearbeiten kann und die Bestellung auslösen kann?
    Folgender Hintergrund. Eine Webseite eines NGO generiert nach Kriterien des Kunden (Region, Boden, Standort etc.) eine Liste von Wildpflanzen als Empfehlung zur Bepflanzung eines naturnahen Gartenbeetes. Auf der Webseite des NGO sollte ein Button sein, mit dem der Kunde diese Auswahl als Warenkorb in den biopflanzen.shop übernimmt und dort dann die Bestellung auslösen kann.
    Zuvorderst möchte ich gerne wissen, ob das überhaupt möglich ist (habe Dienstag ein Gespräch in der Sache) und als nächstes, wer so etwas realisieren könnte.
    Für jegliche Hinweise wäre ich echt dankbar.
    So etwas ähnliches habe ich in diesem Threat gefunden:
    https://www.gambio.de/forum/threads/externer-artikel-in-den-warenkorb.36412/
    aber ich werde da nicht schlau draus.
     
  2. Developer

    Developer Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    2.885
    Danke erhalten:
    617
    Danke vergeben:
    113
    Hallo Peter,

    ja, das geht schon.

    Ich frage mal so: Welchen Teil davon verstehst Du nicht genau?

    Viele Grüße
     
  3. Peter Müller

    Peter Müller Erfahrener Benutzer

    Registriert seit:
    12. Januar 2019
    Beiträge:
    106
    Danke erhalten:
    18
    Danke vergeben:
    51
    Also ganz ehrlich, ich weiss überhaupt nicht, wo anfangen. Ob ich mich intensivst mit extendern oder REST-API beschägtigen soll, oder ob das wie angedeutet, nur mit php geht, das weiss ich einfach nicht.
    Danke erstmal für die Info, dass es möglich ist.
     
  4. Developer

    Developer Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    2.885
    Danke erhalten:
    617
    Danke vergeben:
    113
    Hallo Peter,

    viele Wege führen bekanntlich nach Rom.

    Wie genau die Anforderung ist, um dann zu entscheiden, ich mache es über den Weg A oder B, müsste man mal besprechen.

    Aber, wenn dir die Info langt, dann ist es ja erstmal ausreichend.

    Nur solltest Du nicht den Fehler machen, der Gegenseite zu erzählen, dass es geht und anschließend festzustellen, dass Du das selbst nicht hinbekommst, wenn Du, wie Du schreibst, keine Ahnung von der Materie hast.
     
  5. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.122
    Danke vergeben:
    947
    Ist die "Warenkorb teilen" Funktion dafür nicht vielleicht sinnvoll?
     
  6. Peter Müller

    Peter Müller Erfahrener Benutzer

    Registriert seit:
    12. Januar 2019
    Beiträge:
    106
    Danke erhalten:
    18
    Danke vergeben:
    51
    Ich will ja nicht einen in Gambio erzeugten Warenkorb versenden, sondern im Gegenteil einen Warenkorb importieren, der von einer anderen Webseite aus einer mySQL Datenbank erzeugt wird, in Gambio übernehmen.

    Ich habe mir die Doku zur API durchgelesen.
    Könnte das mit
    Code:
    POST https://gambio-shop.de/shop1/api.php/v2/orders
    funktionieren?
    Und würde es ausreichen, nur die zwei Werte im body
    Code:
    "model": "1234-5-67",
    "quantity": "33"
    zu übermittel?

    Und falls ja, wie müsste ich mehrere Artikel übermitteln?

    Edit: Und könnte ich statt einer order auch eine wishlist erzeugen?

    Vielleicht liege ich ja komplett daneben, aber dann wäre ich auch dankbar, wenns mir jemand sagt...:cool:
    Danke
     
  7. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.122
    Danke vergeben:
    947
    Na, wenn du den Link eines Gambio Warenkorbs auf der fremden Seite platzierst, kann den jeder verwenden und dann bestellen. Ist das nicht das was du suchst? Anderen Leuten die Möglichkeit geben, einen von dir zusammengestellten Warenkorb zu kaufen?

    Die REST API zum erstellen von Bestellungen ist für dich weniger geeignet, denke ich: Damit spielst du komplette Bestellungen in den Shop ein, ohne dass noch jemand irgendwelche Daten eingibt oder einen Kaufen-Knopf drückt. Das ist z.B. um Bestellungen die über eBay oder Amazon oder so getätigt wurden als kompletten Datensatz in den Shop zu bekommen.
    Irgendwie ist das alles noch unklar was du vorhast, und für mich hört es sich so an als würdest du das Pferd von hinten aufzäumen: Wenn aus einer fremden Datenbank Pflanzen ausgewählt werden sollen, die dann in DEINEM Shop gekauft werden sollen, dann brauchst du identische Produkte in der fremden und in der eigenen Datenbank, oder zumindest ein einzigartiges Merkmal das in beiden Datenbanken identisch ist. Aber warum so kompliziert? Wenn du doch Produkte anbietest, dann nehmt doch deinen Produkt-Datensatz, statt zu versuchen, da von beiden Seiten sich irgendwie zu treffen. Das System müsste sein: Daten aus deiner Datenbank auf der fremden Webseite verwenden, um Bestellungen in deinem Shop zu ermöglichen. Du kannst vermutlich nur schwer Bestellungen mit Artikeln die es bei dir nicht gibt verarbeiten.
    Mein Tipp, bevor du dich an die technische Umsetzung setzt: Erstmal rein logisch von den Datenstrukturen überlegen, woher welche Daten wohin übertragen werden sollen und rein von der Logik auch übertragen werden können.
    Oder ich bin zu dumm zu raffen, worum es geht?
     
  8. Peter Müller

    Peter Müller Erfahrener Benutzer

    Registriert seit:
    12. Januar 2019
    Beiträge:
    106
    Danke erhalten:
    18
    Danke vergeben:
    51
    Du raffst das schon irgendiwe.
    Das Vorgehen geht so:
    Die Webseite des NGO (eine nonprofit Organisation) hat eine Datenbank mit Pflanzen und jede Pflanze hat eine ID (model). Im Gambio ist das die Bestellnummer, in der Datenbank des NGO ist das die PflanzenID.
    Diese Liste kann ich als csv in meinen shop einlesen. Dann haben wir die gleichen Daten.
    Wenn ein Kunde auf der Webseite des NGO eine Pflanzenauswahl nach bestimmten Kriterien bekommen hat, soll er die Möglichkeit haben, über einen Button diese Produktliste an meinen Gambioshop zu übermitteln. Er soll also auf meinem Shop landen und einen fertigen Warenkorb haben, den er dann noch ergänzen kann und dann normal bestellen und bezahlen.
    Und ich denke eben, dass
    das wäre, was die NGO Webseite schicken sollte.

    Ist das logisch oder habe ich einen Denkfehler drin?

    Edit. Die Produkte habe ich in meinem Shop noch nicht drin, deswegen müsste ich sie alle von Hand anlegen, um sie der Gegenseite zu übermitteln, aber die Gegenseite hat sie schon als komplette Liste.
     
  9. Peter Müller

    Peter Müller Erfahrener Benutzer

    Registriert seit:
    12. Januar 2019
    Beiträge:
    106
    Danke erhalten:
    18
    Danke vergeben:
    51
    Die Liste der Pflanzen wird auf der Webseite des NGO nach wissenschaftlichen Kriterien für jeden Kunden individuell zusammengestellt. Da werden Kriterien wie Region, Bodenbeschaffenheit, Standort, persönliche Vorlieben, Exposition etc. abgefragt. Es geht nicht um fertige Pflanzenpakete oder sowas.
     
  10. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.122
    Danke vergeben:
    947
    Ja, Denkfehler. Du hast keinen sauberen Vertragsschluss, kein Akzeptieren von Datenschutz, AGB, Widerrufsrecht, keine Belehrung über die Widerrufsfristen, keine Anzeige von Preisen, keine Infos über die Speicherung von Vertragsdaten, keine Auswahl von Versandkosten, keine Info zu Lieferzeiten, keine Zahlungsart, keine Zahlung, …
    Mit der API überträgst du Bestellungen aus anderen Systemen in deins, aber für die Bestellung durch Kunden ist das Shop Frontend programmiert worden.

    Out of the box kann Gambio das was du vorhast nicht. Was ich mir vorstellen könnte: Die NGO schickt dem Interessenten per Email eine Listen mit Links zu deinen Produkten, die er dann alle einzeln auswählt. Oder du musst dir was programmieren lassen, um anhand der Artikelnummer per URL einen Warenkorb mit allen Produkten zu befüllen.
     
  11. barbara

    barbara G-WARD 2014-2020

    Registriert seit:
    14. August 2011
    Beiträge:
    35.352
    Danke erhalten:
    11.198
    Danke vergeben:
    1.601
    Der Kunde kommt von der Externen Seite in den Shop und schließt dort den Kauf ab.
    Genauso wie ein Kunde, der im Shop Artikel in den WK gelegt hat.
    Lediglich die Zusammenstellung der Artikel findet woanders statt.
    Das dürfte keine rechtlichen Probleme geben (ich bin aber kein Jurist, deshalb ist das nur meine Meinung :))
    Preise könnte man auf der Seite anzeigen lassen...

    Ich sehe die Probleme eher darin, die Artikel inklusiver einer session des Kunden in den Shop zu bekommen.
    Wobei "Warenkorb Teilen" könnte da durchaus gehen.
    Wenn man alle Artikel der Seite in den Warenkorb legt und diesen teilt und durch die Angaben des Kunden die Artikel gelöscht werden, die nicht passen.
    Dann bleiben die passenden Artikel übrig und der Kunde kann diese noch aussortieren und per link in seinen WK packen.

    Egal wie, da muss ein Programmierer ran.
     
  12. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.122
    Danke vergeben:
    947
    Er will ja die REST Api zum Erstellen einer Bestellung verwenden. Da besucht der Kunde den Shop nicht, den Warenkorb nicht, den Checkout nicht. Da werden nur alle Bestelldaten an die Api übergeben, und die knallt die Bestellung in den Shop. Also der Kunde bekommt den Shop bei dieser Art von Bestellung nicht einmal zu sehen.
     
  13. Peter Müller

    Peter Müller Erfahrener Benutzer

    Registriert seit:
    12. Januar 2019
    Beiträge:
    106
    Danke erhalten:
    18
    Danke vergeben:
    51
    Nenene, jetzt verstehst Du es gerade nicht. Der Kunde kommt von der NGO Seite (auf seinen Wunsch) auf meinen shop und findet dort lediglich einen gefüllten Warenkorb vor. Er kann den WK löschen, Produkte hinzufügen, wie er will. Oder die Seite wieder verlassen. Kein Vertragsabschluss, keine Daten des Kunden (ausser IP) übermittelt, etc.

    Ich probiere grade mit solchen Sachen rum
    Code:
    <?php
    
    
    $client = new http\Client;
    
    $request = new http\Client\Request;
    
    
    $body = new http\Message\Body;
    
    $body->append('"items":[{"id":0,"model":"1234-5-67","quantity":5,}]');
    
    
    $request->setRequestUrl('https://biopflanzen.shop/api.php/v2/orders');
    
    $request->setRequestMethod('POST');
    
    $request->setBody($body);
    
    
    $request->setHeaders(array(
    
      'authorization' => 'pm@xxxxxx.ch:pwpwpw',
    
      'content-type' => 'application/json',
    
      'accept' => 'application/json'
    
    ));
    
    
    $client->enqueue($request)->send();
    
    $response = $client->getResponse();
    
    
    echo $response->getBody();
    aber es funzt no net.
    Ich weiss auch nicht, ob ich cURL, http1 oder http2 nehmen soll.
    https://developers.gambio.de/docs/3.11.1.0/rest/gambio-gx3-api/reference/orders/create-order/
     
  14. Peter Müller

    Peter Müller Erfahrener Benutzer

    Registriert seit:
    12. Januar 2019
    Beiträge:
    106
    Danke erhalten:
    18
    Danke vergeben:
    51
    Jetzt dämmerts mir. Mit Create order mache ich eine fertige Bestellung, ich will aber nur einen Warenkorb erzeugen.
    Gibt es create cart?
     
  15. Peter Müller

    Peter Müller Erfahrener Benutzer

    Registriert seit:
    12. Januar 2019
    Beiträge:
    106
    Danke erhalten:
    18
    Danke vergeben:
    51
    genau das.
     
  16. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.122
    Danke vergeben:
    947
    Hier etwas um in die Spur zu kommen und den Anfang zu machen:

    Code:
    require('includes/application_top.php'); // bindet die Gambio Funktionen ein
    session_start(); // erstellt eine User Session
    $session_started == true;
    $product = filter_input(INPUT_GET, 'products_model', FILTER_SANITIZE_STRING); // übernimmt die Artikelnummer aus dem Get Parameter der URL
    $prodid_query = xtc_db_query("select products_id, products_model from products where products_model = '" . mysqli_real_escape_string($GLOBALS['db_link'],$product) . "'");
    $prodid_fetch = xtc_db_fetch_array($prodid_query); // sucht die passende products_id in der Datenbank
    $_SESSION['cart']->add_cart((int) $prodid_fetch['products_id'],'1'); // fügt das Produkt 1x dem Warenkorb hinzu
    xtc_redirect(xtc_href_link(FILENAME_SHOPPING_CART, '', 'SSL')); // leitet den Besucher weiter auf die Warenkorb-Seite
    
    Ungetestet und ohne Haftung. Wenn du damit nicht weiterarbeiten kannst, am besten tatsächlich einen Entwickler beauftragen: Developer, Alkim, Xycons, Kai Stejuhn, ...
     
  17. Peter Müller

    Peter Müller Erfahrener Benutzer

    Registriert seit:
    12. Januar 2019
    Beiträge:
    106
    Danke erhalten:
    18
    Danke vergeben:
    51
    Danke.Danke
    Ich werds testen.
    Inzwischen versuche ich die API mit postman anzusprechen, aber bekomme immer "Unauthorized" zurück.

    Und ich denke auch, das, was Du im Code geschrieben hast, kann man mit der Gambio GX3 API garnicht machen.
     

    Anhänge:

  18. Anonymous

    Anonymous Erfahrener Benutzer

    Registriert seit:
    19. Juni 2012
    Beiträge:
    4.831
    Danke erhalten:
    1.122
    Danke vergeben:
    947
    Ja richtig! Meins muss eine eigenständige Datei werden, die im Shop Root deine Artikelnummern von der fremden Seite "empfängt" und in den Warenkorb legt. Wir hatten ja schon festgestellt, dass die API ungeeignet für deine Zwecke ist, weil sie für etwas ganz anderes konzipiert wurde: Konsistenter Datenaustausch unter Umgehung von Shop-Backend und Frontend. Du willst ja das Shop-Frontend nutzen.
     
  19. Peter Müller

    Peter Müller Erfahrener Benutzer

    Registriert seit:
    12. Januar 2019
    Beiträge:
    106
    Danke erhalten:
    18
    Danke vergeben:
    51
    jetzt komme ich langsam in die Spur.
    Herzlichen Dank.
    (Hab die ganze Nacht von requests geträumt)
     
  20. Developer

    Developer Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    2.885
    Danke erhalten:
    617
    Danke vergeben:
    113
    Solange Du nicht von einer endlosen for-Schleife träumst, ist ein Traum mit Requests doch Ok! :D