2015-09-01 4 views
7

Ich habe eine Webseite, auf der Benutzer Produkte von 3rd Party Commerce-Sites (Amazon, Shopify, Magento, etc.) von meiner Seite hinzufügen können. Benutzer wählen mehrere Produkte aus und klicken dann auf "Kasse". Die Seite leitet sie dann zur Checkout-Seite der 3rd-Party-Commerce-Site weiter.Programmatisches Hinzufügen von Produkten zu einem Remote-Magento-Einkaufswagen eines Benutzers

dies funktioniert gut mit Amazon, wie sie eine serverseitige API haben, die wir vertreten. Eingabe: eine Reihe von Produkten, Ausgabe: eine Checkout-URL. ziemlich einfach und es funktioniert ziemlich gut.

wir sind jedoch mit Magento stecken.

  • Es gibt keine öffentliche API unterstützt die
  • Die undokumentierten API nur ein Produkt eines Benutzers remote Warenkorb zum Hinzufügen eines einzigen Produkt zu einem Zeitpunkt hinzufügen, so dass mehrere Produkte erfordert Anrufe mehrere API unterstützt (was langsam ist)
  • Die meisten Magento-Sites unterstützen HTTPS nicht und/oder leiten sie nicht zu HTTP um, und unsere Site verwendet HTTPS. So funktioniert es nicht wirklich.
  • Wir stoßen auf CORS-Probleme, wenn wir AJAX-Anfragen versuchen - wir hacken es gerade mit iframes.
  • Die erste Anfrage gibt uns eine Fehlermeldung "kein Cookie", anstatt sie tatsächlich in den Warenkorb zu legen.

Gibt es eine Möglichkeit, dies zu lösen? Unterstützt Magento CORS-Anfragen? Was unterstützt Magento mit HTTPS?

ich http://community.magento.com/t5/Programming-Questions/API-Redirecting-user-to-magento-instance-to-view-their-cart/m-p/9113#M2029 sehen, welche unsere Kunden erfordern eine Erweiterung zu installieren, aber das kann nicht

dank

Antwort

1

akzeptabel Obwohl keine API-Funktionalität in Magento gibt es diese aus der Box unterstützt, ist es möglich, zu erweitern Magento unterstützt dies, indem es ein kleines API-Modul schreibt, das in Magento installiert werden soll, damit dies funktioniert. Indem Sie eine API-Erweiterung erstellen, können Sie die Regeln festlegen, indem Sie beispielsweise mehrere Produkte akzeptieren, die in den Warenkorb hinzugefügt werden sollen.

Magentos Dokumentation war schon immer ziemlich schlecht, und Entwickler wie ich müssen normalerweise den Code debuggen und durchgehen, um zu verstehen, wie eine bestimmte Funktion tatsächlich funktioniert. Sobald Sie genug gelernt haben, werden Sie ein "größeres Bild" sehen, mit dem Sie das Verhalten von Magento "vorhersagen" können und es Ihnen oft ermöglicht, Schritt für Schritt die Fehlersuche zu überspringen.

Ich würde vorschlagen, dass Sie Hilfe von einem professionellen Entwickler bekommen, um dies zu bauen (ich würde sagen, mindestens 2-3 Jahre Back-End-Entwicklung Erfahrung), und erhalten Sie eine zertifizierte Magento-Entwickler, um Ihnen zu helfen: Amateure können wahrscheinlich Machen Sie eine funktionierende Lösung für weniger, aber Sie würden die Konsequenzen auf lange Sicht tragen, ganz zu schweigen von der Portabilität Ihres Moduls über Magento-Editionen und -Versionen und sicherheitsrelevanten Problemen (XSS, SQL-Injection usw.).

Magento unterstützt HTTPS (wirklich, das ist der Sysadmin der Site, um den Webserver richtig zu konfigurieren) und hat ein wenig CORS-Unterstützung (standardmäßig ist die "same-origin" -Richtlinie implementiert). Das Ändern von CORS wäre ebenfalls eine Entwicklungsaufgabe, obwohl ich nicht wirklich sehe, wie dies mit der REST- oder SOAP-API zusammenhängen würde.

Bitte beachten Sie auch, dass Magento für die Sitzungsunterstützung stark auf Cookies angewiesen ist (und der Warenkorb in der Datenbank für eine Kundensitzung gespeichert wird).

Das ist alles was ich wirklich sagen kann, dass wenig Information über Ihr tatsächliches Problem zur Verfügung gestellt wird.

Wenn Sie weitere Informationen benötigen, würde ich gerne helfen, aber ich würde mehr Details benötigen, um die beste Lösung zu finden.

1

Vielleicht können Sie es mit Abfrage Zeichenfolge wie folgt versuchen?

<?php 

$formKey = Mage::getSingleton('core/session')->getFormKey();?> 

<form action="/checkout/cart/add/product/<?php echo $productid; ?>" method="post"> 
    <input type="hidden" name="form_key" value="<?php echo $formKey; ?>" /> 

    <input type="text" name="qty"> QTY 

    <input type="submit" value="Add to basket" /> 
</form> 
Verwandte Themen