Similar presentations:
Новая 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.
Новая служба доставки - 2protected 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.
Новые ограничения - 3public 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.
Настраиваем: компании - 138.
Настраиваем: платежные системы39.
Оформляем заказ40.
Пользовательские правилаMain\EventManager::getInstance()->addEventHandler('sale',
'onSaleCompanyRulesClassNamesBuildList', 'myBuildList');
41.
Персональный раздел42.
Персональный разделЕдиный комплексный компонент всего
персонального раздела, расширены
сценарии использования
Все компоненты написаны с
использованием нового ядра D7
Поддерживается разделение заказов
Поддерживаются сценарии работы с
пополнением счета и возможность
пополнить счет без оформления заказа
Адаптивный дизайн
43.
Мои заказыОплата
Смена способа оплаты
Статус доставки
Поддержка множественных
оплат и отгрузок
Повторение заказа
Отмена заказа
44.
Покупка денегТекущий внутренний счет
Возможность пополнить
Оплата заказов с
внутреннего счета
45.
Подписка на отсутствующие товары46.
В следующей части1
Новые возможности
скидок
2
Кастомизация
административного
раздела
3
Автоматизация
47.
Спасибо за внимание!Вопросы?