52 lines
1.6 KiB
PHP
52 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace MonetaPhpShop\protocol;
|
|
|
|
/**
|
|
* Êîíñòàíòû ïðîòîêîëà MONETA.Assistant (`MONETA.Assistant.ru.pdf`).
|
|
*/
|
|
final class AssistantProtocol
|
|
{
|
|
/** `MNT_COMMAND` ïðîâåðî÷íîãî çàïðîñà íà Check URL; íà Pay URL ïàðàìåòðà íåò. */
|
|
public const COMMAND_CHECK = 'CHECK';
|
|
|
|
/** Òåêñòîâûé îòêàç íà Check/Pay URL: ñåðâèñ ïîâòîðèò óâåäîìëåíèå. */
|
|
public const TEXT_FAIL = 'FAIL';
|
|
|
|
/** Åäèíñòâåííàÿ âàëþòà ìîäóëÿ (ISO 4217). */
|
|
public const CURRENCY_RUB = 'RUB';
|
|
|
|
private function __construct() {}
|
|
|
|
/**
|
|
* ISO-êîä âàëþòû ìàãàçèíà -> `MNT_CURRENCY_CODE`; null — âàëþòà ìîäóëåì íå ïîääåðæèâàåòñÿ.
|
|
* `RUR` — óñòàðåâøèé êîä ðóáëÿ, êîòîðûé åù¸ âñòðå÷àåòñÿ â ñïðàâî÷íèêàõ âàëþò ìàãàçèíîâ.
|
|
*/
|
|
public static function normalizeCurrency(string $iso): ?string
|
|
{
|
|
$iso = strtoupper(trim($iso));
|
|
|
|
return (($iso === self::CURRENCY_RUB) || ($iso === 'RUR')) ? self::CURRENCY_RUB : null;
|
|
}
|
|
|
|
/**
|
|
* Çíà÷åíèå `MNT_TEST_MODE` äëÿ ôîðìû è ïîäïèñè.
|
|
*/
|
|
public static function testModeFlag(bool $testMode): string
|
|
{
|
|
return $testMode ? '1' : '0';
|
|
}
|
|
|
|
/**
|
|
* ßçûê âèòðèíû PHPShop (`russian`, `russian_utf`, `english`, `english_utf`) ->
|
|
* `moneta.locale` ïëàò¸æíîé ôîðìû. Ìîíåòà çíàåò òîëüêî `ru` è `en`
|
|
* (`MONETA.Assistant.ru.pdf`, ïàðàìåòðû çàïðîñà): àíãëèéñêàÿ âèòðèíà — `en`, îñòàëüíûå — `ru`.
|
|
*/
|
|
public static function normalizeLocale(string $shopLocale): string
|
|
{
|
|
return strncmp(strtolower(trim($shopLocale)), 'english', 7) === 0 ? 'en' : 'ru';
|
|
}
|
|
}
|