Вие сте тук: Начало Достави с Еконт Внедряване на Достави с Еконт в електронния магазин

Внедряване на Достави с Еконт в електронния магазин

 

1. За да внедрите delivery.econt.com в електронния магазин, следвайте долните 4 стъпки:

 

  • Създайте конфигурационен файл. В него препоръчваме да съхранявате статичната информация на магазина, която трябва да подавате с всяка поръчка:
    • ID на магазина в Достави с Еконт
    • URL показващ форма за доставка
    • валута на магазина (валута на Наложен платеж)
    • адрес на услугата за създаване или редактиране на поръчка
    • код за свързване на магазина от Достави с Еконт

Конфигурационният файл може да изглежда така:

<?php 
const SHOP_ID = 5080473; // ID на магазина в Достави с Еконт
const SHIPPMENT_CALC_URL = 'http://delivery.demo.econt.com/customer_info.php'; // URL визуализиращ форма за доставка
const SHOP_CURRENCY = 'BGN'; // валута на магазина (валута на Наложен платеж)
const UPDATE_ORDER_ENDPOINT = 'http://delivery.demo.econt.com/services/OrdersService.updateOrder.json'; // Ендпойнта на услугата създаване или редактиране на поръчка
const PRIVATE_KEY = 'ххххххххххххххх'; // Код за свързване
?>

  • Вкарайте формата за доставка от Достави с Еконт за магазина в страницата за плащане (check-out) на поръчката. Формата трябва да се визуализира като форма за попълване на адреса за доставка на потребителя, а магазинът трябва да подава следните параметри към нея:
    • Задължителни параметри:
      • Идентификатор на електронния магазин (id_shop)
      • Стойност на поръчката (количество за Наложен платеж по пратката) (order_total)
      • Валута на Наложен платеж (order_currency)
      • Общо тегло на пратката (order_weight)
    • Незадължителни параметри (попълнените параметри ще запълнят автоматично полетата във формата за изчисляване на цена)
      • име / фирма (customer_company)
      • упълномощено лице (customer_name - ако е попълнено име на фирма)
      • телефон (customer_phone)
      • имейл (customer_e-mail)
      • държава (customer_country)
      • зип код (customer_zip)
      • населено място (customer_city_name)
      • пощенски код (customer_post_code)
      • код на офиса (customer_office_code)
      • адрес (customer_address)
      • текст на бутона за потвърждаване на поръчката (confirm_txt)
      • изключване на автоматично попълване на полетата от историята на потребителя (ignore_history)

     

    2. Вкарайте формата за доставка от Достави с Еконт за магазина в страницата за плащане (check-out) на поръчката. Формата трябва да се визуализира като форма за попълване на адреса за доставка на потребителя, а магазинът трябва да подава следните параметри към нея:

     

    • Задължителни параметри:
      • Идентификатор на електронния магазин (id_shop)
      • Стойност на поръчката (количество за Наложен платеж по пратката) (order_total)
      • Валута на Наложен платеж (order_currency)
      • Общо тегло на пратката (order_weight)
    • Незадължителни параметри (попълнените параметри ще запълнят автоматично полетата във формата за изчисляване на цена)
      • име / фирма (customer_company)
      • упълномощено лице (customer_name - ако е попълнено име на фирма)
      • телефон (customer_phone)
      • имейл (customer_e-mail)
      • държава (customer_country)
      • зип код (customer_zip)
      • населено място (customer_city_name)
      • пощенски код (customer_post_code)
      • код на офиса (customer_office_code)
      • адрес (customer_address)
      • текст на бутона за потвърждаване на поръчката (confirm_txt)
      • изключване на автоматично попълване на полетата от историята на потребителя (ignore_history)
     
    2.1. За да показвате самата форма за доставка, използвайте следния фрагмент код:
     
    <!-- ФОРМА ЗА ДОСТАВКА --> 
    <iframe src="<?=$shippmentCalcUrl?>"></iframe>

    <!-- В това поле ще се запази уникалния индентификатор на адреса за доставка. Попълва се от Java Script функцията която 'слуша' съобщенията от формата за доставка -->
    <input type="hidden" name="customerInfo[id]">
     
    2.2. Инициирайте JavaScript функция като тази в примера, която да получава резултата от формата за доставка.
     
    // Елемент от кода, където е указано дали стоката ще се заплаща с НП или не 
    var codInput = document.getElementsByName('cod')[0];
    //Елемент от формата, в който ще се постави уникалния идентификатор на адрес за доставката
    var customerInfoIdInput = document.getElementsByName('customerInfo[id]')[0];
    //Формата, в която се съдържат данните по поръчката в магазина и същата трябва да се подаде
    var confirmForm = document.getElementById('confirm-form');
    // добавяне на функция, която 'слуша' данни връщани от формите за доставка
    window.addEventListener('message', function(message) {
    // Данни връщани от формата за доставка:
    // id: уникален идентификатор на адреса. Това поле трябва да бъде поставено в скритото customerInfo[id]
    // id_country: идентификатор на държавата
    // zip: зип код на населеното място
    // post_code: пощенски код на населеното място
    // city_name: населено място
    // office_code: код на офиса на Еконт ако бъде избран такъв
    // address: адрес
    // name: име / фирма
    // face: лице
    // phone: телефон
    // e-mail: имейл
    // shipping_price: цена на пратката без Наложен платеж
    // shipping_price_cod: цена на пратката с Наложен платеж
    // shipping_price_currency: валута на изчислената цена
    // shipment_error: поясняващ текст, ако е възникнала грешка
    var data = message['data'];
    // възможно е да възникнат грешки при неправилно конфигурирани настройки на електронния магазин които пречат за изчисляването
    if (data['shipment_error'] && data['shipment_error'] !== '') alert('Възникна грешка при изчисляване на стройноста на пратката');
    // формата за изчисляване връща цена със и без Наложен платеж
    // спрямо избора на клиента в "Заплащане чрез Наложен платеж" показваме правилната цена
    var shippmentPrice;
    if (codInput.checked) shippmentPrice = data['shipping_price_cod'];
    else shippmentPrice = data['shipping_price'];
    var confirmMessage = "Куриеркста ви услуга е на стройност " + shippmentPrice + ' ' + data['shipping_price_currency'] + ' потвърждавате ли покупката?';
    if (confirm(confirmMessage)) {
    customerInfoIdInput.value = data['id'];
    confirmForm.submit();
    }
    }, false);

     

    3. Генериране/редактиране на поръчка към Достави с Еконт

     

    Услугата може да бъде извикана в следните случаи:

    • При завършване на поръчката от клиента
    • При редактиране на поръчката от търговеца в рамките на административния си панел

    Важно: Генерирането/редактирането на поръчка не означава генериране на товарителница и заявка за куриер. За да генерирате товарителница, трябва да влезете в меню Поръчки на електронния магазин в Достави с Еконт или да използвате метода createAWB (повече тук).

    <?php 

    // Иницииране на обект за извикване на отдалечена услуга
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, UPDATE_ORDER_ENDPOINT);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: ' . PRIVATE_KEY
    ]);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($_POST));
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);

    // Изпращане на заявката
    $response = curl_exec($curl);

    // Показване на върнатия резултат
    var_dump($response);
    var_dump(curl_error($curl));

    <?php
    // Пример за извикване на обект за иницииране на отдалечена услуга
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, 'http://delivery.econt.com/services/OrdersService.updateOrder.json');
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: ИДЕНТИФИКАЦИОНЕН КОД'
    ]);
    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode(array( // Type: Order -> http://delivery.econt.com/services/#Order
    'id' => '', // ако имаме "id" ще потърси съществуваща поръчка и ще я обнови с новите данни, ако не намери ще добави нова
    'orderNumber' => '',
    'status' => '',
    'orderTime' => '',
    'cod' => '',
    'partialDelivery' => '',
    'currency' => '',
    'shipmentDescription' => '',
    'shipmentNumber' => '',
    'customerInfo' => array( // Type: CustomerInfo -> http://delivery.econt.com/services/#CustomerInfo
    'id' => '',
    'name' => '',
    'face' => '',
    'phone' => '',
    'e-mail' => '',
    'countryCode' => '',
    'cityName' => '',
    'postCode' => '',
    'officeCode' => '',
    'zipCode' => '',
    'address' => '',
    'priorityFrom' => '',
    'priorityTo' => ''
    ),
    'items' => array(
    0 => array( // Type: OrderItem -> http://delivery.econt.com/services/#OrderItem
    'name' => '',
    'SKU' => '',
    'URL' => '',
    'count' => '',
    'hideCount' => '', // приема стойности 0 и 1. Служи за скриване на формата за промяна на количество.
    'totalPrice' => '',
    'totalWeight' => ''
    ),
    1 => array(
    'name' => '',
    'SKU' => '',
    'URL' => '',
    'count' => '',
    'hideCount' => '', // приема стойности 0 и 1. Служи за скриване на формата за промяна на количество.
    'totalPrice' => '',
    'totalWeight' => ''
    )
    // ...
    )
    )));
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);

    // Изпращане на заявката
    $response = curl_exec($curl);

    // Показване на върнатия резултат
    var_dump($response);
    var_dump(curl_error($curl));