- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/cashbox/cashboxyookassa.php
- Класс: BitrixSaleCashboxCashboxYooKassa
- Вызов: CashboxYooKassa::onAfterProcessCheck
protected function onAfterProcessCheck(SaleResult $result, SalePayment $payment): SaleResult
{
$onAfterProcessCheckResult = new SaleResult();
$checkList = CheckManager::getList([
'select' => ['ID'],
'filter' => [
'ORDER_ID' => $payment->getOrderId(),
],
'order' => ['ID' => 'DESC'],
])->fetchAll();
$data = $result->getData();
$checkData = [];
if (isset($data['type']) && $data['type'] === 'list')
{
$checkData = $data['items'] ?? [];
}
if ($checkList)
{
if (!$checkData)
{
$externalCheck = [
'checkId' => $checkList[0]['ID'],
'error' => [
'MESSAGE' => Loc::getMessage('SALE_CASHBOX_YOOKASSA_ERROR_CHECK_NOT_FOUND'),
'TYPE' => ErrorsError::TYPE,
],
];
$applyCheckResult = static::applyCheckResult($externalCheck);
$onAfterProcessCheckResult->addErrors($applyCheckResult->getErrors());
}
foreach ($checkData as $key => $externalCheck)
{
$checkStatus = $externalCheck['status'] ?? '';
switch ($checkStatus)
{
case 'pending':
$externalCheck['error'] = [
'MESSAGE' => Loc::getMessage('SALE_CASHBOX_YOOKASSA_STATUS_CHECK_PENDING'),
'TYPE' => ErrorsWarning::TYPE,
];
break;
case 'canceled':
$externalCheck['error'] = [
'MESSAGE' => Loc::getMessage('SALE_CASHBOX_YOOKASSA_STATUS_CHECK_CANCELLED'),
'TYPE' => ErrorsError::TYPE,
];
break;
}
$externalCheck['checkId'] = $checkList[$key]['ID'];
$applyCheckResult = static::applyCheckResult($externalCheck);
if (!$applyCheckResult->isSuccess())
{
$onAfterProcessCheckResult->addErrors($applyCheckResult->getErrors());
}
}
}
else
{
$onAfterProcessCheckResult->addError(new Error(Loc::getMessage('SALE_CASHBOX_YOOKASSA_ERROR_CHECK_NOT_FOUND')));
}
return $onAfterProcessCheckResult;
}