Jump to content
  • 0

Zdalne generowanie koszyka


OlgierdU

Question

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

  • 0

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

  • 0

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

  • 0

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...