PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Thursday, June 30, 2022

[FIXED] How to add payment fee to cart in Prestashop?

 June 30, 2022     payment, php, prestashop     No comments   

Issue

I want to add payment fee to cart with a product created for payment fees. But when i add to cart the product for fee then i use $cart->getOrderTotal(), it doesn't show the real price with fee. It shows the order total as product price without fee.

I use SpecificPrice class for this action. And i think prestashop orders page on back office, firstly reads products with specific prices. However, it does not show the payment price, but shows it together with the price of the product I added.

Maybe you didn't understand it like that, but I explained it better in the comments below. Please help me. I've been struggling for 2 days. :(

$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;

Solution

I was solved the problem. The problem was clearing the card cache after adding the product to cart.

If you encounter this problem, add the following code before the validateOrder function.

Cart::resetStaticCache();


Answered By - emrez
Answer Checked By - Mary Flores (PHPFixing Volunteer)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing