Як налаштувати скрипт передачі замовлень у KeyCRM через API

Якщо у нас ще немає інтеграції з якимось сервісом, то ви можете отримувати замовлення по API, нижче опишемо покроково
Написано Вадим Крижевський
Оновлено 3 дні тому

Скрипти передачі даних по API дозволяють створювати замовлення з кастомних сервісів, сайтів та інтеграцій.

Підготовка до передачі даних

  1. Додайте окреме джерело, яке буде вказуватись в скрипті та передаватись замовлення саме зі вказаним джерелом. Потрібне для розділення замовлень та розуміння, що саме це замовлення прийшло з кастомного сервісу;
  2. Створіть чи скопіюйте API ключ, потрібний для налаштування скрипта;
  3. Додайте товари в каталог з артикулами, які ви будете передавати, щоб у замовленнях товар автоматично зв'язався з товаром у каталозі, була доступна аналітика, склад та інше.

Налаштування скрипта передачі даних

Крок 1: Прописуємо передачу інформації в потрібні поля

Розглянемо php скрипт передачі даних з html форми: коли продаємо 1 товар, вказується ім'я, e-mail, телефон покупця, інформація про доставку, оплату та дані з додаткових полів. 

Нам потрібно вказати які параметри передавати — зліва поле в CRM куди ми передаємо значення, а справа змінна з поля форми звідки це значення підставляємо в скрипт:

$data = [
      "source_id" => 22, // до якого джерела в KeyCRM додавати замовлення
      "buyer" => [
            "full_name"=> $_POST['name'], // ПІБ покупця
            "email"=> $_POST['email'], // email покупця
            "phone"=> $_POST['phone'] // номер телефону покупця
      ],
      "shipping" => [
          "shipping_address_city"=> $_POST['address_city'], // місто покупця
          "shipping_receive_point"=> $_POST['address_street'], // вулиця, номер будинку чи відділення Нової Пошти
          "shipping_address_country"=> $_POST['address_country'], // країна
          "shipping_address_region"=> $_POST['address_region'], // область/штат/регіон
          "shipping_address_zip"=> $_POST['address_zip'], // індекс
           "shipping_secondary_line" => $_POST['secondary_line'], // додаткова адреса
           "shipping_receive_point" => $_POST['receive_poin'], // точка видачі замовлення
           "recipient_full_name" => $_POST['recipient_full_name'], // ім'я отримувача (якщо відрізняється від покупця)
           "recipient_phone" => $_POST['receive_phone'], // номер телефону отримувача (якщо відрізняється від покупця). Рекомендуємо передавати в міжнародному форматі з плюсом
           "warehouse_ref" => $_POST['warehouse_ref'], // UUID складу Нової Пошти (обов'язково з параметром delivery_service_id - ID служби доставки НП в СРМ)
           "shipping_date" => $_POST['date'], // дата доставки / відправки
      ],
   "marketing" => [
          "utm_source" => $_POST['utm_source'], // джерело компанії
          "utm_medium" => $_POST['utm_medium'], // тип трафіку
          "utm_campaign" => $_POST['utm_campaign'], // назву компанії
          "utm_term" => $_POST['utm_term'], // ключове слово
          "utm_content" => $_POST['utm_content'], // ідентифікатор оголошення
   ],
      "products"=> [
            [
                "price"=> $_POST['product_price'], // ціна продажу
                "quantity"=> 1, // кількість проданого товару
                "name"=> $_POST['product_name'], // назву товару
                "picture"=> $_POST['product_url'], // картинка товару
                "properties"=>[
                [
                    "name"=> "Color",
                    "value"=> "Space Gray"
                ]
              ]
          ]
      ],
    "payments" => [
        [
        "payment_method_id" => $_POST['payment_method_id'], // ідентифікатор методу оплати,
        "payment_method" => $_POST['product_url'], // назва методу оплати,
        "amount" => $_POST['amount'], // сума платежу,
        "description" => $_POST['description'], // коментар до платежу,
        "payment_date" => $_POST['payment_date'], // дата і час платежу. Якщо не передається, буде використаний поточний час,
        "status" => $_POST['description'], // статус платежу Допустимі значення: paid , not_paid , canceled , refund
        ]
    ],
    "custom_fields" => [
        [
        "uuid" => "LD_1021", // зовнішній ідентифікатор поля,
        "value" => $_POST['value'] // значення поля. Для полів з типом select (список/мультисписок) передавати масив рядків
       ],
        [
        "uuid" => "LD_1022", // зовнішній ідентифікатор поля,
        "value" => $_POST['value 1', 'value2', 'value 3'] // значення поля. Для полів з типом select (список/мультисписок) передавати масив рядків
       ]
    ]
];
Зверніть увагу! Щоб автоматично підтягувався склад Нової пошти, потрібно передавати ід складу Нової Пошти (warehouse_ref) з ID служби доставки НП.

Рекомендуємо передавати і текстові поля  адреси (не лише "warehouse_ref"), щоб при виникненні ситуацій що не можна отримати дані доставки від НП можна було вручну заповнити ці дані.

Ви можете прибрати поля, які вам не потрібна та додати яких не вистачає з методу API.

При передачі замовлень потрібно враховувати особливості:

  1. Обов'язково має передаватись масив  "buyer" та хоча б одне поле в ньому ("full_name", "email" чи "phone" покупця);
  2. Дані "email" мають передавати у вірному форматі, оскільки є валідація при створені заявки;
  3. При передачі кастомних (додаткових) полів  - поля мають бути створені в системі, щоб при передачі вказувати їх системну назву.

Крок 2: Готуємо дані для відправки

Зверніть увагу! Обмеження кількості запитів нашого API — 60 запитів на хвилину.  

Потрібно ваш раніше створений API ключ скопіювати та вставити в зміну $token.

//  "упаковуємо дані"
$data_string = json_encode($data);

// Ваш унікальний API ключ KeyCRM
$token = 'Ваш API ключ';

// відправляємо на сервер
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://openapi.keycrm.app/v1/order");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        "Content-type: application/json",
        "Accept: application/json",
        "Cache-Control: no-cache",
        "Pragma: no-cache",
        'Authorization:  Bearer ' . $token)
);
$result = curl_exec($ch);
curl_close($ch);

Результат 

Заходимо на сайт, заповнюємо тестове замовлення і дивимося, що відбувається у KeyCRM - прийшло нове замовлення, дані з полів без проблем підтягнулися:

Тепер ви можете передавати ваші замовлення з різних кастомних сервісів та працювати з ними у замовленнях KeyCRM.

 Теги: api, апи, API, АПІ, передача даних у замовлення, скрипт передачі замовлень, скрипт створення замовлення, order
Чи була наша стаття корисною?