PayU-EMEA / plugin_magento

plugin for Magento version 1.6+
GNU General Public License v3.0
20 stars 30 forks source link

Multistore - domeny problemy ze zmianą status platnosci #70

Closed tomekjordan closed 6 years ago

tomekjordan commented 6 years ago

Witam, jest taki problem z multistore na Magento M1 (pewnie na M2 tez bedzie, ale jeszcze nie testowalem Payu na multistore).

Ustawienia sklepu.

Admin panel: domena1.com Website 1 Front Głowny: domena1.com - domena taka sama jak admin panel Website 2 - Front 2: domena2.com

Zamowienia oplacane w Payu ktore są realizowane na website 1 maja statusy platnosci przekazywane prawidlowo. Natomiast wszystkie zamowienia dla domena2.com nie maja aktualizowanych statusow platnosci (nie jest wystawiana faktura, jest co prawda slad w komentarzach do zamowienia "New transaction started. Transaction ID: "61GK3S****000P01". Ale jakby nie jest wykonywana akcja capture na koncu prawidlowo. czyli nie ma finalizacji po prawidlowym zakonczeniu, albo plugin nie wraca usera do okreslonej website uzywac powrotu na glowną domene (nie wiem czy to wogole mozliwe).

Probowalem 2 opcji: dodac w Payu nowe sklep na innych ID - nie pomoglo. Obecnie mam wspolne ID dla calego sklepu Magento (3 domeny, i tylko dla 1 glownej tożsamej z admin panel zamowienia są prawidlowo odznaczane.

Wg mnie jest w kodzie jakis problem - ktory nie pozwala zaktualizowac platnosci w zamowieniu - bo gdzies tam na sztywno jest brana website ID 1 albo uzywana jest domena glowna w jakis observerach/listenerach :) nie znam sie nie jestem devem

Da sie to poprawic?

pozdr Tomek

regdos commented 6 years ago

Czy na każdej domenie masz innego pos-a skonfigurowanego? Proszę podaj domeny jakich używasz. Jeżeli nie chcesz publiczne napisz do naszego BOK (tech@payu.pl) z informacją, że to są dodatkowe dane do tego zgłoszenia.

tomekjordan commented 6 years ago

Czesc. na poczatku mialem kazdy POS per domena. i myslalm ze to robi ten problem. Potem dalem wspolny POS i jest tak samo. tech payu.pl jakby nie kuma bazy, odpowiedzieli ze to wina mojego Magento, mysle ze oni nie kumaja co to jest multistore... gdzies w kodzie pluginu jest cos nie tak..

regdos commented 6 years ago

Potrzebuję adresów url sklepów lub POS-a po to żeby sprawdzić jaka jest odpowiedź na notyfikacje kiedy występuję problem co ułatwi mi znalezienie problemu dlatego prosiłem żebyś przesłał te dane na tech i oni mi przekażą te dane. Jeżeli URL-e nie są tajne to podaj mi je tutaj. Numer POS-a przez tech-a

regdos commented 6 years ago

Cześć. Podsyłałeś dane na tech@?

tomekjordan commented 6 years ago

Czesc. sory za opoznienie. dane przekazalem na tech@payu

przygotowalem srodowisko testowe - 2 domeny/2 websites i polaczylem z sandboxem Payu. te same objawy. na 1 domenie,glownej wszystko przechodzi, druga/inna domena/website - nie ma poprawnej zwrotki nt platnosci - nei wystawia sie faktura, nie ma info w komentarzach zamowienia o poprawnej platnosci

dzięki za zidentyfikowanie problemu, prawdopodbonie tak samo jest na M2 ale nie sprawdzalem. ps. uzywam Cloudflare, ale to nie powinno miec znaczenia.

pzodr TOmek

regdos commented 6 years ago

Dane dotarły. W M1 i w M2 pobieranie konfiguracji jest realizowane z uwzględnieniem storeId ale będziemy to sprawdzać.

regdos commented 6 years ago

Wszystko jasne. Problemem jest konfiguracja cloudflare.

The owner of this website (xxx.xxxxx.xx) has banned your access based on your browser's signature (454f2ea44f58bdfc-ua19).

Notyfikacje, które są wysyłane do sklepów przez PayU realizowane są przez klienta http w aplikacji przedstawiają się jako User-Agent: Jakarta Commons-HttpClient/3.1 Trzeba w konfiguracji cloudflare dla tej drugiej domeny usunąć z listy blokowanych tego User-Agenta

tomekjordan commented 6 years ago

Czesc. sprawdzilem:

  1. Domena glowna - ma w Cloudflare wyłączoną opcje Browser Integrity check,
  2. Domena druga - ta co nie chodzila miala tą opcję włączoną - stąd te blokowanie. Ta opcja jest domyslnie włączoną w Cloudflare - zatem dla 1 domeny-glownej musialem juz wczesniej miec jakies problemy i to wyłaczyć przy innej okazji.

PODEJRZEWAM - ZE INNI WASI KLIENCI W PAYU TEŻ MOGĄ JĄ MIEĆ WŁĄCZONĄ DOMYSLNIE. Pytanie dlaczego Payu wysyla naglowki - ktore nie są do końca prawidlowe i tego w Cloudflare nie przechodzą?

W Cloudflare nie mozna dodac User Agenta do Whitelisty, mozna tylko do blocklisty. I jest z tego powodu problem - jedyna opcja to whitelista na podstawie IP. ale czy Payu ma liste IP ktore mozna dodac do whitelisty?

Sprawdzilem dokladnie i za blokowanie jest odpowiedzialna funkcja Browser Integrity Check:

Browser Integrity Check Evaluate HTTP headers from your visitors browser for threats. If a threat is found a block page will be delivered.

What is Browser Integrity Check? Browser Integrity Check looks for requests with HTTP headers commonly used by spammers, bots, and crawlers such as requests with a missing or non-standard user agent. If a threat is found, Cloudflare will present a block page.

Note: Browser Integrity Check may affect some actions on your domain. For example, it may block access to your API. You can selectively enable or disable this feature for any part of your domain using page rules.

https://support.cloudflare.com/hc/en-us/articles/200170086-What-does-the-Browser-Integrity-Check-do-

Zatem pytanie - czy Wasze naglowki są 100% ok, bo byc moze cos nie pasuje i dlatego Cloudflare to blokuje? NIe chcialbym za bardzo tej opcji wyłączac - bo naraże sie wtedy na rozne inne ataki botow itp

Tomek

regdos commented 6 years ago

Nagłówek jest jak najbardziej prawidłowy (z punkty widzenia protokołu http). Ponieważ komunikacja odbywa się maszyna <-> maszyna i serwer PayU w nagłówku wysyła informajce o użytym kliencie http to cały nagłówek wygląda User-Agent: Jakarta Commons-HttpClient/3.1

Podczas komunikacji z przeglądarki nagłówek ten wygląda np. User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0

Reguła Browser Integrity Check na cloudflare pewnie oczekuje ruchu człowiek <-> maszyna (tak wskazuje nazwa) i blokuje rządania, które mają w nagłówkach coś innego niż przeglądarki. Może rozwiązaniem było by wyłączenie Browser Integrity Check dla konkretnych URL-i?

Zobacz: https://support.cloudflare.com/hc/en-us/articles/200170086-What-does-the-Browser-Integrity-Check-do-

Ostatni akapit mówi o selektywnym wyłączeniu BIC właśnie w kontekście API czyli maszyna <-> maszyna:

You are also able to selectively enable or disable this feature for certain sections of your domain by implementing a page rule. For example, you may want to disable this functionality for the section of your domain that hosts your API.