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