¿Cómo crear un método de envío en Magento 2?

como-crear-un-metodo-de-envio-en-magento-2 Escrito por @gnuxdar   Publicado 31/07/2022

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.

  1. Las siguientes estadísticas explican por qué:
    El 61% de los compradores informan que abandonaron una transacción debido a un costo adicional, como las tarifas de envío: 99firms
  2. El 79 % de los consumidores de EE. UU. dijo que el envío gratuito los haría más propensos a comprar en línea. 
  3. El 46,5 % de las pequeñas y medianas empresas afirman que ofrecer envío gratuito aumenta sus beneficios. MCM

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:
nnidule.xml
   

3. Crear el archivo system.xml en app/code/Actecnology/TransShipping/etc/adminhtml/system.xml y agrar el  siguiente codigo:

system.xml

4. Cree el archivo config.xml en app/code/Actecnology/TransShipping/etc/config.xml y agregue el siguiente código a este archivo:

config.xml

5. Cree el archivo TransShipping.php en app/code/Actecnology/TransShipping/Model/Carrier/

TransShipping.php y agregue el siguiente código a este archivo:

 


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

admin config

 

Una vez que el método de envío personalizado está configurado y habilitado, se muestra en la interfaz:

front methos shippimg

 

Puede ver y/o descargar el codigo en el siguiente enlace de: github



Atras

Últimas Publicaciones

Le puede interesar los ultimos articulos públicados

Como agregar JavaScript Custom en Magento 2 como-agregar-javascript-custom-en-magento-2

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 current-version-of-rdbms-is-not-supported

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...
Claves para Aprender Desarrollo Web de Manera Efectiva claves-para-aprender-desarrollo-web-de-manera-efectiva

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 CSS ✨ dominando-el-estilo-un-viaje-al-mundo-de-css

✨ 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...