Задача изменений
12.35M
Categories: marketingmarketing internetinternet

Новая eCommerce платформа D7: заказы, холдинг, персональный раздел

1.

Новая eCommerce платформа D7:
заказы, холдинг, персональный раздел
Юрий Волошин, Алексей Кирсанов
1C-Битрикс

2.

#bitrixconf
Ждем ваши вопросы:
в приложении Bitrixconf
онлайн на странице трансляции
Пишем
вопросы
здесь

3.

Процедура оформления
заказа D7

4.

5. Задача изменений

• Переход на eCommerce D7
• Реконструкция всей процедуры заказа
• Повышение конверсии интернет-магазина

6.

A/B тестирование
маркетинговый метод используется для оценки и управления конверсией сайта
«А» ― это то, как у вас есть сейчас (старый дизайн). «B» ― это то, с чем вы
будете экспериментировать (новый дизайн).
Для половины показывается дизайн «А», для другой половины ― дизайн «B».
И по каждому из вариантов замеряются все ключевые показатели, в первую
очередь ― конверсия.

7.

A/B-тестирование новой
процедуры заказа

8.

А/В-тестирование оформления заказа
Конверсия
Конверсия
1,2%
0,9%
А
В

9.

Оформление заказа
Требования времени
Требования клиентов
Новые возможности
Новая архитектура D7
Адаптивная верстка

10.

Что нового
Оплата и доставка в зависимости от
региона
Запрашиваем у клиента только нужную
информацию
Поддержка точек самовывоза в
неограниченных количествах
Карты в профиле покупателя
Множественный пересчет и уточнения
параметров доставки
Показ дополнительных услуг в
доставках
Автозаполнение при повторном заказе
Режим совместимости

11.

Компонент sale.order.ajax
идеальный, и его не надо
кастомизировать
— Орландо Виласека, разработчик

12.

Службы доставки

13.

Службы доставки
Автоматическое отслеживание статусов
Синхронизация статусов
Ограничения
Дополнительные услуги
Автоматическое размещение заявки на
забор груза в службу доставки в конце дня

14.

Событие на расчет стоимости доставки
// в /bitrix/php_interface/init.php
EventManager::getInstance()->addEventHandler('sale', 'onSaleDeliveryServiceCalculate', 'myCalc');
function myCalc(Event $event)
{
/** @var Delivery\CalculationResult $baseResult */
$baseResult = $event->getParameter("RESULT");
/** @var Shipment $shipment */
$shipment = $event->getParameter("SHIPMENT");
$deliveryId = $event->getParameter("DELIVERY_ID");
$price = $baseResult->getDeliveryPrice() + 100;
$baseResult->setDeliveryPrice($price);
}
$event->addResult(
new EventResult(
EventResult::SUCCESS, array('RESULT' => $baseResult)
)
);

15.

Новая служба доставки

16.

Новая служба доставки - 1
// в /bitrix/php_interface/include/sale_delivery/ или /local/php_interface/include/sale_delivery/
// custom/handler.php
namespace Sale\Handlers\Delivery;
use Bitrix\Sale\Delivery\CalculationResult;
use Bitrix\Sale\Delivery\Services\Base;
class CustomHandler extends Base
{
public static function getClassTitle()
{
return 'Доставка по весу';
}
public static function getClassDescription()
{
return 'Доставка стоимость которой зависит только от веса отправления';
}

17.

Новая служба доставки - 2
protected function calculateConcrete(\Bitrix\Sale\Shipment $shipment)
{
$result = new CalculationResult();
$price = floatval($this->config["MAIN"]["PRICE"]);
$weight = floatval($shipment->getWeight()) / 1000;
$result->setDeliveryPrice(roundEx($price * $weight, 2));
$result->setPeriodDescription('1 день');
}
return $result;
protected function getConfigStructure()
{
return array(
"MAIN" => array(
"TITLE" => 'Настройка обработчика',
"DESCRIPTION" => 'Настройка обработчика',

18.

Новая служба доставки - 3
}
);
)
"ITEMS" => array(
"PRICE" => array(
"TYPE" => "NUMBER",
"MIN" => 0,
"NAME" => 'Стоимость доставки за грамм'
)
)
public function isCalculatePriceImmediately()
{
return true;
}
}
public static function whetherAdminExtraServicesShow()
{
return true;
}

19.

Новые ограничения

20.

Новые ограничения - 1
// в init.php
Main\EventManager::getInstance()->addEventHandler('sale',
'onSaleDeliveryRestrictionsClassNamesBuildList', 'myBuildList');
function myBuildList()
{
return new \Bitrix\Main\EventResult(
\Bitrix\Main\EventResult::SUCCESS,
array(
'\ByMoonday' => '/restrictions/bymoonday.php'
)
);
}

21.

