Вие сте тук: Начало Достави с Еконт Внедряване на Достави с Еконт в електронния магазин
Внедряване на Достави с Еконт в електронния магазин
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));
- Задължителни параметри: