feat: moneta 2.0, MONETA.Assistant payment module for PHPShop 6.7+
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
use MonetaPhpShop\callback\CallbackController;
|
||||
use MonetaPhpShop\callback\ThrottledLogger;
|
||||
use MonetaPhpShop\host\Database;
|
||||
use MonetaPhpShop\host\ErrorLogLogger;
|
||||
use MonetaPhpShop\host\HostReceiptSource;
|
||||
use MonetaPhpShop\host\MysqlLogThrottle;
|
||||
use MonetaPhpShop\host\MysqlOrderLock;
|
||||
use MonetaPhpShop\host\OperationRepository;
|
||||
use MonetaPhpShop\host\OrderRepository;
|
||||
use MonetaPhpShop\host\SettingsRepository;
|
||||
use MonetaPhpShop\host\ShopContext;
|
||||
use MonetaPhpShop\ModuleInfo;
|
||||
use MonetaPhpShop\protocol\CallbackResponse;
|
||||
|
||||
/**
|
||||
* Check URL è Pay URL ìîäóëÿ «Ìîíåòà».
|
||||
* Çàãðóæàåòñÿ íàïðÿìóþ, ìèìî index.php; ÿäðî ïîäíèìàåòñÿ òàê æå, êàê â êîëáýêàõ øòàòíûõ ìîäóëåé.
|
||||
* Âñÿ ëîãèêà — â {@see \MonetaPhpShop\callback\CallbackController}.
|
||||
*/
|
||||
|
||||
// Îòâåò — òîëüêî XML/JSON/FAIL: ïðåäóïðåæäåíèÿ ÿäðà PHPShop íå äîëæíû ïîïàñòü â òåëî.
|
||||
ini_set('display_errors', '0');
|
||||
ob_start();
|
||||
|
||||
$_classPath = dirname(__DIR__, 3) . '/';
|
||||
|
||||
require_once $_classPath . 'class/obj.class.php';
|
||||
require_once $_classPath . 'class/mail.class.php';
|
||||
require_once dirname(__DIR__) . '/class/autoload.php';
|
||||
|
||||
PHPShopObj::loadClass([
|
||||
'base', 'lang', 'order', 'file', 'xml', 'orm', 'payment', 'modules', 'system', 'security',
|
||||
'parser', 'string', 'array', 'date', 'delivery', 'product', 'valuta',
|
||||
]);
|
||||
|
||||
$PHPShopBase = new PHPShopBase($_classPath . 'inc/config.ini');
|
||||
$PHPShopSystem = new PHPShopSystem();
|
||||
$PHPShopModules = new PHPShopModules($_classPath . 'modules/');
|
||||
$PHPShopLang = new PHPShopLang();
|
||||
|
||||
/**
|
||||
* @param CallbackResponse $response
|
||||
*/
|
||||
function moneta_callback_send($response)
|
||||
{
|
||||
while (ob_get_level() > 0) {
|
||||
ob_end_clean();
|
||||
}
|
||||
header('Content-Type: ' . $response->getContentType());
|
||||
echo $response->getBody();
|
||||
}
|
||||
|
||||
$logger = new ErrorLogLogger();
|
||||
|
||||
// checkInstall() ÿäðà äåëàåò exit ñ òåêñòîì — âûêëþ÷åííûé ìîäóëü îòâå÷àåì ïðîòîêîëîì.
|
||||
// Òàáëèö âûêëþ÷åííîãî ìîäóëÿ íåò, ñ÷¸ò÷èêà ÷àñòîòû òîæå: òàêèå îòêàçû ïèøóòñÿ âñå.
|
||||
if (empty($PHPShopModules->ModValue['base'][ModuleInfo::PATH])) {
|
||||
$logger->error('Óâåäîìëåíèå îòêëîíåíî: ìîäóëü âûêëþ÷åí â PHPShop.');
|
||||
moneta_callback_send(CallbackResponse::fail());
|
||||
exit;
|
||||
}
|
||||
|
||||
try {
|
||||
$database = Database::fromHost();
|
||||
$shopContext = new ShopContext();
|
||||
$settings = (new SettingsRepository())->load();
|
||||
$controller = new CallbackController(
|
||||
$settings,
|
||||
$shopContext->orderCurrency(),
|
||||
$shopContext->cms(),
|
||||
new OrderRepository(),
|
||||
new OperationRepository($database),
|
||||
new MysqlOrderLock($database),
|
||||
new HostReceiptSource($settings, $database, $logger),
|
||||
$logger,
|
||||
new ThrottledLogger($logger, new MysqlLogThrottle($database))
|
||||
);
|
||||
// Ìåòîä (GET èëè POST) çàäà¸òñÿ â íàñòðîéêàõ ñ÷¸òà MONETA.RU — ÷èòàåì îáà, ïðèîðèòåò ó POST.
|
||||
$response = $controller->handle(CallbackController::requestFields($_GET, $_POST));
|
||||
} catch (\Throwable $exception) {
|
||||
$logger->error('Ñáîé êîëáýêà: ' . get_class($exception) . ': ' . $exception->getMessage());
|
||||
$response = CallbackResponse::fail();
|
||||
}
|
||||
|
||||
moneta_callback_send($response);
|
||||
Reference in New Issue
Block a user