Vyrábam modul platobnej brány na základe modulu Authorize.net (cieľ). Problém je, že po overení 3DSecure sa presmeruje späť na webovú stránku, ale myslím, že vozík nie je v kontexte.
Pred presmerovaním ukladám ID košíka do relácie.
Háda nasledujúcu chybu:
"Košík sa nedá načítať alebo objednávka už bola umiestnená pomocou tohto košíka"
Toto sa spúšťa:
if (Validate::isLoadedObject($this->context->cart) && $this->context->cart->OrderExists() == false)
na riadku 188 tried / PaymentModule.php
Ako môžem načítať / znovu načítať vozík?
Vďaka
Jacques
odpovede:
1 pre odpoveď č. 1V mnohých platobných moduloch služba Prestashop vytvára objednávku pred presmerovaním banky s chýbajúcim stavom platby a čaká na potvrdenie banky, aby aktualizoval objednávku.
Ak chcete ešte regenerovať vozík, môžete to urobiť pomocou funkcie submitReorder functionnality v 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");
}