Как отправить данные формы для нового пользователя в Pipedrive (API) через REST

#json #rest #pipedrive-api

#json #отдых #pipedrive-api

Вопрос:

Вот форма, которая не работает:

 <form action="https://api.pipedrive.com/v1/persons" method="post">   

    <!-- These hidden fields have valid values, just not shown here -->
    <input type="hidden" name="owner_id" id="owner_id" value="my-id" /> 
    <input type="hidden" name="org_id" id="org_id" value="my-company-id" /> 
    <input type="hidden" name="api_token" id="api_token" value="my-api-key" /> 
    <input type="hidden" name="stage_id" id="stage_id" value="35" /> 

    <b>Name</b><br/>
    <input type="text" name="name" id="name" id="name"/>
    <br/><br/>

    <b>E-mail</b><br/>
    <input type="text" name="email" id="email" id="email"/> 
    <br/><br/>

    <b>Arrival</b><br/>
    <input type="text" name="2fdf1284127d702e42595ce20bd8ffdf60763105" id="2fdf1284127d702e42595ce20bd8ffdf60763105"/>
    <br/><br/>

    <b>Departure</b><br/>
    <input type="text" name="2492a5afed2a9cb7948d6a22135fd4dd80de200c" id="2492a5afed2a9cb7948d6a22135fd4dd80de200c"/>
    <br/><br/>

    <b>Message</b><br/>
    <textarea style="width:300px; hight:70px;" id="7433280b87ffc7c1e3fd615eb35526273bcea6cf" name="7433280b87ffc7c1e3fd615eb35526273bcea6cf"></textarea>     
     <br/><br/> 
    <input type="submit" value="Remitir"/> 
</form>
 

После отправки возвращается следующий ответ:

 {"success":false,"error":"Organization not found.","data":null,"additional_data":null}
 

Чего не хватает для успешного добавления нового пользователя через REST?

Вот этот API: https://developers.pipedrive.com/v1

Большое спасибо за решение.

Комментарии:

1. Есть ли документация для этого API?

2. API является developers.pipedrive.com/v1 однако я не добился успеха в его использовании.

3. Привет @iamtoc, пожалуйста, помогите мне, как это сделать

Ответ №1:

Вы можете сделать что-то подобное

 <script language="javascript" type="text/javascript">
    function pDriveIntegration()
    {
       var url = "https://api.pipedrive.com/v1";
       var rsrc_deals = "/deals";
       var api_token = "YOUR_API_TOKEN";
       var deal
Json = '{'   '"title":"'   name   '","org_id":"?"'  
                    ',"value":"0"'   ',"currency":"GBP"'   ',"stage_id":"?"'   
',"visible_to":"?"'   ',"status":"open"'   '"}';


        var xhrDeal = new XMLHttpRequest();
        xhrDeal.onreadystatechange = function()
        {
            if (xhrDeal.readyState == 4 amp;amp; xhrDeal.status == 201) {
                var obj = JSON.parse(xhrDeal.responseText);
                var deal_id = obj.data.id;
            }
        }
        xhrDeal.open("POST", url   rsrc_deals   "?"   "api_token"   "="   api_token, false);
        xhrDeal.setRequestHeader("Content-type", "application/json");
        xhrDeal.send(dealJson);

</script>
</head>
<body>

<form ...........>


<input type="submit" onclick="pDriveIntegration();"


</form>
 

Поэтому вам нужен AJAX. Даже если бы это было возможно сделать только с помощью HTML-формы, вам нужно закодировать JSON для отправки с post. Честно говоря, я пытался, но всегда получал некоторые ошибки в любом браузере.

Я заметил, что это совсем небезопасно, потому что кто-то может видеть ваш исходный код и получать ваш API_TOKEN через браузер. Я имею в виду, что кто-то может получить всю вашу информацию (я перешел на другие решения, не используя только HTML и AJAX).

Но в любом случае это хорошее начало для понимания всего, что вам нужно.

Я бы также предложил подумать о «персонах». Например, перед созданием новой сделки я нахожу человека. Если он / она существует, я не буду его создавать, я получу его идентификатор и заключу сделку.

Но в другом случае, если человек не существует, я создаю person раньше, чем все. После этого я буду использовать его идентификатор в сделке.

Я надеюсь, что это будет полезно.

Byee

Комментарии:

1. Это совершенно небезопасно из-за того, что пользователь может видеть ключ api. Лучше всего было бы использовать приведенный ниже ответ и опубликовать его с помощью ajax. Тогда пользователь не сможет увидеть ключ api

Ответ №2:

Используя php, было бы так:

 
// ================================== //
// API token
// ================================== //
$api_token = 'xxxxxxxxxxxxxxxxxxxxxx';

// ================================== //
// FORM INPUT CAPTURE
// ================================== //
$name = $_POST['inputname'];
$phone = $_POST['inputphone'];
$mail = $_POST['inputmail'];

// ================================== //
// PERSON'S API Key fields' Array values
// ================================== //
$persons = array(
    'name' => $name,
    'email' => $mail,
    'phone' => $phone
);

// ================================== //
// API PERSONS domain
// ================================== //
$url1 = 'https://personalpipedriveadress.pipedrive.com/v1/persons?api_token=' . $api_token;

// ================================== //
// CURL access
// ================================== //
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, $url1);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_POST, true);
curl_setopt($ch1, CURLOPT_POSTFIELDS, $persons);

echo 'Sending USER request...' . '<br>';

$output1 = curl_exec($ch1);
curl_close($ch1);

// ================================== //
// API array data convert to JSON format
// ================================== //
$result1 = json_decode($output1, true);

// ================================== //
// Check if an ID came back and print it
// ================================== //
if (!empty($result1['data']['id'])) {
    echo 'Person was added successfully!' . '<br>';
}
else {
    echo 'ERROR adding person';
}


 

Комментарии:

1. api_token должен быть получен из настроек вашей учетной записи; // Домен API должен использоваться с именем пользователя, зарегистрированным в Pipedrive.