feat: moneta 2.0, MONETA.Assistant payment module for PHPShop 6.7+
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace MonetaPhpShop\callback;
|
||||
|
||||
use MonetaPhpShop\order\PaymentEligibility;
|
||||
use MonetaPhpShop\protocol\ResultCode;
|
||||
|
||||
/**
|
||||
* ×òî ìîäóëü ñäåëàë ñ ïîäïèñàííûì óâåäîìëåíèåì — êîëîíêà `event` æóðíàëà îïåðàöèé.
|
||||
* Çíà÷åíèÿ ïåðñèñòÿòñÿ è ïîêàçûâàþòñÿ â æóðíàëå àäìèíêè — íå ïåðåèìåíîâûâàòü.
|
||||
* Ïðè÷èíû îòêàçà ïî çàêàçó áåðóòñÿ èç {@see \MonetaPhpShop\order\PaymentEligibility}.
|
||||
*/
|
||||
final class CallbackEvent
|
||||
{
|
||||
/** Ïðîâåðî÷íûé çàïðîñ, çàêàç ìîæíî îïëàòèòü (402 èëè 100). */
|
||||
public const CHECKED = 'checked';
|
||||
|
||||
/** Îïëàòà çà÷òåíà: çàêàç ïåðåâåä¸í â ñòàòóñ «ïîñëå îïëàòû». */
|
||||
public const PAID = 'paid';
|
||||
|
||||
/** Îïëàòà çà÷òåíà, íî çàêàç óæå áûë îïëà÷åí â ìàãàçèíå — ñòàòóñ íå òðîãàëè. */
|
||||
public const ALREADY_PAID_IN_SHOP = 'already_paid_in_shop';
|
||||
|
||||
/** Ïîâòîð óâåäîìëåíèÿ ïî óæå çà÷ò¸ííîé îïåðàöèè: îòâåò 200 áåç ïîáî÷íûõ ýôôåêòîâ. */
|
||||
public const REPEAT = 'repeat';
|
||||
|
||||
/** Âòîðàÿ îïåðàöèÿ MONETA.RU ïî îïëà÷åííîìó çàêàçó: äåíüãè ñïèñàíû äâàæäû, íóæåí ÷åëîâåê. */
|
||||
public const DUPLICATE_OPERATION = 'duplicate_operation';
|
||||
|
||||
/** Íîìåð çàêàçà èç `MNT_TRANSACTION_ID` íå íàéäåí. */
|
||||
public const UNKNOWN_ORDER = 'unknown_order';
|
||||
|
||||
/** Ñóììà çàêàçà èçìåíèëàñü ïîñëå ïîêàçà ôîðìû: îïëàòà ïî ñòàðîé ôîðìå íå ïðèíèìàåòñÿ. */
|
||||
public const ORDER_AMOUNT_CHANGED = 'order_amount_changed';
|
||||
|
||||
public const AMOUNT_MISMATCH = 'amount_mismatch';
|
||||
public const CURRENCY_MISMATCH = 'currency_mismatch';
|
||||
|
||||
/** `MNT_TEST_MODE` óâåäîìëåíèÿ íå ñîâïàë ñ òåñòîâûì ðåæèìîì ìîäóëÿ. */
|
||||
public const TEST_MODE_MISMATCH = 'test_mode_mismatch';
|
||||
|
||||
/** Çàêàç íå ïåðåâ¸ëñÿ â îïëà÷åííûå (îøèáêà ÿäðà PHPShop) — ïîâòîð óâåäîìëåíèÿ ïîïðîáóåò ñíîâà. */
|
||||
public const ORDER_UPDATE_FAILED = 'order_update_failed';
|
||||
|
||||
/** Ôèñêàëèçàöèÿ âêëþ÷åíà, à ÷åê äëÿ JSON-îòâåòà íå ñîáðàí. */
|
||||
public const RECEIPT_UNAVAILABLE = 'receipt_unavailable';
|
||||
|
||||
/** Íå äîæäàëèñü áëîêèðîâêè çàêàçà: ïàðàëëåëüíî îáðàáàòûâàåòñÿ äðóãîå óâåäîìëåíèå. */
|
||||
public const LOCK_TIMEOUT = 'lock_timeout';
|
||||
|
||||
/** Ïîäïèñè äëÿ æóðíàëà îïåðàöèé â àäìèíêå. */
|
||||
private const LABELS = [
|
||||
self::CHECKED => 'Ïðîâåðêà çàêàçà',
|
||||
self::PAID => 'Îïëàòà çà÷òåíà',
|
||||
self::ALREADY_PAID_IN_SHOP => 'Îïëàòà çà÷òåíà, çàêàç óæå áûë îïëà÷åí â ìàãàçèíå',
|
||||
self::REPEAT => 'Ïîâòîð óâåäîìëåíèÿ',
|
||||
self::DUPLICATE_OPERATION => 'Âòîðàÿ îïëàòà îïëà÷åííîãî çàêàçà: ñäåëàéòå âîçâðàò â ëè÷íîì êàáèíåòå MONETA.RU',
|
||||
self::UNKNOWN_ORDER => 'Çàêàç íå íàéäåí',
|
||||
self::ORDER_AMOUNT_CHANGED => 'Ñóììà çàêàçà èçìåíèëàñü ïîñëå ïîêàçà ôîðìû îïëàòû',
|
||||
self::AMOUNT_MISMATCH => 'Ñóììà íå ñîâïàäàåò ñ çàêàçîì',
|
||||
self::CURRENCY_MISMATCH => 'Âàëþòà íå ñîâïàäàåò',
|
||||
self::TEST_MODE_MISMATCH => 'Òåñòîâûé ðåæèì íå ñîâïàäàåò ñ íàñòðîéêîé ìîäóëÿ',
|
||||
self::ORDER_UPDATE_FAILED => 'Íå óäàëîñü ïåðåâåñòè çàêàç â îïëà÷åííûå',
|
||||
self::RECEIPT_UNAVAILABLE => '×åê íå ñîáðàí',
|
||||
self::LOCK_TIMEOUT => 'Çàêàç çàíÿò ïàðàëëåëüíûì óâåäîìëåíèåì',
|
||||
PaymentEligibility::NOT_CONFIGURED => 'Ìîäóëü íå íàñòðîåí',
|
||||
PaymentEligibility::OTHER_PAYMENT_METHOD => 'Ó çàêàçà äðóãîé ñïîñîá îïëàòû',
|
||||
PaymentEligibility::ALREADY_PAID => 'Çàêàç óæå îïëà÷åí',
|
||||
PaymentEligibility::CANCELLED => 'Çàêàç îòìåí¸í',
|
||||
PaymentEligibility::AWAITING_STATUS => 'Çàêàç åù¸ íå ïîäòâåðæä¸í ìåíåäæåðîì',
|
||||
PaymentEligibility::UNSUPPORTED_CURRENCY => 'Âàëþòà ìàãàçèíà íå ðóáëè',
|
||||
PaymentEligibility::ZERO_AMOUNT => 'Íóëåâàÿ ñóììà çàêàçà',
|
||||
];
|
||||
|
||||
private function __construct() {}
|
||||
|
||||
/**
|
||||
* Çíà÷îê ñòðîêè æóðíàëà îïåðàöèé â àäìèíêå — glyphicon Bootstrap 3, êîòîðûé àäìèíêà PHPShop
|
||||
* ïîñòàâëÿåò ñî ñâîèìè òåìàìè (`admpanel/fonts/`, êëàññû `glyphicon-*` — â 6.7 â êàæäîé òåìå,
|
||||
* â 7.0 â `bootstrap.min.css`); öâåòà — êëàññû òåìû. Îïëàòà çà÷òåíà — çåë¸íàÿ ãàëî÷êà
|
||||
* â êðóæêå, îòêàç ìîäóëÿ (`FAIL` èëè êîä 500) — êðàñíûé êðåñòèê, ïðîâåðêà çàêàçà — ñåðûé
|
||||
* âîïðîñ; îñòàëüíîå (ïîâòîð óâåäîìëåíèÿ) — áåç çíà÷êà.
|
||||
*
|
||||
* @param int|null $resultCode `MNT_RESULT_CODE` îòâåòà ìîäóëÿ; null — îòâåò `FAIL`
|
||||
*/
|
||||
public static function iconHtml(string $event, ?int $resultCode): string
|
||||
{
|
||||
if ($event === self::PAID || $event === self::ALREADY_PAID_IN_SHOP) {
|
||||
return self::glyphicon('ok-sign', 'text-success');
|
||||
}
|
||||
if ($resultCode === null || $resultCode === ResultCode::REJECTED) {
|
||||
return self::glyphicon('remove-sign', 'text-danger');
|
||||
}
|
||||
if ($event === self::CHECKED) {
|
||||
return self::glyphicon('question-sign', 'text-muted');
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
private static function glyphicon(string $name, string $color): string
|
||||
{
|
||||
return '<span class="glyphicon glyphicon-' . $name . ' ' . $color . '" aria-hidden="true"></span>';
|
||||
}
|
||||
|
||||
/**
|
||||
* Ïîäïèñü ñîáûòèÿ; íåèçâåñòíûé êîä (èç áóäóùåé âåðñèè) ïîêàçûâàåòñÿ êàê åñòü.
|
||||
*/
|
||||
public static function label(string $event): string
|
||||
{
|
||||
return self::LABELS[$event] ?? $event;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user