Potyczka z API realizacji zleceń EZWM (NFZ) w PHP

Jakiś czas temu jeden z klientów zwrócił się z prośbą o przygotowanie integracji jego sklepu z systemem realizacji zleceń NFZ EZWM. W tym wpisie postaram się przybliżyć nieco podstawy jak to ugryźć oraz dostarczyć trochę przykładowego kodu.

Czytaj dalej Potyczka z API realizacji zleceń EZWM (NFZ) w PHP

Niszczenie sesji klienta w PrestaShop po zmianie hasła + jak nie robić refactoringu

W PrestaShop 1.7 po zmianie hasła klienta, jego sesje na innym komputerze są wciąż utrzymywane, co w może być uznawane jako błąd bezpieczeństwa. W tym wpisie pokaże jak to naprawić i skąd się to wzięło 🙂

Czytaj dalej Niszczenie sesji klienta w PrestaShop po zmianie hasła + jak nie robić refactoringu

Wyłączenie warning’ów SMARTY w PrestaShop ― szybki tip

Czasem zdarza się, że szukamy problemu w naszym sklepie więc włączmy PS_MODE_DEV. Jeśli projekt nie jest dobrze utrzymany to dostajemy masę ostrzeżeń z silnika templatek SMARTY, które zaciemniają nam to, czego szukamy, czyli problemów w PHP etc.

Jest na to dość proste rozwiązanie, wystarczy edytować plik config/smarty.config.inc.php i dodać (na początku):

if (Configuration::get('PS_SMARTY_LOCAL')) {
  // ....
}

// linia 38
$smarty->error_reporting = E_ALL & ~E_NOTICE;

Może i prosty tip, ale myślę, że czasem może się przydać 🙂

Swagger OpenAPI Generator – generowanie klienta API PHP na przykładzie allegro

Swagger to platforma oprogramowania typu open source wspierana przez duży ekosystem narzędzi, który pomaga programistom projektować, budować, dokumentować i wykorzystywać usługi sieciowe RESTful.

Generator OpenAPI umożliwia generowanie bibliotek klienta API a w tym wpisie pokaże jak wygenerować i używać klienta w PHP dla nowego REST API serwisu allegro.pl

Czytaj dalej Swagger OpenAPI Generator – generowanie klienta API PHP na przykładzie allegro

PrestaShop 1.6 – problem z zapisem tłumaczeń

Wielokrotnie przy pracy z PrestaShop napotykałem dziwny problem powodujący że zapisanie w panelu dowolnych tłumaczeń zapisywało je do plików jednak po odświeżeniu wciąż w edytorze widoczna widniała stara fraza.

Przez ten problem nie można było korzystać w "Zapisz i zostań" co sprawiało że tłumaczenie było kłopotliwe i zajmowało dużo czasu. Nie udało mi się znaleźć rozwiązania w sieci więc musiałem sam się tym zająć 🙂

Czytaj dalej PrestaShop 1.6 – problem z zapisem tłumaczeń

Parsowanie dużych plików XML w PHP – optymalne rozwiązanie

Ostatnio musiałem napisać aplikację do obsługi hurtowni która dysponowała sporym cennikiem XML (~50MB) w dodatku aplikacja musiała działać na dość słabych serwerach wirtualnych. Z natywnych rozwiązań najlepsze to SimpleXML oraz XMLReader. Obydwa niestety nie pasowały do moich potrzeb, pierwszy ładuje cały plik do pamięci co mogło by powodować problemy na serwerach z mniejszą ilością RAM a drugi nie jest nieco skomplikowany przy przetwarzaniu dokumentu. Znalazłem ciekawe połączenie obydwóch metod.

Czytaj dalej Parsowanie dużych plików XML w PHP – optymalne rozwiązanie

Zaokrąglanie ceny brutto bazując na cenie netto i podatku

Zaokrąglanie float'ów w PHP to łatwizna ale czasem potrzeba nam czegoś więcej.  Kiedy mamy w sklepie cenę netto i wartość VAT i na tej podstawie chcemy wygenerować fajną cenę brutto w stylu 123.45 -> 159.90 zamiast: 151.84.

Czytaj dalej Zaokrąglanie ceny brutto bazując na cenie netto i podatku

PrestaShop i ciekawy bug pozwalający wyciągnąć dane klientów i nie tylko (PSCSX-8871)

Jakiś czas temu postanowiłem się przyjrzeć nieco, w kontekście błędów i bezpieczeństwa popularnemu silnikowi e-commerce PrestaShop.

Po pobieżnym przejrzeniu dispatcher`a, silnika zarządzania modułami i innymi bardziej zaawansowanym mechanizmom od niechcenia rzuciłem okiem na bardzo prostą funkcjonalność jaką jest ponowienia zamówienia. Pomyślałem że tak prosta mechanika (na liście zamówień pozwala ponowić wybrane zamówienie) nie ma szans posiadać żadnej luki, jakie było moje zdziwienie kiedy okazało się że jest inaczej...

Czytaj dalej PrestaShop i ciekawy bug pozwalający wyciągnąć dane klientów i nie tylko (PSCSX-8871)