Das Umstellen eines PHP Programmes von der API 2.0 auf 4.x ist ja angebich ganz einfach. Nur zwei Zeilen tauschen . Aber unser PHP Programm zum Export von Bestellungen liegt im shopware Verzeichnis und kann autark aus unserer Desktop Applikation gestartet werden. Das bekomme ich uter V 4 nicht hin, weil alle Beispiele eingebunde Plugins sind. Das Problem sind wohl die ersten beiden Zeilen: require_once(’…/…/api.php’); $api = new sAPI(); Hier das ganze PHP Programm, welches wir direkt aufrufen können und weiterhin müssen. Vielen Dank für jegliche Hilfe.<?php /**
- Shopware API Beispiel: Bestellungen in XML exportieren
- @author Heiner Lohaus hl@shopware2.de * @package Shopware 2.08.01 * @subpackage API */ /* Klassen laden, Aliase erstellen und Einstellungen vornehmen */ require_once(’…/…/api.php’); api = new sAPI(); /\* Beispiel zur Absicherung des API-Calls über einen eindeutigen API - Schlüssel - Kann über Einstellungen \> Schnittstellen \> API im Backend generiert werden. \*/ if (_REQUEST[“sAPI”]!=$api->sSystem->sCONFIG[“sAPI”]) { echo “ERROR keine Zugangsberechtigung”; exit; } $export =& $api->export->shopware; $xml =& $api->convert->xml; $mapping =& $api->convert->mapping; $xml->sSettings[‘encoding’] = “ISO-8859-1”; /* Bestellungen mit dem Status 0 auslesen */ $orders = $export->sGetOrders (array(“where”=>“status=0”)); $orderIDs = array_keys($orders); if (!$orders) { echo “ERROR keine Bestellungen vorhanden”; exit(); } /* Die dazu passenden Kunden auslesen */ $customers = $export->sOrderCustomers(array(“orderIDs”=> $orderIDs)); if (!$customers) { echo “ERROR keine Kundenzuordnung vorhanden”; exit(); } /* Und die dazu passenden Bestellpositionen auslesen */ $positions = $export->sOrderDetails(array(“orderIDs”=> $orderIDs)); if (!$positions) { echo “ERROR keine Positionen vorhanden”; exit(); } /* Bestellung maskieren */ $ordermask = array ( “orderID”, “ordernumber”, “customerID”, “paymentID”, “transactionID”, “partnerID”, “clearedID”, “statusID”, “paymentID”, “invoice_amount”, “invoice_amount_net”, “invoice_shipping”, “invoice_shipping_net”, “invoice_amount_net”, “invoice_amount_net”, “net”, “cleared_description”, “status_description”, “payment_description”, “ordertime”, “customercomment” ); $orders = $mapping->convert_array ($ordermask, $orders); /* Kunden maskieren */ $salutationmap = array( “mr” => “Herr”, “ms” => “Frau”, “_default” => “” ); $customermask = array ( “customernumber”, “billing_company”, “billing_department”, “billing_salutation” => array ( “convert” => array( “map” => $salutationmap ) ), “billing_firstname”, “billing_lastname”, “billing_street”, “billing_streetnumber”, “billing_street”, “billing_zipcode” => array ( “convert” => “intval” ), “billing_city”, “billing_country”, “billing_countryen”, “billing_countryiso”, “shipping_company”, “shipping_department”, “shipping_salutation” => array ( “convert” => array( “map” => $salutationmap ) ), “shipping_firstname”, “shipping_lastname”, “shipping_street”, “shipping_streetnumber”, “shipping_street”, “shipping_zipcode” => array ( “convert” => “intval” ), “shipping_city”, “shipping_country”, “shipping_countryen”, “shipping_countryiso”, “ustid” => array ( “convert” => “trim” ), “phone”, “fax”, “email”, “customergroup”, ); $customers = $mapping->convert_array ($customermask, $customers); /* Bestellpositionen maskieren */ $positionmask = array ( “articleID”, “articleordernumber”, “name”, “price”, “quantity”, “invoice”, “releasedate”, “tax”, “esd”, “modus”, ); foreach ($positions as $orderID =>$position) { $tmp[$orderID] = $mapping->convert_array ($positionmask, $position); } $positions = $tmp; /* Alle Daten zusammenfassen */ $open_orders = array(); foreach ($orderIDs as $orderID) { if(isset($orders[$orderID])&&$customers[$orderID]&&$positions[$orderID]) { $open_orders[$orderID] = array_merge($orders[$orderID],$customers[$orderID]); $open_orders[$orderID][‘positions’][‘position’] = $positions[$orderID]; } } /* Daten in XML konvertieren */ $orders = $xml->encode(array(“shopware”=>array(“orders”=>array(“order”=>$open_orders)))); /* XML-Daten ausgeben */ if ($orders=="") { echo “ERROR - keine Daten”; } else { echo $orders; } ?>