• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/service.php
  • Класс: BitrixSalePaySystemService
  • Вызов: Service::check
public function check(Payment $payment)
{
	$result = new ServiceResult();

	if ($this->isCheckable())
	{
		/** @var BitrixSalePaymentCollection $paymentCollection */
		$paymentCollection = $payment->getCollection();

		/** @var BitrixSaleOrder $order */
		$order = $paymentCollection->getOrder();

		if (!$order->isCanceled())
		{
			/** @var ServiceResult $result */
			$checkResult = $this->handler->check($payment);
			if ($checkResult instanceof ServiceResult && $checkResult->isSuccess())
			{
				$psData = $checkResult->getPsData();
				if ($psData)
				{
					$res = $payment->setFields($psData);
					if (!$res->isSuccess())
						$result->addErrors($res->getErrors());
				}

				if ($checkResult->getOperationType() == ServiceResult::MONEY_COMING)
				{
					$res = $payment->setPaid('Y');
					if (!$res->isSuccess())
						$result->addErrors($res->getErrors());
				}

				$res = $order->save();
				if (!$res->isSuccess())
					$result->addErrors($res->getErrors());
			}
			elseif (!$checkResult)
			{
				$result->addError(new Error(Loc::getMessage('SALE_PS_SERVICE_ERROR_CONNECT_PS')));
			}
		}
		else
		{
			$result->addError(new EntityError(Loc::getMessage('SALE_PS_SERVICE_ORDER_CANCELED', array('#ORDER_ID#' => $order->getId()))));
		}
	}

	return $result;
}