iikoFront API SDK

Больше подробностей о неуспешной оплате

[ v8preview7  v8  ]

В API V8Preview7 стало еще удобнее анализировать ошибки оплаты.

Методы PayOrder и PayOrderAndPayOutOnUser могут генерировать эксепшн PaymentActionFailedException в случае, если при обработке оплаты возникла ошибка. При этом в распоряжении разработчиков плагинов было только сообщение об ошибке Exception.Message, с которым неудобно работать и классифицировать.

В новой версии в PaymentActionFailedException было добавлено свойство Reason — классифицируемая причина ошибки, которая не может быть null, если эксепшн был выброшен из методов PayOrder или PayOrderAndPayOutOnUser. При этом Reason может принимать такие значения PaymentActionFailedExceptionReason:

/// <summary>
/// Reason for throwing <see cref="PaymentActionFailedException"/>.
/// </summary>
[PublicAPI]
public enum PaymentActionFailedExceptionReason
{
 OrderNotFound,
 CannotLockOrder,
 OrderStatusIsNotOpened,
 BanquetOrderNotSupported,

 DeliveryOrderStatusIsUnconfirmed,
 DeliveryOrderHasPurchases,
 DeliveryOrderPrepayAndCloseOnDifferentTerminalNotSupported,

 PayInTypeIsIncorrect,
 PayOutTypeIsIncorrect,
 PayOutOnUserFailed,

 CafeSessionNotFound,
 CashRegisterNotFound,
 OnlyVirtualCashRegisterForPurchasesSupported,

 UserNotFound,
 UserPersonalSessionNotOpened,
 NoUserPermissionsToPayAsWaiter,
 NoUserPermissionsToPayOthersOrder,
 NoUserPermissionsToApprovePointsAccural,
 UserCashDrawerNotFound,

 PaymentTypeNotSpecified,
 PaymentTypeNotConfigured,
 UncombinablePaymentTypes,
 UncombinablePaymentTypesFiscalNonFiscal,
 AutomaticPaymentTypeNotFound,
 NotProcessedNotSilentPaymentsNotSupported,
 PayOrderFailed,
 CannotPrintOrder,
 CannotEditStopList,
 OrderBillOperationFailed,
 PaymentsProcessingCanceled,
 PaymentsProcessingFailed,
 BeforeDoChequeOperationFailed,
 ChequeTaskProcessorFailed,
 CashRegisterOperationFailed,

 MoreThanOnePaymentsWithChange,
 ChangeSumEqualToPaymentsWithChangeSum,
 ChangeSumGreaterThanPaymentsWithChangeSum,

 PaymentSumNotEnough,
 PaymentSumNotIntegral,
 PaymentSumTooLarge,
 CashForChangeNotEnough,

 BillOrderBeforePayment,
 SplitOrderBeforePayment,

 CookingPlacesWithEmptyStores,
 TimePayProductsInOrder,

 ChequeSmsSendingNotSupported,
 ChequeEmailSendingNotSupported,
 ChequeSettlementPlaceNotSupported,
}

Из которых только

имеют указанное новое свойство PaymentActionFailedException.Details, в котором будет сообщение эксепшена, генерируемое другим плагином в