Связка WordPress и AmoCRM: отправка лидов через cURL без внешних модулей

Использование тяжелых плагинов-интеграторов для AmoCRM часто приводит к потере лидов, если сервер AmoCRM временно недоступен. Более того, они не позволяют гибко передавать кастомные метки сквозной аналитики. Напишем нативный перехватчик отправки форм, передающий данные в AmoCRM через чистый cURL.

1. Авторизация по OAuth 2.0 на чистом PHP

AmoCRM требует передачи Long-Lived Access Token. Реализуем функцию формирования структуры сделки (Lead) и контакта (Contact) в один запрос через эндпоинт комплексного добавления:

function it_gig_send_lead_to_amocrm($name, $phone, $email, $pipeline_id = 123456) {
    $subdomain = 'your_subdomain'; // Ваш субдомен в AmoCRM
    $access_token = 'your_long_lived_token';
    
    $url = "https://{$subdomain}.amocrm.ru/api/v4/leads/complex";
    
    $data = [[
        'title' => 'Заявка с сайта от ' . $name,
        'status_id' => (int)$pipeline_id,
        '_embedded' => [
            'contacts' => [[
                'first_name' => $name,
                'custom_fields_values' => [
                    [
                        'field_id' => 112233, // ID поля Телефон в вашей AmoCRM
                        'values' => [['value' => $phone]]
                    ],
                    [
                        'field_id' => 445566, // ID поля Email в вашей AmoCRM
                        'values' => [['value' => $email]]
                    ]
                ]
            ]]
        ]
    ]];
    
    $args = [
        'headers' => [
            'Authorization' => 'Bearer ' . $access_token,
            'Content-Type'  => 'application/json',
        ],
        'body' => json_encode($data),
        'method' => 'POST',
        'timeout' => 10
    ];
    
    $response = wp_remote_request($url, $args);
    return !is_wp_error($response);
}

Теги:

[wp_chatgpt_assistant]
Скопировано!