2015-08-24 2 views
0

Я создаю модуль платежного шлюза на основе модуля Authorize.net (цель). Проблема в том, что после проверки 3DSecure она перенаправляется обратно на веб-сайт, но тележка не в контексте, я думаю.Prestashop 1.6 Восстановление корзины после перенаправления 3DSecure

Прежде чем я перенаправляю, я сохраняю идентификатор корзины на сеанс.

Он выдает следующее сообщение об ошибке:

«Корзина не может быть загружена или заказ уже размещен с помощью этой корзинки»

Это инициируется:

if (Validate::isLoadedObject($this->context->cart) && $this->context->cart->OrderExists() == false) 

на линии 188 классы/PaymentModule.php

Как я могу загрузить/перезагрузить корзину?

Благодаря

Жак

ответ

1

Во многих платежных модулей, Prestashop создать заказ перед банком перенаправлять с отсутствующими статус платежа и ждать подтверждения банка обновить заказ.

Если вы хотите восстановить регенерацию тележки, вы можете сделать это с помощью функциональности submitReorder в ParentOrderController.

 $oldCart = new Cart(Order::getCartIdStatic($id_order, $this->context->customer->id)); 
     $duplication = $oldCart->duplicate(); 
     if (!$duplication || !Validate::isLoadedObject($duplication['cart'])) { 
      $this->errors[] = Tools::displayError('Sorry. We cannot renew your order.'); 
     } elseif (!$duplication['success']) { 
      $this->errors[] = Tools::displayError('Some items are no longer available, and we are unable to renew your order.'); 
     } else { 
      $this->context->cookie->id_cart = $duplication['cart']->id; 
      $context = $this->context; 
      $context->cart = $duplication['cart']; 
      CartRule::autoAddToCart($context); 
      $this->context->cookie->write(); 
      if (Configuration::get('PS_ORDER_PROCESS_TYPE') == 1) { 
       Tools::redirect('index.php?controller=order-opc'); 
      } 
      Tools::redirect('index.php?controller=order'); 
     } 
+0

- как сохранить заказ перед перенаправлением - Google не помогает – Jacques

Смежные вопросы