Google Chrome tarayıcılarında 17 Şubat 2020 tarihinde ilk adımı belirli kullanıcılar için atılan sameSite=None ve secure güncellemesi 9 Mart 2020 tarihinde neredeyse tüm kullanıcılar için geçerli oldu. Bu güncelleme ile tanımlanan cookieler varsayılan olarak sameSite=Lax(first-party cookie) kabul edilmeye başlandı. Yapılan bu güncelleme ile oluşturulan cookieler sadece cookie için tanımlanan alan adı üzerinden erişilebilecek hale geldi ve böylece farklı bir alan adı ile bu cookielere erişim kısıtlanmış oldu.
Bu güncellemenin bize etkisi nedir?
Mevcut modüllerimizde geri dönüş sayfasındaki işlemler cookie erişimi ile kontrol edilmekte ve tamamlanmaktadır. Eğer işleme ait cookie sameSite = None ve secure olarak tanımlanmamış ise Google Chrome geri dönüş sırasında cookie erişimine izin vermemektedir. Bu sebepten dolayı ödemesi yapılan işleme güncelleme yapılması için erişim sağlanamamaktadır.
Çözümü nedir?
Opencart 2.3 sürümlerinde yapmanız gereken;
Buraya tıklayarak indirdiğiniz dosyayı ana dizine çıkarın
veya
catalog/controller/startup/startup.php dosyasını düzenleyerek,
setcookie('currency', $code, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']);
kodunu
setcookie('currency', $code, ['expires' => time() + 60 * 60 * 24 * 30, 'path' => '/', 'domain' => $this->request->server['HTTP_HOST'], 'samesite' => 'None', 'secure' => true]);
ile değiştirin.
Aynı dosya içerisindeki,
setcookie('language', $code, time() + 60 * 60 * 24 * 30, '/', $this->request->server['HTTP_HOST']);
kodunu
setcookie('language', $code, ['expires' => time() + 60 * 60 * 24 * 30, 'path' => '/', 'domain' => $this->request->server['HTTP_HOST'], 'samesite' => 'None', 'secure' => true]);
ile değiştirin.
Ana dizine tekrar gelerek system/library/session.php dosyasını açın,
setcookie($key, $this->session_id, ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly'));
kodunu
setcookie($key, $this->session_id, ['expires' => ini_get('session.cookie_lifetime'), 'path' => ini_get('session.cookie_path'), 'domain' => ini_get('session.cookie_domain'), 'samesite' => 'None', 'secure' => true, 'httponly' => ini_get('session.cookie_httponly')]);
ile değiştirin.
Aynı dosya içerisindeki,
setcookie($key, '', time() - 42000, ini_get('session.cookie_path'), ini_get('session.cookie_domain'));
kodunu
setcookie($key, '', ['expires' => time() - 42000, 'path' => ini_get('session.cookie_path'), 'domain' => ini_get('session.cookie_domain'), 'samesite' => 'None', 'secure' => true]);
ile değiştirin.
Aynı dosya içerisindeki,
ini_set('session.use_cookies', 'On');
kodunun alt kısmına
ini_set('session.cookie_secure', 'On');
ini_set('session.cookie_samesite', 'None');
kodunu ekleyin.
Sorununuz Opencart 2.3 sürümleri için bu güncelleme ile düzelmiş olacaktır. Eğer sorununuz halen devam ediyorsa Yönetim Paneli > Bize Ulaşın bölümünden Shopinext Teknik Birimine bilgi verebilirsiniz, arkadaşlarımız sizin için güncellemeyi sağlayacaktır.
Opencart 3.0 sürümlerinde yapmanız gereken;
Buraya tıklayarak indirdiğiniz dosyayı ana dizine çıkarın
veya
catalog/controller/startup/session.php dosyasını düzenleyerek,
setcookie($this->config->get('session_name'), $this->session->getId(), ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'));
kodunu
setcookie($this->config->get('session_name'), $this->session->getId(), ['expires' => ini_get('session.cookie_lifetime'), 'path' => ini_get('session.cookie_path'), 'domain' => ini_get('session.cookie_domain'), 'samesite' => 'None', 'secure' => true, 'httponly' => true]);
ile değiştirin.
Ana dizine tekrar gelerek system/framework.php dosyasını açın,
setcookie($config->get('session_name'), $session->getId(), ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'));
kodunu
setcookie($config->get('session_name'), $session->getId(), ['expires' => ini_get('session.cookie_lifetime'), 'path' => ini_get('session.cookie_path'), 'domain' => ini_get('session.cookie_domain'), 'samesite' => 'None', 'secure' => true, 'httponly' => true]);
ile değiştirin.
Sorununuz Opencart 3.0 sürümleri için bu güncelleme ile düzelmiş olacaktır. Eğer sorununuz halen devam ediyorsa Yönetim Paneli > Bize Ulaşın bölümünden Shopinext Teknik Birimine bilgi verebilirsiniz, arkadaşlarımız sizin için güncellemeyi sağlayacaktır.