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

Содержание

Слайд 2

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

в приложении Bitrixconf

Ждем ваши вопросы:

онлайн на странице трансляции

Пишем
вопросы
здесь

#bitrixconf

Слайд 3

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

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

Слайд 4

Слайд 5

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

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

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

Слайд 6

A/B тестирование маркетинговый метод используется для оценки и управления конверсией сайта

A/B тестирование

маркетинговый метод используется для оценки и управления конверсией сайта

«А»

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

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

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

Слайд 8

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

А/В-тестирование оформления заказа

1,2%

Конверсия

0,9%

Конверсия

А

В

Слайд 9

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

Оформление заказа

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

Слайд 10

Оплата и доставка в зависимости от региона Запрашиваем у клиента только

Оплата и доставка в зависимости от региона
Запрашиваем у клиента только нужную

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

Что нового

Слайд 11

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

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

— Орландо Виласека, разработчик

Слайд 12

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

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

Слайд 13

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

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

службу доставки в конце дня

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

Слайд 14

Событие на расчет стоимости доставки // в /bitrix/php_interface/init.php EventManager::getInstance()->addEventHandler('sale', 'onSaleDeliveryServiceCalculate', 'myCalc');

Событие на расчет стоимости доставки

// в /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

// в /bitrix/php_interface/include/sale_delivery/ или /local/php_interface/include/sale_delivery/ // custom/handler.php namespace Sale\Handlers\Delivery; use Bitrix\Sale\Delivery\CalculationResult;

// в /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 'Доставка стоимость которой зависит только от веса отправления'; }

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

Слайд 17

protected function calculateConcrete(\Bitrix\Sale\Shipment $shipment) { $result = new CalculationResult(); $price =

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" => 'Настройка обработчика',

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

Слайд 18

"ITEMS" => array( "PRICE" => array( "TYPE" => "NUMBER", "MIN" =>

"ITEMS" => array( "PRICE" => array( "TYPE" => "NUMBER", "MIN" => 0, "NAME" => 'Стоимость

доставки за грамм' ) ) ) ); } public function isCalculatePriceImmediately() { return true; } public static function whetherAdminExtraServicesShow() { return true; } }

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

Слайд 19

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

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

Слайд 20

// в init.php Main\EventManager::getInstance()->addEventHandler('sale', 'onSaleDeliveryRestrictionsClassNamesBuildList', 'myBuildList'); function myBuildList() { return new

// в 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' ) ); }

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

- 1
Слайд 21

// в /restrictions/bymoonday.php use Bitrix\Sale\Delivery\Restrictions; use Bitrix\Sale\Internals\CollectableEntity; class ByMoonday extends Restrictions\Base

// в /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 'Доставка будет выводится только в указанном диапазоне лунных суток'; }

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

Слайд 22

public static function check($moonday, array $restrictionParams, $deliveryId = 0) { if

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; }

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

Слайд 23

public static function getParamsStructure($entityId = 0) { return array( "MIN_MOONDAY" =>

public static function getParamsStructure($entityId = 0) { return array( "MIN_MOONDAY" => array( 'TYPE' => 'NUMBER', 'DEFAULT'

=> "1", 'LABEL' => 'Минимальные сутки' ), "MAX_MOONDAY" => array( 'TYPE' => 'NUMBER', 'DEFAULT' => "30", 'LABEL' => 'Максимальные сутки' ) ); } }

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

Слайд 24

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

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

Слайд 25

// в init.php Main\EventManager::getInstance()->addEventHandler('sale', 'onSaleDeliveryExtraServicesClassNamesBuildList', 'myBuildList'); function myBuildList() { return new

// в init.php Main\EventManager::getInstance()->addEventHandler('sale', 'onSaleDeliveryExtraServicesClassNamesBuildList', 'myBuildList'); function myBuildList() { return new Main\EventResult(Main\EventResult::SUCCESS, array('\MyService' => 'folder/myservice.php')); }

Новые

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

class MyService extends Sale\Delivery\ExtraServicesBase { public function getClassTitle() { return "Моя услуга"; } public function getCost() { return 1000; }

1.

2.

Слайд 26

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

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

Слайд 27

Возврат денег Тонкая настройка банковского счета B2B платежи в Яндекс Кастомизация

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

нужно вводить одни и те же параметры для разных платежных систем
Единая точка входа для ответов платежных систем

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

Слайд 28

Код платежа (ID) vs. Номер платежа Номер платежа: номер заказа/порядковый номер

Код платежа (ID) vs. Номер платежа
Номер платежа:
номер заказа/порядковый номер платежа
Для

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

Номера оплат

Слайд 29

Кастомизация шаблона return false;"> " method="post" id="my_yandex"> " type="hidden"> * * *

Кастомизация шаблона


method="post" id="my_yandex">

name="ShopID" value=""
type="hidden">
* * *
Слайд 30

Обработчики – классы + вспомогательные файлы Наследование, интерфейсы Базовые классы PaySystem\BaseServiceHandler

Обработчики – классы + вспомогательные файлы
Наследование, интерфейсы
Базовые классы
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');

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

Main\EventManager::getInstance()->addEventHandler('sale',
'onSalePaySystemRestrictionsClassNamesBuildList', 'myBuildList');

Слайд 32

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

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

Слайд 33

На смену отдельным каталогам для каждого города приходит единый каталог Город

На смену отдельным каталогам для каждого города приходит единый каталог
Город покупателя

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

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

Слайд 34

Автоматическое назначение компании и ответственного в зависимости от города местонахождения покупателя

Автоматическое назначение компании и ответственного в зависимости от города местонахождения покупателя

выбирается:
юридическое лицо
ответственный менеджер
платежные системы и реквизиты, привязанные к городу покупателя
служба доставки, привязанная к городу покупателя
Правила обработки частичной оплаты и отгрузки

Холдинговая структура (этап 3 из 4)

Слайд 35

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

Схема работы

ОПЛАТА

ЗАКАЗ

ОПЛАТА

ОТГРУЗКА

КОМПАНИЯ 1

КОМПАНИЯ 2

КОМПАНИЯ 3

ОТГРУЗКА

Слайд 36

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

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

Ко
г. Калининград

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

Слайд 37

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

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

Слайд 38

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

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

Слайд 39

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

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

Слайд 40

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

Пользовательские правила

Main\EventManager::getInstance()->addEventHandler('sale',
'onSaleCompanyRulesClassNamesBuildList', 'myBuildList');

Слайд 41

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

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

Слайд 42

Единый комплексный компонент всего персонального раздела, расширены сценарии использования Все компоненты

Единый комплексный компонент всего персонального раздела, расширены сценарии использования
Все компоненты написаны

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

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

Слайд 43

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

Мои заказы

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

Слайд 44

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

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

Покупка денег

Слайд 45

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

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

Слайд 46

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

Новые возможности скидок

В следующей части

Кастомизация административного раздела

Автоматизация

1

2

3