Active Campaign API 403 Ошибка при использовании wp_remote_post();
Я создаю простую интеграцию, которая должна публиковать наши заказы WooCommerce в разделе Deep Data через API (V3).
Вот простой пример запроса, который я пытаюсь сделать.
Сейчас я запускаю этот скрипт вручную, чтобы он работал. Это массив, который я отправляю как мой запрос, используя wp_remote_post($url, $request)
Array
(
[key] => KEY
[url] => URL/ecomOrders
[settings] => Array
(
[method] => POST
[timeout] => 5
[redirection] => 5
[httpversion] => 1.0
[user-agent] => WordPress/5.2.1; https://www.XXXX.com
[blocking] => 1
[body] => {"ecomOrder":{JSONORDER}}
[headers] => Array
(
[Api-Token] => KEY
)
)
)
Это (часть) того, что я получаю от моего ответа.
[body] =>
[response] => Array
(
[code] => 403
[message] => Forbidden
)
Я дважды проверил ключ API и URL-адрес и просто примечание, мы уже используем тот же метод и детали сценария в аналогичном запросе на добавление контактов, который работает нормально.
Вот код, который я использую (все $var определены ранее в скрипте):
$request = array(
'key' => $key,
'url' => $url,
'settings' => array(
'method' => 'POST',
'sslverify' => false,
'timeout' => 5,
'redirection' => 0,
'httpversion' => '1.0',
'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url(),
'blocking' => true,
'body' => $body,
'headers' => array(
'Api-Token' => $key,
)
)
);
$response = wp_remote_post($url, $request);
1 ответ
Мы только что столкнулись с подобной проблемой сегодня; где все заголовки и полезные данные были установлены правильно, но API возвращал 401.
Наша полезная нагрузка должна была быть отправлена как json, и мы должны были явно определить это в заголовках. Вот так:
'content-type' => 'application/json'
Кроме того, похоже, что массив request/args не структурирован, как рекомендует WordPress в кодексе. ( аргументы)
$key = 'myKey';
$url = 'myURL'
$body = array('ecomOrder' => $myOrder);
$request = array(
'method' => 'POST',
'sslverify' => false,
'timeout' => 5,
'redirection' => 0,
'httpversion' => '1.0',
'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url(),
'blocking' => true,
'body' => json_encode($body),
'headers' => array(
'content-type' => 'application/json',
'Api-Token' => $key,
)
);
$response = wp_remote_post($url, $request);
Это может быть выстрел в темноте, поскольку я не знаком с API Active Campaign, но, надеюсь, это поможет.
Ресурсы
Эта статья на стеке действительно помогла.