/ Prestashop 1.6 Zotavenie koša po 3DSecure redirect - php, prestashop

Prestashop 1.6 Zotavenie koša po 3DSecure redirect - php, prestashop

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ď č. 1

V 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");
}