• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/paysystem/restservice.php
  • Класс: BitrixSalePaySystemRestService
  • Вызов: RestService::payInvoice
static function payInvoice(array $params, $n, CRestServer $server)
{
	if (!MainLoader::includeModule('crm'))
	{
		throw new RestException('Pay invoice is not supported!', self::ERROR_PAY_INVOICE_NOT_SUPPORTED);
	}

	static::checkOrderPermission();

	$params = self::prepareIncomingParams($params);

	self::checkParamsForInvoice($params);

	$dbRes = InvoicePayment::getList(array(
		'select' => array('ID'),
		'filter' => array(
			'ORDER_ID' => $params['INVOICE_ID'],
			'!PAY_SYSTEM_ID' => Manager::getInnerPaySystemId(),
		)
	));

	$payment = $dbRes->fetch();
	if (!$payment)
	{
		throw new RestException('Invoice #'.$params['INVOICE_ID'].' not found', self::ERROR_INTERNAL_INVOICE_NOT_FOUND);
	}

	$params['PAYMENT_ID'] = $payment['ID'];

	$filter = [
		'=ENTITY_REGISTRY_TYPE' => REGISTRY_TYPE_CRM_INVOICE
	];

	if (isset($params['PAY_SYSTEM_ID']))
	{
		$filter['=ID'] = $params['PAY_SYSTEM_ID'];
	}
	else
	{
		$filter['=ACTION_FILE'] = $params['BX_REST_HANDLER'];
	}

	$dbRes = Manager::getList([
		'select' => ['ID'],
		'filter' => $filter
	]);
	$item = $dbRes->fetch();
	if (!$item)
	{
		throw new RestException('Pay system not found', static::ERROR_PROCESS_REQUEST_RESULT);
	}

	$params['PAY_SYSTEM_ID'] = $item['ID'];

	return self::payPaymentInternal($params, $server);
}