OlgierdU Posted July 10, 2013 Share Posted July 10, 2013 Witam! Szukam informacji jak zrealizować wygenerowanie koszyka i następnie przekierować taki koszyka na przeglądarkę klienta. Czy ktoś może się spotkał już z takim rozwiązaniem lub to robił i mógłby mi dać klika rad w tym temacie. Korzystam z wersji PS 1.4.4.1. olgierd Link to comment Share on other sites More sharing options...
0 vekia Posted July 10, 2013 Share Posted July 10, 2013 chodzi Ci o to, żę w back office chcesz utworzyć zamówienie, następnie dać możliwość dokończenia zamówienia klientowi? dobrze zrozumiałem? Link to comment Share on other sites More sharing options...
0 OlgierdU Posted July 10, 2013 Author Share Posted July 10, 2013 chodzi Ci o to, żę w back office chcesz utworzyć zamówienie, następnie dać możliwość dokończenia zamówienia klientowi? dobrze zrozumiałem? Chodziło mi o taki scenariusz gdzie dostaję przesłaną tablice metodą POST sprawdzam czy mam produkty w sklepie, jak mam to generuje koszyk i zwracam nagłówek z lokalizacją do adresu pod którym pokaże się strona z tym koszykiem. O ile wygenerowanie koszyka to nie jest wielki problem to nie wiem jak zwrócić adres do strony z tym koszykiem, nie wiedzę za bardzo żeby pojawiała się jakaś zmienna sesyjna czy coś w tym rodzaju, ale przypuszczam że jest jakiś token przekazywany w URL'u, czy zapisany w COOCKIES który można wykorzystać. Wszystko ma się dziać automatycznie bez ingerencji z Back Office Link to comment Share on other sites More sharing options...
0 Krystian Podemski Posted July 12, 2013 Share Posted July 12, 2013 Koszyk jest dopisywany albo do id_guest albo do id_customer + właśnie sprawy z Cookies, w mojej opinii rozwiązaniem byłaby modyfikacja pozwalająca na wyświetlanie koszyka nie po id_guest / id_customer a poprzez odpowiedni token, który generujesz podczas tworzenia koszyka. Tworzysz normalnie obiekt koszyka tylko zamiast id_customer i id_guest dajesz jakiś token, potem link zawiera ten token i dzięki temu wyświetla się temu komuś kto dostał link. Byłoby z tym troszkę zabawy ale od strony logistycznej tak właśnie to widzę. Link to comment Share on other sites More sharing options...
0 OlgierdU Posted July 16, 2013 Author Share Posted July 16, 2013 Rozwiązanie które udało mi się stworzyć wygląda tak: <?php class CreateBasket{ public $postean; public $quantity = array(); public $qt; public $products; // konstruktor, otwiera połączenie z bazą function __construct() { // łączy z bazą $this->mMysqli = new mysqli(_DB_SERVER_, _DB_USER_, _DB_PASSWD_, _DB_NAME_); if ($this->mMysqli->connect_errno) { echo "Failed to connect to MySQL: (" . $this->mMysqli->connect_errno . ") " . $this->mMysqli->connect_error; } } // destruktor, zamyka połączenie z bazą function __destruct() { $this->mMysqli->close(); } public function setEan($postean){ $this->postean = $postean; } public function setQuantity($quantity){ $this->quantity = $quantity; } public function setQt($qt){ $this->qt = $qt; } public function setProducts($products){ $this->products = $products; } public function setID_operating_system($id_operating_system){ $this->id_operating_system; } public function setID_web_browser($id_web_browser){ $this->id_web_browser; } public function setAccept_language($accept_language){ $this->accept_language; } public function getProductId(){ $sql = 'SELECT id_product FROM '._DB_PREFIX_.'product AS c WHERE c.ean13 = ? AND available_for_order = 1 AND price > 0 '; if($stmt = $this->mMysqli->prepare($sql)){ $stmt->bind_param('s', $this->postean ); $stmt->execute(); $stmt->bind_result($id); $stmt->fetch(); if ($id > 0){ return $id; }else{ $empty = '-'; return $empty; } }else{ return $this->mMysqli->error; } } public function createGuest(){ $sql = " INSERT INTO "._DB_PREFIX_."guest (id_operating_system, id_web_browser, accept_language) VALUES (?, ?, ? ) "; if($stmt = $this->mMysqli->prepare($sql)){ $stmt->bind_param('iis', $this->id_operating_system, $this->id_web_browser, $this->accept_language); $stmt->execute(); $this->id_guest = $stmt->insert_id; return true; }else{ return false; } } public function createCart(){ $sql = " INSERT INTO "._DB_PREFIX_."cart (id_lang, id_currency, id_guest, secure_key, date_add, date_upd) VALUES (?, ?, ?, '', now(), now() ) "; if($stmt = $this->mMysqli->prepare($sql)){ $stmt->bind_param('iii', $this->id_lang, $this->id_currency, $this->id_guest); $stmt->execute(); $this->id_cart = $stmt->insert_id; return true; }else{ return false; } } public function addProductsToCart(){ $sql = " INSERT INTO "._DB_PREFIX_."cart_product (id_cart, id_product, id_product_attribute, quantity, date_add) VALUES (?, ?, '0', ?, now() ) "; if($stmt = $this->mMysqli->prepare($sql)){ foreach ($this->products as $key => $var ){ $stmt->bind_param('iii', $this->id_cart, $key, $var); $stmt->execute(); } }else { return $this->mMysqli->error; } } } include('../../config/config.inc.php'); require_once '../../init.php' ; require_once( '../../webservice/PSWebServiceLibrary.php' ); $newbasket = new CreateBasket(); if($_POST){ $orderid = $_POST['ORDERID']; // nr zamówienie przeslany $lang = $_POST['LN']; // jezyk $cur = $_POST['CURRENCY']; // waluta $orderitems = $_POST['ORDERITEMS']; // lista w formacie JSON $array = (json_decode($_POST['ORDERITEMS'], true)); /* $table = $orderid . '-' . $lang . '-' .$cur; $table .= '<table> <tr> <td>ID produktu</td> <td>EAN</td> <td>Ilość</td> <td>IDP</td> </tr>'; */ $products = array(); foreach ($array as &$value) { $newbasket->postean = $value['Ean13']; $id = $newbasket->getProductId(); if($id!=='-'){ $products[$id] = &$value['Count']; } /* $table .= '<tr> <td>'.$value['ProductId'].'</td> <td>'.$value['Ean13'].'</td> <td>'.$value['Count'].'</td> <td>'.$id.'</td> </tr>'; */ unset($value); } //$table .= '</table>'; $newbasket->id_operating_system = '5'; // WINDOWS server $newbasket->id_web_browser = '9'; // IE server verstion $newbasket->accept_language = $lang; if($lang == 'pl'){ $newbasket->id_lang = '6'; // polski } if($cur == 'PLN'){ $newbasket->id_currency = '4'; // PLN } if($newbasket->createGuest()){ if($newbasket->createCart()){ $newbasket->setProducts($products); $newbasket->addProductsToCart(); } } $webService = new PrestaShopWebservice( 'http://example.tld/', 'YFGVJKJHFIFUFGVGIKVY675FGX79XFGXH7', false ); $cookie->id_cart = $newbasket->id_cart; $cookie->id_guest = $newbasket->id_guest; header("Location: http://example.tld/order.php?id_cart=".$newbasket->id_cart."&token=".Tools::getToken($page)); }else{ header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); header("Location: ../"); exit; } Pewnie można by jeszcze dużo w tym kodzie poprawić, czy zastosować gotowe metody itp. , ale jak na razie mi się ono sprawdza. Uwagi mile widziane. Link to comment Share on other sites More sharing options...
0 Krystian Podemski Posted July 17, 2013 Share Posted July 17, 2013 No w zasadzie jeśli chodzi o uwagi to właśnie to że można było zastosować gotowe metody, a to jak sobie co kodujesz to już inna piłka i raczej nie ma sensu tutaj tego oceniać - jeśli działa to si Link to comment Share on other sites More sharing options...
Question
OlgierdU
Witam!
Szukam informacji jak zrealizować wygenerowanie koszyka i następnie przekierować taki koszyka na przeglądarkę klienta.
Czy ktoś może się spotkał już z takim rozwiązaniem lub to robił i mógłby mi dać klika rad w tym temacie.
Korzystam z wersji PS 1.4.4.1.
olgierd
Link to comment
Share on other sites
5 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now