• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/payment.php
  • Класс: BitrixSaleControllerPayment
  • Вызов: Payment::addAction
public function addAction(array $fields)
{
	$result = null;

	$data = [];
	$data['ORDER']['ID'] = $fields['ORDER_ID'];
	$data['ORDER']['PAYMENTS'] = [$fields];

	$builder = $this->getBuilder(
		new SettingsContainer([
			'deletePaymentIfNotExists' => false
		])
	);

	$builder->buildEntityPayments($data);

	if($builder->getErrorsContainer()->getErrorCollection()->count()>0)
	{
		$this->addErrors($builder->getErrorsContainer()->getErrors());
		return null;
	}

	$order=$builder->getOrder();
	$idx=0;
	$collection = $order->getPaymentCollection();
	/** @var BitrixSalePayment $payment */
	foreach($collection as $payment)
	{
		if($payment->getId() <= 0)
		{
			$idx = $payment->getInternalIndex();
			break;
		}
	}

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

	/** @var BitrixSalePayment $entity */
	$entity = $order->getPaymentCollection()->getItemByIndex($idx);
	return ['PAYMENT'=>$this->get($entity)];
}