Новые ограничения - 2
// в /restrictions/bymoonday.php
use Bitrix\Sale\Delivery\Restrictions;
use Bitrix\Sale\Internals\CollectableEntity;
class ByMoonday extends Restrictions\Base
{
public static function getClassTitle()
{
return 'По лунным суткам';
}
public static function getClassDescription()
{
return 'Доставка будет выводится только в указанном диапазоне лунных суток';
}

22.

Новые ограничения - 3
public static function check($moonday, array $restrictionParams, $deliveryId = 0)
{
if ($moonday < $restrictionParams['MIN_MOONDAY']
|| $moonday > $restrictionParams['MAX_MOONDAY'])
return false;
}
return true;
protected static function extractParams(CollectableEntity $shipment)
{
$json = file_get_contents('http://moon-today.com/api/index.php?get=moonday');
$res = json_decode($json, true);
return !empty($res['moonday']) ? intval($res['moonday']) : 0;
}

23.

Новые ограничения - 4
}
public static function getParamsStructure($entityId = 0)
{
return array(
"MIN_MOONDAY" => array(
'TYPE' => 'NUMBER',
'DEFAULT' => "1",
'LABEL' => 'Минимальные сутки'
),
"MAX_MOONDAY" => array(
'TYPE' => 'NUMBER',
'DEFAULT' => "30",
'LABEL' => 'Максимальные сутки'
)
);
}

24.

Новые дополнительные услуги

25.

Новые дополнительные услуги
1.
// в init.php
Main\EventManager::getInstance()->addEventHandler('sale', 'onSaleDeliveryExtraServicesClassNamesBuildList', 'myBuildList');
function myBuildList()
{
return new Main\EventResult(Main\EventResult::SUCCESS, array('\MyService' => 'folder/myservice.php'));
}
2.
class MyService extends Sale\Delivery\ExtraServicesBase
{
public function getClassTitle()
{
return "Моя услуга";
}
public function getCost()
{
return 1000;
}

26.

Платежные системы

27.

Платежные системы
Возврат денег
Тонкая настройка банковского счета
B2B платежи в Яндекс
Кастомизация шаблонов платежных
систем
Ограничения
Не нужно вводить одни и те же
параметры для разных платежных
систем
Единая точка входа для ответов
платежных систем

28.

Номера оплат
Код платежа (ID) vs. Номер платежа
Номер платежа:
номер заказа/порядковый номер платежа
Для заказа с ID=49 и номером 49 номер
платежа будет 49/1
Для заказа с ID=49 и номером 135_3
номер платежа будет 135_3/1
Кастомизация шаблонов на событиях

29.

Кастомизация шаблона
<a href="#" onclick="document.getElementById('my_yandex').submit();
return false;"><img src="/images/kot1.png"></a>
<form name="ShopForm" action="<?=$params['URL'];?>"
method="post" id="my_yandex">
<input name="ShopID" value="<?=$params['YANDEX_SHOP_ID'];?>"
type="hidden">
***

30.

Новая платежная система
Обработчики – классы + вспомогательные
файлы
Наследование, интерфейсы
Базовые классы
PaySystem\BaseServiceHandler
PaySystem\ServiceHandler
Пути
/local/php_interface/include/sale_payment/
/bitrix/php_interface/include/sale_payment/
Системные обработчики
/bitrix/modules/sale/handlers/paysystem

31.

Новые ограничения
Main\EventManager::getInstance()->addEventHandler('sale',
'onSalePaySystemRestrictionsClassNamesBuildList', 'myBuildList');

32.

Холдинговая структура

33.

Холдинговая структура
торговля на всю страну
На смену отдельным каталогам для каждого
города приходит единый каталог
Город покупателя влияет на время доставки,
типы платежных сервисов и юридическое лицо
выполняющее все процедуры

34.

Холдинговая структура (этап 3 из 4)
Автоматическое назначение компании и ответственного
в зависимости от города местонахождения покупателя
выбирается:
-
юридическое лицо
ответственный менеджер
платежные системы и реквизиты, привязанные к
городу покупателя
-
служба доставки, привязанная к городу
покупателя
Правила обработки частичной оплаты и отгрузки

35.

Схема работы
КОМПАНИЯ 1
ОПЛАТА
КОМПАНИЯ 2
ОПЛАТА
ЗАКАЗ
ОТГРУЗКА
ОТГРУЗКА
КОМПАНИЯ 3

36.

Настраиваем: компании
ООО Моя компания
г. Москва
физические лица
ИП Антон Компотов
г. Москва
юридические лица
ООО Максим и Ко
г. Калининград

37.

Настраиваем: компании - 1

38.

Настраиваем: платежные системы

39.

Оформляем заказ

40.

Пользовательские правила
Main\EventManager::getInstance()->addEventHandler('sale',
'onSaleCompanyRulesClassNamesBuildList', 'myBuildList');

41.

Персональный раздел

42.

Персональный раздел
Единый комплексный компонент всего
персонального раздела, расширены
сценарии использования
Все компоненты написаны с
использованием нового ядра D7
Поддерживается разделение заказов
Поддерживаются сценарии работы с
пополнением счета и возможность
пополнить счет без оформления заказа
Адаптивный дизайн

43.

Мои заказы
Оплата
Смена способа оплаты
Статус доставки
Поддержка множественных
оплат и отгрузок
Повторение заказа
Отмена заказа

44.

Покупка денег
Текущий внутренний счет
Возможность пополнить
Оплата заказов с
внутреннего счета

45.

Подписка на отсутствующие товары

46.

В следующей части
1
Новые возможности
скидок
2
Кастомизация
административного
раздела
3
Автоматизация

47.

Спасибо за внимание!
Вопросы?
English     Русский Rules