[英]how to add product in cart programmatically in prestashop
I am using prestashop 1.5.3
and i am developing a payment gateway problem is this i couldn't find how to add product programmatically in cart and order for adding payment fee 我正在使用
prestashop 1.5.3
,我正在开发支付网关的问题是我找不到如何在购物车中以编程方式添加产品并订购添加支付费用
Please anyone help me 请有人帮帮我
Below is the code for adding multiple products programatically. 以下是以编程方式添加多个产品的代码。 Can be use to add one product also.
也可以用来添加一个产品。 Put these code in a file called test.php on your website root and then run it like this /test.php??products_ids=11,9,10 where 11, 9,10 are 3 products id.
将这些代码放在您的网站根目录下名为test.php的文件中,然后像/test.php??products_ids=11,9,10那样运行它,其中11,9,10是3个产品ID。 Hope this helps.
希望这可以帮助。
<?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);
}
}
?>
you can place this code in a php file in your Root directory and use a simple form directing to this page containing product id & quantity. 您可以将此代码放在Root目录中的php文件中,并使用一个简单的表单指向包含产品ID和数量的页面。
Just change: 只是改变:
<?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');
If you develop a payment module, you should first check how are made other payments modules, for exemple Ogone or Paypal module. 如果您开发支付模块,您应首先检查如何制作其他支付模块,例如Ogone或Paypal模块。 You can find them here : https://github.com/PrestaShop/PrestaShop-modules
你可以在这里找到它们: https : //github.com/PrestaShop/PrestaShop-modules
The method used in prestashop to add / delete products from cart is Cart->updateQty() (in file classes/Cart.php). prestashop中用于从购物车添加/删除产品的方法是Cart-> updateQty()(在文件类/ Cart.php中)。
<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>
Now just add id of product...or any combinations (commented) 现在只需添加产品ID ...或任何组合(评论)
// 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
// )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.