<?php namespace BobGroup\BobGo\Observer; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; use Magento\Framework\App\Config\ScopeConfigInterface; use Magento\Framework\HTTP\Client\Curl; use Psr\Log\LoggerInterface; class ConfigChangeObserver implements ObserverInterface { protected $scopeConfig; protected $curl; protected $logger; public function __construct( ScopeConfigInterface $scopeConfig, Curl $curl, LoggerInterface $logger ) { $this->scopeConfig = $scopeConfig; $this->curl = $curl; $this->logger = $logger; } public function execute(Observer $observer) { $sectionId = $observer->getEvent()->getSection(); // Ensure we're working with the 'carriers' section if ($sectionId === 'carriers') { $isEnabled = $this->scopeConfig->getValue('carriers/bobgo/active', \Magento\Store\Model\ScopeInterface::SCOPE_STORE); // Check if the extension is enabled if ($isEnabled) { $url = 'https://api.dev.bobgo.co.za/rates-at-checkout/magento'; // Prepare the payload $payload = json_encode([ "identifier" => "woodemo3.bobgo.co.za", "rate" => [ "origin" => [ "country" => "ZA", "postal_code" => "0181", "province" => "GP", "city" => "Pretoria", "name" => null, "address1" => "125 Dallas Avenue", "address2" => "Newlands", "address3" => null, "phone" => "", "fax" => "", "email" => null, "address_type" => null, "company_name" => "" ], "destination" => [ "country" => "ZA", "postal_code" => "0181", "province" => "GP", "city" => "Pretoria", "name" => null, "address1" => null, "address2" => "", "address3" => null, "phone" => "", "fax" => "", "email" => null, "address_type" => null, "company_name" => "", "shipping_suburb" => "Elarduspark" ], "currency" => "ZAR", "locale" => "en", "items" => [ [ "name" => "Colours With Variants - Has dimensions - Red", "sku" => "sku-1", "quantity" => 2, "price" => 500, "vendor" => "", "requires_shipping" => true, "taxable" => true, "fulfillment_service" => "manual", "properties" => null, "product_id" => 160824, "grams" => 2000, "height" => 20, "length" => 43, "width" => 63, "variant_id" => 160826, "shipping_class" => "colours", "shipping_class_id" => 41 ] ] ] ]); try { // Set headers $this->curl->addHeader("Accept", "*/*"); $this->curl->addHeader("Accept-Encoding", "deflate, gzip, br"); $this->curl->addHeader("Content-Type", "application/json; charset=utf-8"); $this->curl->addHeader("Host", "api.dev.bobgo.co.za"); $this->curl->addHeader("User-Agent", "Magento/2.x"); // Send the request $this->curl->post($url, $payload); // Check response status if ($this->curl->getStatus() == 200) { $response = $this->curl->getBody(); $this->logger->info('Bob Go API response:', ['response' => $response]); } else { $status = $this->curl->getStatus(); $this->logger->error('Bob Go API request failed.', ['status' => $status, 'url' => $url]); } } catch (\Exception $e) { $this->logger->error('Bob Go API request error:', ['exception' => $e->getMessage()]); } } } } }