2013-07-01 2 views
4

Я использую prestashop 1.5.3 и я занимаюсь разработкой проблема платежного шлюза это я не мог найти, как добавить продукт программно в корзине и порядке добавления платы оплатыкак добавить продукт в корзине программно в PrestaShop

Пожалуйста, кто help me

+0

Я не понимаю вашу точку зрения, продукт добавить programitacilly? если вы хотите добавить продукт, нажмите любую кнопку, которая. вы можете увидеть ajax-cart.js, который является блочным модулем js, с помощью которого вы можете добавить продукт. –

+0

Нет, мне нужно знать класс или функцию сервера prestashop на стороне сервера для добавления отдельного продукта в корзину для платы за плату. Цель –

ответ

2

Если вы разработали платежный модуль, вы должны сначала проверить, как сделаны другие платежные модули, например, Ogone или Paypal. Вы можете найти их здесь: https://github.com/PrestaShop/PrestaShop-modules

Метод, используемый в preashash для добавления/удаления продуктов из корзины Cart-> updateQty() (в классах файлов/Cart.php).

3

Ниже приведен код для программного добавления нескольких продуктов. Может использоваться и для добавления одного продукта. Поместите этот код в файл с именем test.php на свой сайт root, а затем запустите его так: /test.php?products_ids=11,9,10, где 11, 9,10 - 3 продукта. Надеюсь это поможет.

<?php 
require(dirname(__FILE__).'/config/config.inc.php'); 

$context=Context::getContext();//new Cart(); 
$id_cart=$context->cookie->__get('id_cart'); 

$products_ids=$_GET['products_ids']; // comma seprated products id example : test.php?products_ids=1,2,3 

$products_ids_array=explode(",",$products_ids); 

if(count($products_ids_array)>0){ 
    $cart=new Cart($id_cart); 
    $cart->id_currency=2; 
    $cart->id_lang=1; 
    foreach($products_ids_array as $key=>$id_product){ 
     $cart->updateQty(1, $id_product); 
    } 
} 
?> 
+0

Не работает, человек ... как вы запускаете это, чтобы положить товар в корзину? Я попытался запустить только php и запустить ajax из header.tpl ... –

0
<script> 
     $(document).ready(function(){ 
      $.ajax({ 
      type: 'POST', 
      headers: { "cache-control": "no-cache" }, 
      url: 'yourshopurl', 
      async: true, 
      cache: false, 
      dataType: 'json', 
         //((parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): '') 
         data: 'controller=cart&add=1&ajax=true&qty=1&id_product=247&token=' + static_token , 
      success: function(jsonData) 
      { 
       console.log("products added"); 
      } 
     }); 
     }); 
    </script> 

Теперь просто добавить идентификатор продукта ... или любые комбинации (комментировал)

+0

@SajidAnwar добавить это в функцию с параметром «productId» и просто вызвать его в цикле «для» –

+0

У меня недостаточно времени, чтобы иметь конкретный код, но что я имею в виду : Array product_ids = [123,562,653]; Foreach (product_ids) { addProduct } функция addProduct (ProductID) { эта функция } –

+0

@SajidAnwar этот форум, чтобы не дать вам точный код, но переместить вас в правильном направлении, это для людей, которые Хотеть учиться. Если вы хотите точное решение, я могу вам помочь, но он не будет бесплатным. –

2

Вы можете разместить этот код в файле PHP в вашем корневом каталоге и использовать простую форму, предписывающую этот страница с номером продукта & количество.

Просто изменение:

$idProduct= 19825 to $idProduct=$_POST["txtproductid"] 
$qty=5 to $qty=$_POST["txtqty"]; 

$useSSL = true; 

include('/config/config.inc.php'); 

include('/header.php'); 
global $params; 
$errors = array(); 

$idProduct =19825; 
$qty=5; 

if ($cookie->isLogged()) 
{ 
    /* Cart already exists */ 
    if ((int)$cookie->id_cart) 
    { 
     $cart = new Cart((int)$cookie->id_cart); 
    } 
    if (!isset($cart) OR !$cart->id) 
    { 
     $cart = new Cart(); 
     $cart->id_customer = (int)($cookie->id_customer); 
     $cart->id_address_delivery = (int) (Address::getFirstCustomerAddressId($cart->id_customer)); 
     $cart->id_address_invoice = $cart->id_address_delivery; 
     $cart->id_lang = (int)($cookie->id_lang); 
     $cart->id_currency = (int)($cookie->id_currency); 
     $cart->id_carrier = 1; 
     $cart->recyclable = 0; 
     $cart->gift = 0; 
     $cart->add(); 
     $cookie->id_cart = (int)($cart->id);  
    } 


/* get product id and product attribure id */ 
     $data = explode(",", $product); 
     $idProduct = $data[0]; */ 
     $idProductAttribute = $data[1]; 

     if ($qty != '') 
     { 

$producToAdd = new Product((int)($idProduct), true, (int)($cookie->id_lang)); 

if ((!$producToAdd->id OR !$producToAdd->active) AND !$delete) 
/* Product is no longer available, skip product */ 
       continue; 

      /* Check the quantity availability */ 
if ($idProductAttribute > 0 AND is_numeric($idProductAttribute)) 
      { 
if (!$producToAdd->isAvailableWhenOutOfStock($producToAdd->out_of_stock) AND !Attribute::checkAttributeQty((int)$idProductAttribute, (int)$qty)) 
       { 
/* There is not enough product attribute in stock - set customer qty to current stock on hand */ 
      $qty = getAttributeQty($idProductAttribute); 
       } 
      } 
      elseif (!$producToAdd->checkQty((int)$qty)) 
       /* There is not enough product in stock - set customer qty to current stock on hand */ 
      $qty = $producToAdd->getQuantity(idProduct); 


$updateQuantity = $cart->updateQty((int)($qty), (int)($idProduct), (int)($idProductAttribute), NULL, 'up'); 
      $cart->update(); 

     } 


    /* redirect to cart 
    if (!sizeof($errors)) */ 

    Tools::redirect('order.php'); 


} 
else 
{ 
Tools::redirect('/index.php'); 
} 

$smarty->assign(array(
'id_customer' => (int)($cookie->id_customer), 
'errors' => $errors 
)); 

include_once('/footer.php'); 
Смежные вопросы