Как создать API, который соединяет форму на сайте с CRM с помощью PHP

Я новичок в Gravity Forms и создании API с использованием PHP. Мне нужно создать скрипт, который всякий раз, когда Gravity Form завершается, API отправляет это как данные JSON на URL-адрес POST. Мне дали имя и значение ключа безопасности, как мне это сделать с помощью PHP? Нужен ли мне JQuery и / или AJAX?

Обновлено:

Это то, что у меня есть до сих пор, но я понятия не имею, на правильном ли я пути: (я пропустил некоторые поля с «X» из-за очевидных потенциальных соображений безопасности)

<?php

function calculate_signature( $string, $private_key ) {
    $hash = hash_hmac( 'sha1', $string, $private_key, true );
    $sig = rawurlencode( base64_encode( $hash ) );
    return $sig;
}

//set API keys
$api_key = 'XXXXXXX';
$private_key = 'XXXXXXXXXX';

//set route
$route = '/XXXXXXX.php';

//creating request URL
$expires = strtotime( '+60 mins' );
$string_to_sign = sprintf( '%s:%s:%s:%s', $api_key, 'POST', $route, $expires );
$sig = calculate_signature( $string_to_sign, $private_key );
$url = 'XXXXXXX.com' . $route . '?api_key=' . $api_key . '&signature=' . $sig . '&expires=' . $expires;

// $form = array(
//         array(
//             'title'          => 'API Generated Form',
//             'description'    => 'This is the description for the form generated by the API',
//             'labelPlacement' => 'top_label',
//             'button'         => array(
//                             'type' => 'text'
//             ),
//             'confirmations'  => array(
//                         array(
//                             'id' => 0,
//                             'name' => 'Default Confirmation',
//                             'type' => 'message',
//                             'message' => 'Thanks for contacting us! We will get in touch with you shortly.',
//                             'isDefault' => true,
//                         ),
//             ),
//             'fields'     => array(
//                          array(
//                         'id' => '1',
//                         'label' => 'My Text',
//                         'type'  => 'text'
//                          )
//                     ),
//         ),
// );


$form = array(


            'age' => NULL


);

//json encode array
$form_json = json_encode( $form );

//retrieve data
$response = wp_remote_request( $url, array( 'method' => 'POST', 'body' => $form_json ) );
if ( wp_remote_retrieve_response_code( $response ) != 200 || ( empty( wp_remote_retrieve_body( $response ) ) ) ){
    //http request failed
    die( 'There was an error attempting to access the API.' );
}

//result is in the response "body" and is json encoded.
$body = json_decode( wp_remote_retrieve_body( $response ), true );

if ( $body['status'] > 202 ){
    $error = $body['response'];

    //form insert failed, get error information
    $error_code     = $error['code'];
    $error_message  = $error['message'];
    $error_data     = isset( $error['data'] ) ? $error['data'] : '';
    $status     = "Code: {$error_code}. Message: {$error_message}. Data: {$error_data}.";
    die( "Could not post forms. {$status}" );
}

$form_id = $body['response'][0];
echo 'The following form id was created: ' . $form_id . '</br>';

?>

"JQuery и / или AJAX?" это браузерные технологии, не связанные напрямую с PHP. Вы действительно спрашиваете, как сделать HTTP-запрос с помощью PHP? В таком случае попробуйте cURL - php.net/manual/en/book.curl.php. Я предполагаю, что, судя по виду, функция wp_remote_request также выполняет HTTP-запросы. Так что вы можете придерживаться этого. Что касается того, «на правильном ли вы пути» ... что же происходит с вашим кодом, когда вы его запускаете? Кем бы они ни были, они должны были сказать вам, как они ожидают получить этот электронный ключ - например, в заголовке или теле запроса в JSON или другом формате. Проверьте документы.

ADyson 30.07.2018 17:58

Да, я действительно спрашиваю, как сделать HTTP-запрос с помощью PHP, потому что я почти не имею представления о том, что делаю. Я уже проверил документацию, поэтому я прошу людей помочь мне разобраться.

Joe 30.07.2018 18:28

И что вам велели делать документы? Мы не знаем, как вы должны предоставить эти учетные данные. Это не одно и то же для всех API в мире. Если вы сообщите нам, как должен выглядеть HTTP-запрос, мы сможем рассказать вам, как написать код для генерации запроса в правильном формате.

ADyson 31.07.2018 06:53
Стоит ли изучать 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
3
45
0

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