Warenkorb von Extern befüllen

Einige unserer Kunden verwenden Blätterkataloge um Ihre Printkataloge auch online zu präsentieren. Das hat den großen Vorteil, dass man die Druckauflage reduzieren kann und damit erhelblich an Druckkosten spart. Zusätzlich erstellen wir mit Server2go CD-Anwendungen um die Kataloge per CD versenden zu können.
Beispiele:
- http://www.tom-garten.de/blaetterkatalog
- http://www.christiani.de/infocenter.php/icPath/_118
Die Blätterkataloge der Comito GmbH verfügen auch über einen eigenen Warenkorb. So kann man aus dem Blätterkatalog heraus Produkte in den Warenkorb des Blätterkataloges legen. Löst man nun einen Bestellprozess aus, kann man die Daten an eine URL zur Weiterverarbeitung übermitteln.
Syntax: www.shopurl.de?prdukte=artikelnummer1,Menge1;artikelnummer2,Menge2;…
Also benötigen wir eine Lösung um die Daten an Magento zu übermitteln. Ich werde dies ausnamhsweise nicht als eigenes Modul erstellen, sondern über eine einizge PHP-Datei. Wenn Sie sich die index.php von Magento ansehen, erkennen Sie wie die Klasse Mage eingebunden wird und eine Instanz von Mage erstellt wird. Genau dies machen wir und “holen uns” und die zusätzlichen Objekte für unser Vorhaben.
Das ganze sieht wie folgt aus:
<?php
require_once 'app/Mage.php';
Mage::app();
/* Beispiel GET-Parameter
Syntax: fillcart.php?products=SKU,QTY;SKU,QTY;SKU,QTY;...
*/
if (isset($_GET['products'])) {
Mage::getSingleton('core/session', array('name'=>'frontend')); // Session erzeugen
$CatProd = Mage::getModel('catalog/product');
$Cart = Mage::helper('checkout/cart')->getCart(); // Instanz zum Warenkorb
$ProductsList = explode(';',$_GET['products']); // Produktlisting-Array erzeugen
$CarCount = 0;
foreach ($ProductsList as $Product) {
$Model_Qty = explode(',',$Product); // Artikelnummer/Mange-Array erzeugen
$ProductsId = $CatProd->getIdBySku($Model_Qty[0]); // Produkt-ID ermitteln
if ($ProductsId) { // Wenn das Produkt vorhanden ist ...
$ProdObj = Mage::getModel('catalog/product')
->setStoreId(Mage::app()->getStore()->getId())
->load($ProductsId); // Produkt laden
$Cart->addProduct($ProdObj, $Model_Qty[1]); // Produkt in den Warenkorb einfügen
$CarCount++;
}
}
if ($CarCount > 0) {
$Cart->save(); // Warenkorb speichern
header('Location: '. Mage::getUrl('checkout/cart'));
} else {
header('Location: '. Mage::getUrl(''));
}
} else {
header('Location: '. Mage::getUrl(''));
}
?>
Das war es schon – kurz aber effektiv.
Das ganze im Einsatz: http://shop.mxperts.de/fillcart.php?products=intelcore2extreme,1;500gb5400,2;M9179LL,1;microsoftnatural,1;oc_lrg,5
Download: fillcart.zip
Viele Grüße
Johannes Teitge
nettes Ding, werds bestimmt mal selbst gebrauchen können
vllt hilft mir das auch bei dem Problem was ich dir per Mail geschickt habe.
War diese Antwort hilfreich?
LikeDislikeInteressante Sache. Eigentlich such ich so etwas wie eine “Schnellbestellung”, bei der man auf einer Seite 10 Artikelnummer untereinander eingeben kann und dann der Warenkorb gefüllt wird. Das hier wäre schon ein interessanter Ansatz.
Leider bekomme ich einen Ladefehler:
“Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.”
War diese Antwort hilfreich?
LikeDislikeDas muss ich auch noch machen – aber für ein Projekt in naher Zukunft. Deshalb wird es noch etwas dauern – aber evtl. meldet sich ein Gastautor
Für osCommerce haben wir das schon gemacht: http://www.christiani.de/directadd.php
Bezüglich Deines Fehlers kann ich nur sagen, dass wir es bei einem Kunden bereits Erfogreich im Einsatz haben.
Viele Grüße
Johannes Teitge
War diese Antwort hilfreich?
LikeDislikeFehler gefunden, es liegt daran, dass Mage::getUrl(”) den Pfad inkl. fillcart.php zurückgibt, also:
http://www.shopname.de/fillcard.php/checkout/cart
Deshalb die Umleitung, die nie beendet werden kann. Habe es jetzt in Klartext reingeschrieben, da ich auf die schnell nicht etwas wie Mage::getBaseUrl() gefunden habe.
An der Direktbestellung werde ich mich jetzt versuchen, bei Erfolg melde ich mich mal zwecks Gastbeitrag.
bye, Ralf
War diese Antwort hilfreich?
LikeDislikeHabe dieses Script installiert und es funktionierte bis vor Kurzem einwandfrei. Lob an die Entwickler
Nachdem ich aber nun in Magento etwas an den Storeviews etc. herumgebastelt habe, macht das Script nix mehr.
Kommt auch keine Fehlermeldung…
Gibt es eine Möglichkeit in das Script ein paar Debug-Meldungen einzubauen, um den Fehler zu finden?
Grüße
Marco
War diese Antwort hilfreich?
LikeDislikeGibt es denn auch die Möglichkeit mehrere produkte auf einmal in den Warenkorb zu tranferieren?
War diese Antwort hilfreich?
LikeDislike