50 lines
1.9 KiB
PHP
50 lines
1.9 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
namespace paygw_moneta\local\protocol;
|
||
|
||
/**
|
||
* Коды `MNT_RESULT_CODE` ответов модуля (`MONETA.Assistant.ru.pdf`, гл. 4–5).
|
||
*
|
||
* На Check URL код описывает состояние заказа; на Pay URL сервис считает
|
||
* уведомление доставленным только при 200, при 100/302/402 повторяет его,
|
||
* при 500 прекращает попытки.
|
||
*
|
||
* @package paygw_moneta
|
||
* @copyright 2026 Moneta Labs {@link https://moneta.ru/}
|
||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||
*/
|
||
enum ResultCode: int
|
||
{
|
||
/** Ответ содержит сумму заказа — в проверочном запросе `MNT_AMOUNT` не было. */
|
||
case WithAmount = 100;
|
||
|
||
/** Заказ оплачен, уведомление доставлено. */
|
||
case Paid = 200;
|
||
|
||
/** Заказ в обработке, точный статус определить нельзя. */
|
||
case InProgress = 302;
|
||
|
||
/** Заказ создан и готов к оплате. */
|
||
case AwaitingPayment = 402;
|
||
|
||
/** Заказ неактуален (отменён, не найден); сервис прекращает повторы. */
|
||
case Rejected = 500;
|
||
|
||
/**
|
||
* Текст для `MNT_DESCRIPTION` / `description`: без кавычек, `&`, `$`, `#`
|
||
* и слэшей — требование `cmsspecification.pdf` к значениям ответа.
|
||
*/
|
||
public function description(): string
|
||
{
|
||
return match ($this) {
|
||
self::WithAmount => 'Order amount',
|
||
self::Paid => 'Order is paid',
|
||
self::InProgress => 'Order is being processed',
|
||
self::AwaitingPayment => 'Order created, but not paid',
|
||
self::Rejected => 'Order is not available',
|
||
};
|
||
}
|
||
}
|