PayPal w PrestaShop to nie jedna wtyczka, a kilka różnych rozwiązań o łudząco podobnych nazwach — i stąd bierze się większość problemów przy wdrożeniu. Najpierw trzeba wybrać wariant integracji, potem przygotować konto i aplikację REST, a dopiero na końcu klikać „włącz” w panelu sklepu. Ten tekst to część organizacyjna: kolejność działań, kryteria wyboru i lista rzeczy, które trzeba sprawdzić przed pierwszym zamówieniem na produkcji. Konkrety techniczne z konfiguracji znajdziesz w osobnym materiale: PayPal w PrestaShop: szybka konfiguracja krok po kroku. Jeśli potrzebujesz uporządkowania całego procesu od strony projektu, zacznij od organizacji wdrożenia modułu PayPal.
Największy bałagan w projektach z PayPalem nie bierze się z kodu, a z nazw. W panelu modułów możesz mieć jednocześnie „PayPal”, „PayPal Standard” i wtyczkę zewnętrznego dostawcy, a każda z nich rozmawia z innym API. Zanim cokolwiek klikniesz, ustal, którą ścieżką idziesz.
Po stronie konta potrzebujesz konta Business (Personal odpada), potwierdzonego e-maila oraz uzupełnionych danych firmy i rachunku bankowego. Sprawdź to wcześniej – weryfikacja bywa ręczna i zajmuje od kilku godzin do kilku dni roboczych. Te same dane posłużą potem do logowania w panelu deweloperskim, gdzie tworzysz aplikację REST i pobierasz Client ID oraz Secret.
Samych wariantów wdrożenia są cztery: oficjalny moduł PrestaShop, wtyczka z marketplace (płatna subskrypcja, czasem z kodem zamkniętym), własny moduł pod konkretny sklep oraz integracja REST bez modułu – np. gdy płatność odpala system zamówień poza PrestaShopem.
Dobór sprowadza się do modelu sprzedaży: mały sklep detaliczny w Polsce poradzi sobie na oficjalnym module; w B2B najpierw sprawdź, czy klienci faktycznie zapłacą PayPalem, bo często wygrywa przelew i płatność odroczona; sklep eksportowy z wieloma walutami potrzebuje Commerce Platform i modułu, który obsługuje webhooki oraz przelicza waluty bez sztywnego kursu.
Kolejność działań po stronie sklepu i klienta rozpisaliśmy osobno w materiale o organizacji wdrożenia modułu PayPal w PrestaShop.
| Wariant | Mechanizm | Dla kogo | Kiedy odpada |
|---|---|---|---|
| PayPal Standard / Express Checkout | NVP/SOAP + IPN | Sklepy na starym module, które nie chcą ruszać koszyka | Gdy pojawiają się odrzucenia z powodu SCA i brakuje webhooków |
| PayPal Commerce Platform | REST API + webhooki + karty | Nowe wdrożenia, sklepy z kartami i wieloma walutami | Gdy sklep nie ma publicznego HTTPS na endpointy zwrotne |
| Własny moduł | REST API w kodzie sklepu | Niestandardowy koszyk, ERP, płatności częściowe | Gdy nie masz kogoś, kto utrzyma kod po wdrożeniu |
| Integracja bez modułu | REST API poza PrestaShopem | Zamówienia obsługiwane w zewnętrznym systemie | Gdy cała sprzedaż i statusy żyją w PrestaShop |
Zadaj trzy pytania: kto to utrzyma, czy mam dostęp do kodu i co się stanie za 12 miesięcy. Odpowiedzi rozstrzygają więcej niż lista funkcji na karcie produktu.
Koszty. Licencje wtyczek są wyceniane w euro i rozliczane rocznie. Kwoty się zmieniają, więc sprawdź aktualny cennik, ale do kalkulacji przyjmij trzy lata, nie pierwszy rok. Kluczowe jest to, co dzieje się po wygaśnięciu subskrypcji: czy moduł dalej przyjmuje płatności, a tylko nie dostaje aktualizacji, czy przestaje działać lub wsparcie przestaje odpowiadać. To różnica między zamrożonym kodem a wyłączoną płatnością. Policz też koszt przestoju: przy 50 zamówieniach dziennie i średniej wartości 200 zł każdy dzień bez płatności to około 10 tys. zł obrotu.
Dostęp do kodu. Pliki zakodowane ionCube albo Zend to brak możliwości hotfixu w piątek wieczorem. Aktualizacje. Sprawdź datę ostatniego wydania i changelog. PrestaShop 1.7 i 8.x różnią się warstwą Symfony i hookami, więc moduł bez wydania od dwóch lat nie wjedzie na 8.x bez poprawek. Cykl życia modułów opisuje dokumentacja dla deweloperów PrestaShop.
Kiedy własny moduł wygrywa: koszyk z rabatami liczonymi po stronie serwera, wielowalutowość z własnym kursem i zaokrąglaniem, integracja z ERP (statusy, faktury, magazyn), płatność częściowa lub dopłata po złożeniu zamówienia.
Sygnały ostrzegawcze w wtyczkach z marketplace: brak wsparcia webhooków i sprawdzanie statusu po cronie; zapisywanie transakcji we własnych tabelach zamiast powiązania z zamówieniem; brak obsługi SCA i rosnące odrzucenia; brak zwrotów z panelu sklepu; zero logów, gdy płatność nie dojdzie.
Jeśli w projekcie jest kilka integracji naraz, uporządkuj je wspólnie – patrz integracje z PrestaShop: organizacja pracy i wdrożenia.
| Kryterium | Oficjalny moduł | Wtyczka z marketplace | Własny moduł |
|---|---|---|---|
| Koszt | Brak licencji | Subskrypcja roczna w euro | Jednorazowe prace + utrzymanie |
| Dostęp do kodu | Tak | Często nie (kod zamknięty) | Tak, po twojej stronie |
| Aktualizacje pod 8.x | Po stronie PrestaShop | Zależne od wydawcy | Ty decydujesz o terminie |
| Niestandardowa logika | Ograniczona | Zwykle brak | Pełna |
| Webhooki i SCA | Zależne od wersji modułu | Trzeba sprawdzić przed zakupem | Do zaprojektowania |
Zacznij od konta Business i domknij weryfikację, zanim dotkniesz modułu. Potem zaloguj się tym samym kontem do panelu deweloperskiego i utwórz aplikację osobno dla środowiska Sandbox i osobno dla Live. Typ aplikacji: Merchant. Zaznacz tylko te uprawnienia, których użyjesz – jeśli nie chcesz zapisywać kart, nie włączaj funkcji powiązanych z przechowywaniem danych karty.
Pobierz Client ID i Secret. Secret pokazuje się raz, więc wrzuć go do menedżera haseł, a nie do repozytorium. Dla trybu live wygeneruj nowe klucze – kopiowanie sandboxowych to najczęstszy błąd przy przełączaniu.
Sandbox. W panelu utwórz dwa konta testowe: Business (sprzedawca) i Personal (kupujący). Do sandboxa logujesz się osobnym logowaniem – dane z konta live nie zadziałają. Karty testowe generuje narzędzie w panelu; dostępne są też scenariusze 3D Secure: płatność zaakceptowana i odrzucona. Przetestuj oba, bo dopiero odrzucenie pokazuje, czy sklep poprawnie oznacza nieudaną transakcję.
Webhooki. Adres musi być publiczny i po HTTPS. Nie lokalny host, nie adres w sieci wewnętrznej, nie endpoint za logowaniem – PayPal nie zaloguje się do panelu sklepu. Certyfikat musi mieć pełny łańcuch. Endpoint powinien odpowiadać kodem 2xx w kilka sekund i nie wykonywać ciężkiej pracy – zapisz zdarzenie i przetwórz je w cronie. Kody odpowiedzi i zachowanie przekierowań opisuje dokumentacja MDN dotycząca HTTP. Jeśli sklep stoi za CDN lub WAF, po pierwszym teście zajrzyj w logi serwera – ruch z PayPala bywa tam blokowany.
Przejście na live. Zmieniają się tylko klucze i adres webhooka; konfiguracja koszyka zostaje. Po przełączeniu wykonaj jedną realną płatność na małą kwotę, a potem zwrot z panelu PayPala i sprawdź, czy status zamówienia się zaktualizował. W PrestaShop ustaw waluty i kursy, ograniczenia krajów i stref, geolokalizację oraz kolejność metod płatności w preferencjach. Przy testach wyłącz cache. Samą konfigurację modułu rozpisaliśmy w tekście PayPal w PrestaShop: szybka konfiguracja krok po kroku.
SCA (silne uwierzytelnianie klienta) to wymóg PSD2: przy płatności w EOG trzeba potwierdzić tożsamość kupującego dwoma z trzech elementów — czymś, co wie (hasło), czymś, co ma (telefon, aplikacja banku) i czymś, czym jest (biometria). W praktyce w PayPal uwierzytelnienie prowadzi PayPal jako dostawca usług płatniczych i podmiot obsługujący 3D Secure. Klient loguje się do konta PayPal albo przechodzi challenge 3DS wystawiony przez swój bank. W sklepie nie integrujesz 3DS osobno i nie potrzebujesz do tego dodatkowej wtyczki.
Trzy wyjątki, które realnie zobaczysz w rozliczeniach:
Co to oznacza dla Ciebie: nazwa prawna na koncie PayPal musi zgadzać się z KRS lub CEIDG, kwota i waluta w zamówieniu muszą pasować do groszaka do tego, co wysyła moduł, a adres dostawy musi być adresem z transakcji. Gdy kwoty się rozjeżdżają (typowo przez zaokrąglenia w koszyku albo rozbieżny podatek), transakcja ląduje jako PENDING i rośnie ryzyko przegranego sporu. Efektem ubocznym SCA jest mniej porzuceń koszyka — klient nie jest wyrzucany do banku, tylko zostaje w PayPalu. Same ustawienia modułu i dane wysyłane do API opisujemy w dokumentacji deweloperskiej PrestaShop oraz w materiale o szybkiej konfiguracji PayPal w PrestaShop. Kolejność prac po stronie sklepu rozpisaliśmy w tekście o organizacji wdrożenia modułu PayPal.
Zwrot w panelu PayPal nie aktualizuje zamówienia w PrestaShop. To najczęstsza pułapka po wdrożeniu: księgowość widzi korektę, a w sklepie zamówienie dalej wisi jako opłacone i zrealizowane.
Kolejność działań przy zwrocie:
Nie robimy zwrotów „przelewem na telefon”. Tracisz wtedy dowód i prawo do ochrony sprzedawcy. Przy reklamacjach wrzucaj do panelu: potwierdzenie nadania i dostawy ze śledzeniem, korespondencję mailową, logi zamówienia (IP, data, statusy), regulamin z potwierdzoną akceptacją. Ochrona sprzedawcy nie obejmuje towarów niematerialnych i usług — tam wygrywasz tylko dokumentacją.
Jeśli odbierasz powiadomienia webhook, odpowiadaj kodem 200 — błędy powodują ponowienia i duplikaty operacji, co przy zwrotach boli podwójnie (specyfikacja HTTP i kody statusu w MDN). Zwroty muszą też mieć osobny status zamówienia, inaczej raport sprzedaży pokaże przychód, którego nie było — opisaliśmy to przy okazji wdrożenia DataLayer w PrestaShop. Całość procesów okołopłatnościowych porządkuje materiał o integracjach z PrestaShop.
| Cecha | Dysputa (reklamacja) | Chargeback (obciążenie zwrotne) |
|---|---|---|
| Kto prowadzi sprawę | PayPal, w Resolution Center | Bank/instytucja wydająca kartę, PayPal tylko pośredniczy |
| Inicjator | Kupujący składa reklamację w PayPalu | Kupujący składa reklamację w banku |
| Termin na Twoją odpowiedź | Zwykle ok. 10 dni — dokładny termin widzisz przy sprawie | Krótki, często 7–10 dni na zebranie dowodów |
| Kto decyduje | PayPal na podstawie dowodów obu stron | Bank wydawcy karty; decyzja bywa nieodwołalna |
| Czas rozstrzygnięcia | Krótszy, sprawa zamyka się w Resolution Center | Dłuższy — potrafi ciągnąć się tygodniami |
| Koszt po Twojej stronie | Brak dodatkowej opłaty przy ugodzie | Osobna opłata za chargeback — sprawdź aktualną kwotę w cenniku konta |
Koszt PayPala w polskim sklepie składa się z trzech pozycji: prowizji od transakcji, opłaty stałej i przewalutowania, do których dochodzi wypłata środków oraz ewentualne opłaty za spory.
Poniższa tabela to rachunek na jawnych założeniach, a nie cennik dostawców. Podstaw własne stawki z umów i policz to samo na swoich danych: średni koszyk × udział metody × liczba zamówień w miesiącu.
Konwersja: w płatnościach krajowych BLIK, Przelewy24 i InPost Pay wygrywają przyzwyczajeniem i brakiem logowania. PayPal wygrywa tam, gdzie klient nie ma polskiej karty: eksport, klienci z UE i USA, B2B kupujące na fakturę z zagranicy, kursy i usługi cyfrowe. Nie wyłączaj P24 na rzecz PayPala — to nie albo-albo. Po włączeniu nowej metody sprawdź w wdrożeniu GA4 eCommerce, czy faktycznie rośnie udział zamówień, a nie tylko liczba kliknięć. Jeśli nie wiesz, kto ma liczyć te stawki i porównywać warianty wdrożenia, punktem wyjścia jest materiał o kosztach wdrożenia PrestaShop.
| Metoda | Model opłat (typowo) | Koszt przy koszyku 250 zł — przykład na założeniach |
|---|---|---|
| PayPal | procent od transakcji + opłata stała, wyższa stawka dla transakcji zagranicznych | 2,9% + 1,00 zł = 8,25 zł |
| Przelewy24 | procent od transakcji + opłata stała, stawka zależna od obrotu | 1,5% + 0,30 zł = 4,05 zł |
| PayU | procent od transakcji + opłata stała, stawka negocjowana | 1,9% + 0,30 zł = 5,05 zł |
| BLIK (przez PSP) | procent od transakcji, często niżej niż karty | 1,2% + 0,20 zł = 3,20 zł |
| InPost Pay | stawka ustalana indywidualnie, często w pakiecie z usługami InPost | brak publicznego cennika — zapytaj o wycenę |
Trzy objawy odpowiadają za większość zgłoszeń do wsparcia przy PayPal w PrestaShop: status zamówienia nie zmienia się po opłaceniu, zamówienie tworzy się podwójnie, a klucze z sandbox trafiają na produkcję. Każdy z nich da się zdiagnozować lokalnie, bez pisania do helpdesku.
Status nie zmienia się po opłaceniu. Zamówienie stoi na „Oczekiwanie na płatność PayPal”, choć w panelu PayPal transakcja ma status Completed. Prawie zawsze winny jest webhook: nie doszedł, doszedł pod zły adres albo zwrócił kod inny niż 200. Diagnoza w trzech krokach: (1) Advanced Parameters → Logs w back office, tam moduł zapisuje własne błędy, (2) panel PayPal Developer → twoja aplikacja → Webhooks → lista zdarzeń z kodem odpowiedzi, jaką zwrócił twój sklep, (3) access.log i error.log serwera. Jeśli zdarzenia mają status 500, sprawdź, czy WAF lub proxy nie blokuje adresów IP PayPal. Jeśli nie ma ich wcale — adres webhooka jest zły albo aplikacja nie ma subskrypcji na zdarzenie typu PAYMENT.CAPTURE.COMPLETED.
Duplikaty zamówień. Powstają, gdy powrót klienta z PayPal (return URL) i webhook tworzą zamówienie niezależnie — dwa kody ścieżki, dwa wpisy w bazie. Drugi wariant to podwójne kliknięcie „Zapłać” albo odświeżenie strony powrotu. Lekarstwo jest jedno: identyfikacja po identyfikatorze transakcji i wspólny punkt tworzenia zamówienia dla obu ścieżek.
Sandbox pomieszany z live. Najczęstsza przyczyna to podmiana tylko części danych: nowe klucze, stare adresy powrotu, wpisy w ps_configuration z poprzedniego środowiska. Porównaj parę client_id/secret, adresy powrotu i anulowania oraz wyczyść cache po zmianie. Kody zwrotu warto czytać ze zrozumieniem — opis znajdziesz w dokumentacji HTTP: Hypertext Transfer Protocol w MDN Web Docs. Diagnozę zacznij od uporządkowania środowisk zgodnie z zasadami organizacji wdrożenia płatności PayPal w PrestaShop.
| Objaw | Gdzie sprawdzić | Najczęstsza przyczyna |
|---|---|---|
| Zamówienie nie zmienia statusu po opłaceniu | Logi modułu, Webhooks w PayPal Developer, error.log | Webhook nie doszedł lub zwrócił 500 – blokada firewall/WAF albo brak subskrypcji zdarzenia |
| Dwa zamówienia z jednej płatności | Lista zamówień, identyfikator transakcji, logi modułu | Return URL i webhook tworzą zamówienie niezależnie |
| Płatność odrzucana tylko na produkcji | Porównanie client_id/secret sandbox vs live | Klucze sandbox wklejone do środowiska live |
| Brak zdarzeń w panelu PayPal Developer | Aplikacja REST → Webhooks | Zły adres webhooka, brak HTTPS lub literówka w URL |
Checklistę uruchomieniową traktuj jak listę zadań z kryterium zaliczenia. Nie „przetestowaliśmy PayPal”, tylko „każdy scenariusz z tabeli przeszedł i mam na to numer transakcji lub zrzut ekranu”.
Ostatni etap przed live: jedno prawdziwe zamówienie na symboliczną kwotę (np. 1 zł) z prawdziwej karty, na produkcyjnych kluczach. Nie pomijaj tego kroku — sandbox nie odzwierciedla reguł ryzyka ani limitów konta live.
Waluta obca i mobile. Złóż zamówienie w EUR lub USD i porównaj kwotę w sklepie, w PayPal i na dokumencie — różnice z przewalutowania muszą zgadzać się z tym, co obiecujesz klientowi. Na telefonie sprawdź, czy przycisk płatności nie ucieka pod stopkę i czy powrót z aplikacji PayPal wraca do właściwego kroku zamówienia.
E-maile. Przejdź przez International → Translations → E-mails i sprawdź szablony płatności oraz order_conf — czy zawierają numer transakcji i kwotę. Osobno zweryfikuj powiadomienia wewnętrzne dla obsługi. Samą konfigurację modułu opisujemy w materiale szybka konfiguracja PayPal w PrestaShop krok po kroku. Jeśli modyfikujesz kod modułu, punktem wyjścia jest dokumentacja deweloperska PrestaShop.
| Scenariusz | Jak wykonać | Kryterium zaliczenia |
|---|---|---|
| Płatność udana | Sandbox, karta testowa | Status zaakceptowany, e-mail do klienta, spadek stanu magazynowego |
| Anulowanie | Przycisk „Anuluj i wróć do sklepu” | Koszyk zachowany, brak zamówienia oczekującego |
| Zwrot pełny | Zwrot z panelu PayPal | Status zwrotu i dokument korygujący |
| Zwrot częściowy | Zwrot kwoty niższej niż zamówienie | Status i kwota zgodne z rzeczywistym zwrotem |
| Reklamacja | Testowe obciążenie zwrotne w sandbox | Sklep pokazuje informację o sporze |
| Płatność z 3DS | Karta testowa wymuszająca uwierzytelnienie | Wyzwanie przechodzi, zamówienie kończy się poprawnie |
PayPal nie jest uniwersalnym lekiem na konwersję. Realnie podnosi ją tam, gdzie klient ma ograniczone zaufanie do sklepu albo nie chce podawać danych karty: w sklepach z ruchem zagranicznym, z koszykiem liczonym w setkach złotych i przy widocznych odrzuceniach płatności kartą. Wtedy działa jak warstwa zaufania — sprzedawca nie dostaje numeru karty, a klient kończy zakup w kilka sekund, bo dane już ma zapisane w koncie PayPal.
Kiedy odpuścić. Gdy większość zamówień pochodzi z Polski i klient płaci BLIK-iem lub szybkim przelewem, a w analityce nie widzisz porzuconych koszyków z komentarzem o braku PayPal. Wtedy każda dodatkowa metoda to kolejne pole do utrzymania: obsługa sporów, uzgadnianie salda, prowizja, kolejny zestaw kluczy do rotacji i jeszcze jeden scenariusz w testach przed każdym wdrożeniem. Prowizja zależy od rynku i warunków na twoim koncie — sprawdź ją w cenniku w panelu, zanim włączysz metodę „na próbę” i zostawisz na rok bez przeglądu.
Strategia: metoda uzupełniająca. Płatności lokalne zostają na pierwszym miejscu, PayPal wchodzi jako druga lub trzecia opcja dla klientów, którzy nie chcą podawać karty. Taki układ porządkuje też konfigurację — jeśli wszystkie metody korzystają z jednego modelu statusów zamówienia i jednego sposobu powiadamiania, mniej rzeczy się rozjeżdża przy zmianach.
Rekomendacja kolejnego kroku. Jeśli PayPal już działa, ale nie wiesz, czy webhooki dochodzą i czy statusy są spójne — zacznij od audytu obecnej konfiguracji, zanim cokolwiek dołożysz. Szersze spojrzenie na całość połączeń opisujemy w materiale o organizacji pracy przy integracjach z PrestaShop. Jeśli dopiero dodajesz metodę — zaplanuj wdrożenie od zera: wybór wariantu, konto i aplikacja, konfiguracja, checklista testów, dopiero potem live.
Mieszanie nazw integracji: w jednym miejscu „PayPal Standard”, w drugim „Express Checkout”, a w dokumentacji projektu „Commerce Platform”. To trzy różne rzeczy, a zespół traktuje je jak jedną metodę płatności.
Jak wykryć: Wypisz na kartce, jaki moduł jest faktycznie zainstalowany (nazwa katalogu w /modules), jaką metodę pokazuje koszyk i co widnieje w panelu PayPal Developer. Jeśli to trzy różne nazwy — masz problem.
Jak naprawić: Ustal jeden wariant jako docelowy (najczęściej PayPal Commerce Platform) i zapisz go w dokumentacji projektu razem z nazwą modułu i wersją. Stare integracje wyłącz, a nie „chowaj” w kolejności płatności.
Zakup wtyczki z marketplace bez sprawdzenia, czy obsługuje webhooki i czy kod jest dostępny po wygaśnięciu subskrypcji.
Jak wykryć: Test w sandbox: zapłać i sprawdź, czy status zamówienia w PrestaShop zmieni się sam, bez odświeżania strony przez klienta. Drugi test: wygaśnięcie licencji na kopii staging — czy moduł dalej działa.
Jak naprawić: Przed zakupem zapytaj dostawcę na piśmie o trzy rzeczy: dostęp do kodu źródłowego, model licencji po roku i politykę aktualizacji pod nowe wersje PrestaShop. Brak odpowiedzi to odpowiedź.
Klucze API (Client ID, Secret) wklejone na sztywno w pliki motywu albo do repozytorium Git.
Jak wykryć: Przeszukaj katalog /themes i /modules pod kątem frazy „secret” oraz ciągów znaków wyglądających jak klucze. Sprawdź też historię commitów — usunięcie klucza z najnowszego pliku nie usuwa go z historii.
Jak naprawić: Klucze trzymaj w konfiguracji modułu lub w zmiennych środowiskowych poza repozytorium. Jeśli wyciekły — wygeneruj nowe w panelu PayPal Developer i unieważnij stare.
Testy wyłącznie na localhost bez publicznego adresu HTTPS, więc webhooki i statusy zwrotne nigdy nie docierają do sklepu.
Jak wykryć: W logach zdarzeń aplikacji PayPal nie ma wywołań webhooków, a zamówienia zostają w statusie „oczekiwanie na płatność”, mimo że klient zapłacił.
Jak naprawić: Postaw środowisko staging z publicznym adresem HTTPS (subdomena + certyfikat) albo tunel do lokalnej instalacji. Adres webhooka w aplikacji PayPal musi być osiągalny z internetu — to wymóg protokołu, nie widzimisię modułu. Podstawy: MDN Web Docs – HTTP.
Pominięcie SCA i 3D Secure przy płatnościach kartą w strefie EOG, bo „przecież PayPal sam to obsłuży”.
Jak wykryć: Test płatności kartą testową wymagającą uwierzytelnienia: jeśli transakcja kończy się błędem uwierzytelniania albo klient widzi biały ekran po powrocie z 3DS, integracja nie jest gotowa.
Jak naprawić: Włącz obsługę 3D Secure w module i sprawdź, czy sklep przekazuje poprawne dane transakcji. Przy płatnościach cyklicznych ustal z klientem model zgody na obciążenia poza sesją (MIT/CIT).
Zwroty robione wyłącznie z panelu PayPal, bez odbicia w PrestaShop i w dokumentach księgowych.
Jak wykryć: Porównaj listę zwrotów w panelu PayPal z listą zwrotów w PrestaShop za ten sam miesiąc. Rozjazd choćby o jedną pozycję to sygnał, że procedura nie działa.
Jak naprawić: Wprowadź kolejność: zwrot w PrestaShop (stan magazynowy + dokument), potem zwrot w PayPal, na końcu weryfikacja, czy kwoty i waluty się zgadzają. Przy częstych zwrotach część kroków da się zautomatyzować przez API.
Wdrożenie PayPal w PrestaShop wygrywa albo przegrywa na etapie przygotowania, a nie klikania w panelu. Wybierz jeden wariant integracji i nazwij go wprost, przygotuj konto Business, aplikację REST i publiczny adres HTTPS do webhooków, a dopiero potem konfiguruj moduł. Testuj w sandbox pełną ścieżkę zakupu oraz zwrot, bo to tam wychodzą różnice między wtyczkami. Reszta, czyli SCA, dysputy i koszty, to już konsekwencja porządku z pierwszych trzech kroków.
Do przyjmowania płatności i do integracji przez REST API potrzebne jest konto Business — konto prywatne nie wystarczy. W praktyce dochodzi jeszcze weryfikacja danych firmy, która bywa wymagana przed pierwszą wypłatą albo przy wyższych obrotach. Warto to załatwić przed konfiguracją modułu, bo brak weryfikacji zatrzymuje wypłaty, a nie samo przyjmowanie płatności.
Nie musisz, ale dla większości sklepów to najbezpieczniejszy start: dostajesz wsparcie producenta i aktualizacje pod nowe wersje PrestaShop. Wtyczka z marketplace bywa tańsza w pierwszym roku, ale kosztuje roczną subskrypcją i bywa, że po jej wygaśnięciu nie masz dostępu do kodu. Własny moduł ma sens wtedy, gdy koszyk ma niestandardową logikę, sklep obsługuje wiele walut albo płatność musi być spięta z ERP.
Zajrzyj do logów zdarzeń aplikacji w panelu PayPal Developer i porównaj je ze statusami zamówień w PrestaShop. Jeśli w logach widać zdarzenia, a zamówienie dalej wisi w „oczekiwanie na płatność”, problem jest po stronie modułu, a nie konfiguracji aplikacji. Testuj na środowisku z publicznym adresem HTTPS, bo lokalna instalacja bez niego nie odbierze żadnego wywołania.
Prosty sklep z oficjalnym modułem i standardowym koszykiem to zwykle kwestia godzin pracy plus testy. Własny moduł z integracją ERP, wielowalutowością i niestandardowymi regułami koszyka to raczej tygodnie, głównie przez testy zwrotów i scenariuszy błędów. Termin wyznacza nie sama instalacja, a liczba ścieżek, które trzeba przetestować przed live.
PayPal Commerce Platform obsługuje uwierzytelnianie 3D Secure po swojej stronie, ale tylko wtedy, gdy sklep przekazuje poprawne dane transakcji i ma włączoną obsługę w module. Płatności w strefie EOG podlegają wymogowi silnego uwierzytelniania klienta. Po poprawnym wdrożeniu zwykle spada liczba porzuceń koszyka przy płatności kartą, ale rośnie znaczenie zgodności danych firmy na koncie.
Zwykle nie. Zwrot w panelu PayPal to operacja finansowa, a nie magazynowa — PrestaShop nie dowie się o nim sam, jeśli moduł nie ma takiej funkcji. Dlatego zwrot wprowadzaj najpierw w sklepie, a potem w PayPal, i pilnuj zgodności kwot oraz walut. Na końcu potrzebna jest jeszcze faktura korygująca po stronie księgowości.
Technicznie tak, ale nie warto. Dwie metody płatności obsługujące to samo konto potrafią się nawzajem nadpisywać — klient widzi błąd po powrocie z płatności, a zamówienia trafiają w dziwne statusy. Wybierz jeden wariant jako docelowy i wyłącz pozostałe, zamiast zostawiać je „na wszelki wypadek”. Porządek w metodach płatności warto spisać razem z resztą projektu, patrz: organizacja wdrożenia modułu PayPal w PrestaShop.
Jeśli wolisz przejść przez to z kimś, kto robił to wcześniej, DropDigital prowadzi wdrożenia płatności w PrestaShop razem z konfiguracją konta, testami w sandbox i procedurą zwrotów. Napisz, jaki masz koszyk i ile metod płatności — odpowiemy, który wariant ma u Ciebie sens.