Я пытаюсь создать ссылку API для приема HTTP-запроса POST с некоторыми данными клиента (такими как имя, фамилия, адрес электронной почты) в WordPress. После получения этих данных код должен отправить еще один запрос POST в пользовательскую форму Hubspot, создав новый контакт.
Я могу отправить данные клиента на моем локальном компьютере с помощью запроса скручивания, например curl -d "email=myemail@email.com" -X POST https://forms.hubspot.com/uploads/form/v2/{portalId}/{formGuid}
. Это работает просто отлично.
В продолжение я попытался создать новый шаблон страницы внутри моего каталога шаблонов и создать страницу с использованием этого шаблона в моей панели управления WordPress. Когда я пытаюсь отправить на эту новую страницу с запросом скручивания, например curl -d "email=myemail@email.com" -X POST https://mywordpresssite.com/hubspot_submit_post/
, он не работает. Я получил ответ HTTP 200 OK, но новый клиент не создан в Hubspot.
<?php
/* Template Name: Lead submit POST to Hubspot */
if ( ! defined( ‘ABSPATH’ ) ) {
exit;
}
$pageUrl = 'mywordpresssite.com/hubspot_submit_post.php';
$pageName = 'Leads';
$portalId = "some id";
$formGuid = "some guid";
//Process a new form submission in HubSpot in order to create a new Contact.
$hubspotutk = $_COOKIE['hubspotutk']; //grab the cookie from the visitors browser.
$ip_addr = $_SERVER['REMOTE_ADDR']; //IP address too.
$hs_context = array(
'hutk' => $hubspotutk,
'ipAddress' => $ip_addr,
'pageUrl' => $pageUrl,
'pageName' => $pageName
);
$hs_context_json = json_encode($hs_context);
$firstname = isset($_POST["first_name"]) ? $_POST["first_name"] : '';
$lastname = isset($_POST["last_name"]) ? $_POST["last_name"] : '';
$email = isset($_POST["email"]) ? $_POST["email"] : '';
$phone = isset($_POST["phone"]) ? $_POST["phone"] : '';
$company = isset($_POST["company"]) ? $_POST["phone"] : '';
$company_size = isset($_POST["company_size"]) ? $_POST["company_size"] : '';
$jobtitle = isset($_POST["jobtitle"]) ? $_POST["jobtitle"] : '';
$state = isset($_POST["state"]) ? $_POST["state"] : '';
$city = isset($_POST["city"]) ? $_POST["city"] : '';
$industry = isset($_POST["industry"]) ? $_POST["industry"] : '';
//Need to populate these variable with values from the form.
$str_post = "first_name=" . $firstname
. "&last_name=" . $lastname
. "&email=" . $email
. "&phone=" . $phone
. "&company=" . $company
. "&company_size=" . $company_size
. "&job_title=" . $jobtitle
. "&state=" . $state
. "&city=" . $city
. "&industry=" . $industry
. "&hs_context=" . urlencode($hs_context_json); //Leave this one be
header($str_post);
$endpoint = 'https://forms.hubspot.com/uploads/form/v2/' . $portalId . '/' . $formGuid;
$data = wp_remote_post($endpoint, array(
'headers' => array(
'Content-Type' => 'application/x-www-form-urlencoded'
),
'body' => $str_post
));
?>
Любая помощь приветствуется. Новый клиент должен быть создан в Hubspot, когда я отправляю запрос POST с curl как curl -d "email=myemail@email.com" -X POST https://mywordpresssite.com/hubspot_submit_post/