feat: add fiscalization settings, POST callbacks and fix callback issues

This commit is contained in:
2026-10-26 17:54:23 +03:00
committed by Git Moneta
parent a9bc7f315c
commit b1acb1a1de
13 changed files with 1585 additions and 335 deletions
+55
View File
@@ -0,0 +1,55 @@
<?php
declare(strict_types=1);
namespace Opencart\Catalog\Controller\Extension\PayAnyWay\Startup;
require_once DIR_EXTENSION . '/payanyway/catalog/library/payanyway/traits/payanyway.php';
/**
* @package Opencart\Catalog\Controller\Extension\PayAnyWay\Startup
*/
class PayAnyWay extends \Opencart\System\Engine\Controller
{
use \Opencart\Catalog\Library\Extension\PayAnyWay\Traits\PayAnyWay;
public const CALLBACK_ROUTE = 'extension/payanyway/payment/callback';
// checkout/confirm.confirm (4.0.2+) и checkout/confirm|confirm (4.0.0–4.0.1); не checkout/success.
private const CHECKOUT_ROUTE_PATTERN = '/^checkout\/(checkout|confirm)([.|]|$)/';
public function index(): void
{
if (!isset($this->request->get['route'])) {
if (($this->request->post['route'] ?? null) === self::CALLBACK_ROUTE) {
$this->request->get['route'] = self::CALLBACK_ROUTE;
}
return;
}
if (is_string($this->request->get['route']) && preg_match(self::CHECKOUT_ROUTE_PATTERN, $this->request->get['route'])) {
$this->releaseClosedSessionOrder();
}
}
private function releaseClosedSessionOrder(): void
{
$this->loadOrder($this->getOrderIdFromSession());
if (([] === $this->orderInfo) || !$this->isPaidWithModule()) {
return;
}
if (0 === (int)$this->orderInfo['order_status_id']) {
unset($this->session->data['order_id']);
return;
}
$this->initializeModule();
$orderStatusId = (int)($this->orderInfo['order_status_id'] ?? 0);
if (($this->successOrderStatusId > 0) && !$this->isAwaitingPayment($orderStatusId)) {
unset($this->session->data['order_id']);
}
}
}