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