- Модуль: crmmobile
- Путь к файлу: ~/bitrix/modules/crmmobile/lib/Controller/Action/Terminal/CreatePaymentAction.php
- Класс: BitrixCrmMobileControllerActionTerminalCreatePaymentAction
- Вызов: CreatePaymentAction::run
public function run(
float $sum,
string $currency,
string $phoneNumber = null,
?array $client = null,
?string $clientName = null
)
{
$order = $this->createOrder($currency);
$this->setTerminalPlatform($order);
$product = $this->prepareBasketProduct($sum, $currency);
$basket = $this->createBasket($product);
$setBasketResult = $order->setBasket($basket);
if (!$setBasketResult->isSuccess())
{
$this->addErrors($setBasketResult->getErrors());
return null;
}
if ($phoneNumber)
{
$this->setProperties($order, $phoneNumber);
}
$payment = $this->createPayment($order);
$setContactCompanyResult = null;
if ($client)
{
$setContactCompanyResult = $this->setContactCompany($order, $client);
}
elseif ($clientName || $phoneNumber)
{
$contactCompanyResult = $this->createContactCompany($phoneNumber, $clientName);
if ($contactCompanyResult->isSuccess())
{
$setContactCompanyResult = $this->setContactCompany(
$order,
[
'entityTypeId' => CCrmOwnerType::Contact,
'id' => $contactCompanyResult->getId()
]
);
}
else
{
$this->addErrors($contactCompanyResult->getErrors());
return null;
}
}
if ($setContactCompanyResult && !$setContactCompanyResult->isSuccess())
{
$this->addErrors($setContactCompanyResult->getErrors());
return null;
}
$hasMeaningfulFields = $order->hasMeaningfulField();
$finalActionResult = $order->doFinalAction($hasMeaningfulFields);
if (!$finalActionResult->isSuccess())
{
$this->addErrors($finalActionResult->getErrors());
return null;
}
$result = $order->save();
if (!$result->isSuccess())
{
$this->addErrors($result->getErrors());
return null;
}
return [
'payment' => (new GetPaymentQuery($payment->getId()))->execute(),
];
}