<?php namespace BobGroup\BobGo\Model\Carrier; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Quote\Model\Quote\Address\RateRequest; use Magento\Quote\Model\Quote\Address\RateResult\Method; use Magento\Quote\Model\Quote\Address\RateResult\MethodFactory; use Magento\Quote\Model\Quote\Address\RateResult\ErrorFactory; use Magento\Shipping\Model\Carrier\AbstractCarrier; use Magento\Shipping\Model\Carrier\CarrierInterface; use Magento\Shipping\Model\Rate\Result; use Magento\Shipping\Model\Rate\ResultFactory; use Psr\Log\LoggerInterface; class BobGo extends AbstractCarrier implements CarrierInterface { protected $_code = 'bobgo'; protected $rateResultFactory; protected $rateMethodFactory; protected $logger; public function __construct( ScopeConfigInterface $scopeConfig, ErrorFactory $rateErrorFactory, LoggerInterface $logger, ResultFactory $rateResultFactory, MethodFactory $rateMethodFactory, array $data = [] ) { $this->rateResultFactory = $rateResultFactory; $this->rateMethodFactory = $rateMethodFactory; $this->logger = $logger; parent::__construct($scopeConfig, $rateErrorFactory, $logger, $data); } public function collectRates(RateRequest $request) { $this->logger->debug('BobGo collectRates method called'); if (!$this->getConfigFlag('active')) { $this->logger->debug('BobGo is not active'); return false; } $this->logger->debug('BobGo is active'); $result = $this->rateResultFactory->create(); $method = $this->rateMethodFactory->create(); $method->setCarrier($this->_code); $method->setCarrierTitle($this->getConfigData('title')); $method->setMethod($this->_code); $method->setMethodTitle($this->getConfigData('name')); $shippingCost = (float)$this->getConfigData('shipping_cost'); $this->logger->debug('Shipping Cost: ' . $shippingCost); $method->setPrice($shippingCost); $method->setCost($shippingCost); $result->append($method); return $result; } public function getAllowedMethods() { return [$this->_code => $this->getConfigData('name')]; } }