Zend certified PHP/Magento developer

Magento 2 how to update cart price is modified?

I have a form, and when I submit the first time it adds a product with a custom price, that works fine, then I go to the checkout without problem, but when i hit the back button on browser and change values on the form, the price will change, then if I go to checkout again, new price won’t be shown.

The right total amount will show just after adding billing address information, because it seems like the whole quote-cart component is updated.

This is my code:

Controller

 public function execute(){
        $quote = $this->checkoutSession->getQuote();

        $this->coreSession->start();
        $allItems = $quote->getAllVisibleItems();
        $itemsQty = $quote->getItemsQty();

        $request = $this->getRequest()->getPostValue();

        $product_id = $request['product_id'];
        $price = $request['grand_total'];
        $uniqueid = $request['uniqueid'];

        $this->coreSession->setUniqueid($uniqueid);

            $params = array(
                'formKey' => $this->formKey,
                'product_id' => $product_id,
                'qty' => 0
            );

        $productFactory = $this->product->create();
        try{
                $this->cart->truncate()->save();
                //here I clear the cart so the product is not added more than 1
                $product = $productFactory->load($product_id);
                $this->coreSession->setProductPrice($price);
                $this->cart->addProduct($product,$params);
                $this->cart->save();
                $quote->collectTotals()->save();
         
        }
        catch(Exception $e){
            return $request;
        }
    }

My submit part on the knockout.js component

                  $.ajax({
                        url: cart_url ,
                        data: {product_id: 1,grand_total:data[0].grand_total, uniqueid: data[0].uniqueId},
                        method: "POST"
                    }).done(function(response){
                        console.log('DONE');
                        console.log(response);
                        var sections = ['cart'];
                        customerData.invalidate(sections);
                        customerData.reload(sections, true);
                         window.location.href = checkout_url;
                    }).fail(function(jqXHR, textStatus){
                        console.log('FAILED');
                        console.log(jqXHR.responseText);
                        console.log(jqXHR);
                    });

When I’m redirected to checkout the new price is not shown, just the old one, until I add billing information and hit update it shows the new price.

What am I doing wrong?

Thanks!