Skip to content

HttpClient

Ссылки

  1. https://dev.1c-bitrix.ru/api_d7/bitrix/main/web/httpclient/__construct.php
  2. https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&CHAPTER_ID=02795&sphrase_id=141985274
  3. https://dev.1c-bitrix.ru/api_d7/bitrix/main/web/httpclient/curl.php
  4. https://dev.1c-bitrix.ru/api_d7/bitrix/main/web/httpclient/asynchronous_requests.php
  5. https://dev.1c-bitrix.ru/api_d7/bitrix/main/web/httpclient/legacy.php
  6. https://www.php-fig.org/psr/psr-18/
  7. https://dev.1c-bitrix.ru/api_d7/bitrix/main/web/httpclient/psr18.php
<?php
declare(strict_types=1);

namespace DTerra\App\Http;

use Bitrix\Main\Web\HttpClient;
use DTerra\App\DTO\Lid;

class CRMLidClient
{
    private HttpClient $httpClient;
    private string $baseurl;

    public function __construct()
    {
        $this->baseurl = '...';

        $this->httpClient = new HttpClient();
        $this->httpClient->setHeader('Accept', 'application/json');
    }

    public function createNewLid(Lid $lid): string|bool {

        $url = $this->baseurl . '/crm.lead.add.json';
        $getOptions = [
            'FIELDS[TITLE]' => $lid->getTitle(),
            'FIELDS[NAME]' => $lid->getName(),
            'FIELDS[LAST_NAME]' => $lid->getLastName(),
            'FIELDS[EMAIL][0][VALUE]' => $lid->getEmail(),
            'FIELDS[EMAIL][0][VALUE_TYPE]' => $lid->getEmailType(),
            'FIELDS[PHONE][0][VALUE]' => $lid->getPhone(),
            'FIELDS[PHONE][0][VALUE_TYPE]' => $lid->getPhoneType(),
            'FIELDS[UF_CRM_1726674017653]' => $lid->getFileLink(),
            'FIELDS[SOURCE_ID]' => $lid->getSourceID(),
            'FIELDS[COMMENTS]' => $lid->getComment(),
        ];

        if (!empty($lid->getLidPrice())) {
            $getOptions['FIELDS[OPPORTUNITY]'] = $lid->getLidPrice();
        }

        $url .= '?' . http_build_query($getOptions);

        return $this->httpClient->post(
            $url,
        );
    }

}