• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/orderfacade.php
  • Класс: BitrixSaleOrderFacade
  • Вызов: OrderFacade::payOrder
static function payOrder($id)
{
	$result = new Result();

	$registry = Registry::getInstance(Registry::REGISTRY_TYPE_ORDER);
	/** @var Order $orderClassName */
	$orderClassName = $registry->getOrderClassName();

	$order = $orderClassName::load($id);
	if (!$order)
	{
		$result->addError(new Error(Loc::getMessage('SALE_GROUP_ACTION_ERR_ORDER_NOT_FOUND')));
		return $result;
	}

	$collection = $order->getPaymentCollection();
	/** @var Payment $payment */
	foreach ($collection as $payment)
	{
		if (!$payment->isPaid())
		{
			$r = $payment->setPaid('Y');
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
				return $result;
			}
		}
	}

	if (!$order->isPaid())
	{
		$payment = static::createFinalPayment($order);
		if ($payment === null)
		{
			$result->addError(
				new Error(
					Loc::getMessage('SALE_GROUP_ACTION_ERR_PAYMENT_CREATE')
				)
			);
			return $result;
		}
	}

	$r = $order->save();
	if (!$r->isSuccess())
	{
		$result->addErrors($r->getErrors());
	}

	return $result;
}