php - 如何在 Prestashop 中将付款费用添加到购物车?
问题描述
我想使用为支付费用创建的产品将支付费用添加到购物车。但是当我将产品添加到购物车以收取费用时,我使用 $cart->getOrderTotal(),它并没有显示实际价格和费用。它将订单总额显示为免费的产品价格。
我为此操作使用 SpecificPrice 类。而且我认为后台的 prestashop 订单页面首先会读取具有特定价格的产品。但是,它没有显示付款价格,而是与我添加的产品的价格一起显示。
也许你不理解它,但我在下面的评论中解释得更好。请帮我。我已经挣扎了2天。:(
$specific_price = new SpecificPrice();
$specific_price->id_product = 50; // choosen product id
$specific_price->id_customer = (int) $cart->id_customer;
$specific_price->id_product_attribute = 0;
$specific_price->id_cart = (int)$cart->id;
$specific_price->id_shop = (int) $cart->id_shop;
$specific_price->id_currency = (int) $cart->id_currency;
$specific_price->id_country = Context::getContext()->country->id;
$specific_price->id_group = 0;
$specific_price->from_quantity = 1;
$specific_price->price = $installment_fee; //installment fee is here. (example: 1.13)
$specific_price->reduction_type = 'amount';
$specific_price->reduction_tax = 1;
$specific_price->reduction = 0;
$specific_price->from = date("Y-m-d H:i:s");
$dateUntil = new DateTime(); $dateUntil->modify("+2 days");
$specific_price->to = $dateUntil->format('Y-m-d H:i:s'); // or set date x days from now
try{
$specific_price->add(1,1);
} catch (\Exception $exception)
{
echo $exception->getMessage(); die;
}
//cart product price = 30
//installment fee product = 10 (i want to edit it with installment fee (ex: 1.13))
$cart->updateQty(1,50);
//the real product is here. Price: 10, but i want to use it with specific price created above.So product price + specific price.
//but it shows product price(30) + product price(10)
//but i want product price(30) + product price(1.13)
echo '<pre>';
print_r($cart->getOrderTotal()); //it shows 40 but i want 31.13
exit;
解决方案
我解决了这个问题。问题是在将产品添加到购物车后清除卡缓存。
如果遇到此问题,请在 validateOrder 函数之前添加以下代码。
Cart::resetStaticCache();
推荐阅读
- python - 熊猫:对复杂函数应用滚动窗口(赫斯特指数)
- python - 从列表类别创建递归列表
- firebase-realtime-database - 从音乐流媒体服务中实时采集数据
- php - Laravel 7:使用模型连接 3 个表
- c++ - 为什么我可以在 C++ 中使用 for 循环将右值绑定到非 const 引用?
- python-3.x - Flask:检查上传文件的大小
- ada - Ada:如何在不同机器上的可执行文件之间发送和接收对象
- flutter - RangeError(开始):无效值:只有有效值是0:1
- vue.js - 如何卸载 Nuxt 模块和软件包
- docker - 无法通过 Docker 使用 OpenVINO Workbench 推断 Movidius (NCS2):驱动程序设置失败?