Recentemente comecei a estudar o Open Cart (OC) como plataforma para e-commerce no lugar do WooComerce, apesar de pretender levantar mais detalhadamente as vantagens de cada uma das plataformas, o Open Cart me chamou atenção por parecer uma escolha interessante para alguns modelos de negócios como: os que usam inscrições recorrentes (subscriptions/assinaturas) e sistemas de afiliados. Parece que o OC já tem boa parte dessas duas regras de negócio implementadas, mas em compensação a documentação, suporte e extensões da comunidade me parecem ser bem precárias em relação ao WooCommerce.
Nesse ponto ocorre o famoso trade-off entre os diferentes frameworks/ferramentas: vale a pena pegar algo mais desconhecido, que tem pouca documentação, menos mão de obra especializada e potencialmente vai gerar mais bugs e trabalho para manter? Não existem respostas prontas, cada projeto e equipe de software demandam diferentes necessidades e vão ver cada aspecto com diferentes pesos.
O Open Cart é um sistema que exige bem pouco no que diz respeito a configuração do servidor. Segundo o próprio Open Cart os requisitos para instalar a aplicação são:
Servidor Web (Apache de preferência)
PHP 5.4+
Banco de dados (MySQLi de preferência)
Enquanto as bibliotecas e módulos PHP exigidos são:
Curl
ZIP
Zlib
GD Library
Mcrypt
Mbstrings
Xml
Na minha experiência local eu tive alguns problemas instalando o OC com o XAMPP e PHP 7.4, o primeiro erro foi esse Notice que impedia o carregamento dos estados no Open Cart por meio do Ajax:
Notice: Trying to access array offset on value of type bool in CAMINHO PARA O OPEN CART\catalog\controller\startup\startup.php on line 166
Esse notice foi inserido na versão 7.4 do PHP, você pode ver mais na nota abaixo:
Trying to use values of type null, bool, int, float or resource as an array (such as $null[“key”]) will now generate a notice.
https://www.php.net/manual/en/migration74.incompatible.php
Para corrigir alterei a condição do IF para verificar se o $this->session->data[‘shipping_address’][‘country_id’] era diferente de null antes de ser usado.
if (isset($this->session->data['shipping_address']) && isset($this->session->data['shipping_address']['country_id'])) { $this->tax->setShippingAddress($this->session->data['shipping_address']['country_id'], $this->session->data['shipping_address']['zone_id']); } elseif ($this->config->get('config_tax_default') == 'shipping') { $this->tax->setShippingAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id')); }
Pretendo continuar nessa jornada de testes do Open Cart e quero tentar implementar um módulo de “checkout transparente e recorrente” pelo Pag Seguro.