El comercio electrónico tiene que ver con la comodidad del cliente. Ofrecer un método de envío conveniente es una parte inevitable de la experiencia del cliente en una tienda en línea. Por defecto magento viene con 7 que los puedes ver aca
Sin embargo, a medida que aumenta la popularidad de nuestra tienda, es buena idea optar por un metodo de envio que se adapte a nuestras necesidades.
Entonces, que tal si creamos un método de envío en la tienda Magento 2. el cual sera el primero que hagamos en este blog y espero que no sea el ultimo.
Un método de envío personalizado teniendo en cuenta los requisitos comerciales es una opción factible. Una estrategia de envío debe ser tal que no termine en el costo del cumplimiento del pedido más que en la ganancia de ese pedido.
Motivos por lo que son necesario una buena estrategia de envio optimizada.
Pasos para crear un método de envío en Magento 2:
1. Crear el archivo registration.php en app/code/Actecnology/TransShipping/registration.php y agregar el siguiente código a este archivo:
/**
* Copyright © AC Tecnology, Inc. All rights reserved.
* See COPYING.txt for license details. Arturo Cabrera
*/
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Actecnology_TransShipping',
__DIR__
);
2. Crear el archivo module.xml en app/code/Actecnology/TransShipping/etc/module.xml y agregue el siguiente código:
3. Crear el archivo system.xml en app/code/Actecnology/TransShipping/etc/adminhtml/system.xml y agrar el siguiente codigo:
4. Cree el archivo config.xml en app/code/Actecnology/TransShipping/etc/config.xml y agregue el siguiente código a este archivo:
5. Cree el archivo TransShipping.php en app/code/Actecnology/TransShipping/Model/Carrier/
namespace Actecnology\TransShipping\Model\Carrier;
use Magento\Quote\Model\Quote\Address\RateRequest;
use Magento\Shipping\Model\Rate\Result;
use Magento\Shipping\Model\Carrier\AbstractCarrier;
use Magento\Shipping\Model\Carrier\CarrierInterface;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory;
use Psr\Log\LoggerInterface;
use Magento\Shipping\Model\Rate\ResultFactory;
use Magento\Quote\Model\Quote\Address\RateResult\MethodFactory;
class TransShipping extends AbstractCarrier implements CarrierInterface
{
protected $_code = 'transshipping';
protected $rateResultFactory;
protected $rateMethodFactory;
public function __construct(
ScopeConfigInterface $scopeConfig,
ErrorFactory $rateErrorFactory,
LoggerInterface $logger,
ResultFactory $rateResultFactory,
MethodFactory $rateMethodFactory,
array $data = []
)
{
$this->rateResultFactory = $rateResultFactory;
$this->rateMethodFactory = $rateMethodFactory;
parent::__construct($scopeConfig, $rateErrorFactory, $logger, $data);
}
public function getAllowedMethods()
{
return ['transshipping' => $this->getConfigData('name')];
}
public function collectRates(RateRequest $request)
{
if (!$this->getConfigFlag('active')) {
return false;
}
/** @var \Magento\Shipping\Model\Rate\Result $result */
$result = $this->rateResultFactory->create();
/** @var \Magento\Quote\Model\Quote\Address\RateResult\Method $method */
$method = $this->rateMethodFactory->create();
$method->setCarrier('transshipping');
$method->setCarrierTitle($this->getConfigData('title'));
$method->setMethod('transshipping');
$method->setMethodTitle($this->getConfigData('name'));
/*you can fetch shipping price from different sources over some APIs, we used price from config.xml - xml node price*/
$amount = $this->getConfigData('price');
$shippingPrice = $this->getFinalPriceWithHandlingFee($amount);
$method->setPrice($shippingPrice);
$method->setCost($amount);
$result->append($method);
return $result;
}
}
Paso final.
php bin/magento setup:upgrade
Eso es todo para crear un método de envío personalizado en Magento 2. Una vez que haya creado el método de envío personalizado de Magento 2, su configuración se muestra en el backend
Una vez que el método de envío personalizado está configurado y habilitado, se muestra en la interfaz:
Puede ver y/o descargar el codigo en el siguiente enlace de: github
En este Post aprenderemos a personalizar la tienda Magento 2. Descubre cómo incorporar JavaScript personalizado para mejorar la funcionalidad y ...
Leer más...Current version of RDBMS is not supported. Used Version: 10.6.17-MariaDB-1:10.6.17+maria~ubu2004. Supported versions: MySQL-8, MySQL-5....
Leer más...Los principales motivos para aprenderLa motivación es uno de los pilares fundamentales en el proceso de aprendizaje del desarrollo web....
Leer más...✨ Dominando el Estilo: Un Viaje al Mundo de CSSEn el universo del desarrollo web, CSS (Cascading Style Sheets) desempeña un papel funda...
Leer más...