Я пытаюсь создать ссылку API для приема HTTP-запроса POST с некоторыми данными клиента (например, именем, фамилией, адресом электронной почты) в WordPress. После получения этих данных код должен отправить еще один запрос POST в настраиваемую форму Hubspot, создав новый контакт.
Я могу отправить данные о клиенте на моем локальном компьютере с помощью запроса curl, например curl -d "[email protected]" -X POST https://forms.hubspot.com/uploads/form/v2/{portalId}/{formGuid}
. Это прекрасно работает.
В продолжение я попытался создать новый шаблон страницы внутри своего каталога шаблонов и создать страницу с использованием этого шаблона на панели инструментов WordPress. Когда я пытаюсь отправить эту новую страницу с запросом на завивание, например curl -d "[email protected]" -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 -d "[email protected]" -X POST https://mywordpresssite.com/hubspot_submit_post/
var_dump($data)
послеwp_remote_post
? - person Chris White   schedule 08.05.2019