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);
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
965
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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, но, надеюсь, это поможет.

Ресурсы

Этот статья о переполнении стека действительно помог.

Другие вопросы по теме