• Модуль: 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;
}