Wdrożenie Omnibusa w sklepie na WooCommerce (kurs)

Przed Wami kolejny wpis z rozwiązaniem problemu w rodzaju „czasem coś nie działa a powinno” – tym razem będzie to problem jaki pojawił się ostatnio w jednym ze sklepów opartych o skrypt/oprogramowanie WooCommerce (WordPress), dodatkowo schowany za usługą Cloudflare i korzystający z wtyczki Transferuj.pl (obecnie tpay.com) do przyjmowania szybkich płatności…

Transferuj.pl/tpay.com: Błąd – sesja wygasła

Wszystko sobie sprawnie działało, aż kilka dni temu dostałem informacje, że jeden z klientów sklepu chcąc dokonać płatności za pomocą usługi/serwisu Transferuj.pl (obecnie tpay.com) otrzymał informacje o tym, że wygasła sesja i tym samym z płatności nici.

Analiza (występowania) błędu

Oczywiście w myśl jednej z ulubionych dewiz większości informatyków – dziwne, u mnie działa –  miałem nadzieję, że to problem po stronie komputera naszego klienta. Niestety, ale szybkie testy potwierdziły występowanie takiego problemu po stronie sklepu.

Cały proces zakupowy przebiegał sprawnie do momentu przejścia na stronę serwisu Transferuj.pl, gdzie następowało przyjęcie żądania płatności i przekierowanie na stronę wybranego banku. W tym momencie pojawiał się jeden z 2 błędów:

wordpress_transferuj-pl_cloudflare_error_201503_01

Błąd

Sesja wygasła.
Sprawdź, czy Twoja przeglądarka ma włączoną obsługę plików cookies.

wordpress_transferuj-pl_cloudflare_error_201503_02

Błąd

Przesłane parametry są niepoprawne

Analiza, diagnoza i naprawa

Z racji tego, że każdy taki sklep to zazwyczaj sporo dodatkowych wtyczek, oraz sporo dodatkowego kodu w functions.php – poszukiwania przyczyny nie należą do najprzyjemniejszych zajęć ;-)

Ostatecznie problem okazał się na styku wtyczki/usługi Cloudflare i Transferuj.pl, a konkretnie domyślnie włączona opcja HTTPS Protocol Rewriting, więc wystarczyło w ustawieniach wtyczki Cloudflare do WordPressa zaznaczyć „off” dla tej opcji i zapisać ustawienia (odpowiednia opcja znajduje się też bezpośrednio w panelu zarządzania usługą, ale zalecam skorzystać z wtyczki).

HTTPS Protocol Rewriting

Sama opcja sama z siebie nie jest zła, a wręcz przeciwnie – opcja ma związek z wprowadzeniem przez Cloudflare bezpłatnej opcji „Universal SSL” dla wszystkich stron, co pozwala na włączenie szyfrowania SSL również dla stron które nie posiadają własnego certyfikatu.

Ta forma szyfrowania w opcjach Cloudflare nazywa się Flexible SSL, i zapewnia szyfrowanie między przeglądarką użytkownika a serwerami Cloudflare:

cloudflare_ssl

Z tego powodu, że w przypadku tej opcji – zapewne w większości przypadków najczęściej wybieranej – szyfrowanie odbywa się tylko między przeglądarką użytkownika a serwerami Cloudflare może pojawić się problem z dostępem do niektórych zasobów, do których przeglądarka będzie się odwoływać w ramach połączenia szyfrowanego (https) a na serwerze będą one dostępne w ramach połączenia nieszyfrowanego (http).

W tym momencie wkracza opcja „HTTPS Protocol Rewriting”, dzięki której linki/adresy URL do wszystkich dodatkowych zasobów są zmieniane w taki sposób, by były pobierane za pomocą tego samego protokołu co reszta strony (główny dokument).

Full SSL (strict)

I zazwyczaj to działa – ale w przypadku sklepu internetowego najczęściej mamy na serwerze własny certyfikat SSL (choćby darmowy StartSSL, czy Let’s Encrypt) i tym samym w Cloudflare rodzaj połączenia SSL ustawiony na „Full SSL” lub „Full SSL (strict)”.

W takim przypadku nie ma potrzeby modyfikacji typu połączenia, a wręcz – jak w przypadku wywołania serwisu/usługi Transferuj.pl – może to być szkodliwe i warto rozważyć wyłączenie tej opcji…

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Wdrożenie Omnibusa w sklepie na WooCommerce (kurs)
Patryk
Wdrożenie Omnibusa w sklepie na WooCommerce (kurs)