如何在prestashop中以编程方式在购物车中添加产品

时间:2013-07-01 13:51:37

标签: payment-gateway prestashop

我正在使用prestashop 1.5.3,我正在开发支付网关问题,我无法找到如何在购物车中以编程方式添加产品并订购添加付款费用

请有人帮助我

5 个答案:

答案 0 :(得分:3)

以下是以编程方式添加多个产品的代码。也可以用来添加一个产品。将这些代码放在您的网站根目录下名为test.php的文件中,然后像/test.php??products_ids=11,9,10那样运行它,其中11,9,10是3个产品ID。希望这会有所帮助。

<?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);
    }
}
?>

答案 1 :(得分:3)

您可以将此代码放在Root目录中的php文件中,并使用指向此页面的简单表单,其中包含产品ID&amp;数量。

只需改变:

<?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');

答案 2 :(得分:2)

如果您开发了支付模块,您应首先检查如何制作其他支付模块,例如Ogone或Paypal模块。您可以在此处找到它们:https://github.com/PrestaShop/PrestaShop-modules

prestashop中用于从购物车添加/删除产品的方法是Cart-&gt; updateQty()(在文件类/ Cart.php中)。

答案 3 :(得分: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>

现在只需添加产品ID ...或任何组合(已评论)

答案 4 :(得分:0)

// Add cart if no cart found
if (!$this->context->cart->id) {
    if (Context::getContext()->cookie->id_guest) {
        $guest = new Guest(Context::getContext()->cookie->id_guest);
        $this->context->cart->mobile_theme = $guest->mobile_theme;
    }
    $this->context->cart->add();
    if ($this->context->cart->id) {
        $this->context->cookie->id_cart = (int)$this->context->cart->id;
    }
}

// Add product
$Cart = $this->context->cart;
$Cart->updateQty(1, 13, 1, false);

/* Optional parameters  */
// classes/cart.php
// public function updateQty(
//     $quantity,
//     $id_product,
//     $id_product_attribute = null,
//     $id_customization = false,
//     $operator = 'up',
//     $id_address_delivery = 0,
//     Shop $shop = null,
//     $auto_add_cart_rule = true,
//     $skipAvailabilityCheckOutOfStock = false
// )