dotpay / WooCommerce2

WooCommerce2
MIT License
11 stars 11 forks source link

Płatność czeka na potwierdzenie przez Dotpay #25

Closed MichalCzerwonka closed 5 years ago

MichalCzerwonka commented 6 years ago

W przypadku gdy jQuery nie jest ładowane w nagłówku(<head>) a w stopce, na dole dokumentu, wtyczka zawiesza się na etapie:

"Płatność czeka na potwierdzenie przez Dotpay"

Chwile mi zeszło odnalezienie dlaczego tak się dzieje, dlatego zostawiam informacje dla innych mających ten problem. :)

jakubLW commented 6 years ago

Jak mogę przenieść ładowanie jQuery płatności do sekcji ?

MichalCzerwonka commented 6 years ago

Dodaj ładowanie jQuery pomiędzy znacznikami <head></head> bo wordpress domyślnie ładuje je w stopce.

jakubLW commented 6 years ago
function insert_jquery(){
wp_enqueue_script('jquery', false, array(), false, false);
}
add_filter('wp_enqueue_scripts','insert_jquery',1);

Dodałem coś takiego do pliku functions.php, jednak nadal jQuery ładowany jest na dole strony, podpowiesz jak to rozwiazać?

mbed92 commented 5 years ago

Problem nie został rozwiązany - dodanie jQuery w head nie jest rozwiązaniem. Czy ktoś dał radę naprawić ten problem? Korzystam z najnowszej wersji wtyczki.

marcinpl87 commented 5 years ago

@mbed92 spróbuj: w panelu dotpay przejdź do menu Ustawienia → Powiadomienia → Konfiguracja urlc i odznacz opcję „Blokuj zewnetrzne urlc”. Pole adres Urlc pozostaw puste. Odznacz też checkboxy związane z https i certyfikatem.

(u mnie pomogło)

lamik commented 5 years ago

@mbed92 spróbuj: w panelu dotpay przejdź do menu Ustawienia → Powiadomienia → Konfiguracja urlc i odznacz opcję „Blokuj zewnetrzne urlc”. Pole adres Urlc pozostaw puste. Odznacz też checkboxy związane z https i certyfikatem.

(u mnie pomogło)

Dzisiaj też trochę powalczyłem z problemem i pomogło to samo co u Ciebie - odznaczenie external urlc

MrBloodyJohn commented 5 years ago

Temat zamknięty, problem uznany za rozwiązany.

Rozwiązanie:

@mbed92 spróbuj: w panelu dotpay przejdź do menu Ustawienia → Powiadomienia → Konfiguracja urlc i odznacz opcję „Blokuj zewnetrzne urlc”. Pole adres Urlc pozostaw puste. Odznacz też checkboxy związane z https i certyfikatem.

(u mnie pomogło)

Brak potwierdzeń najczęściej związany jest z opcją Blokuj zewnętrzne urlc/Block external urlc. Jeśli nie ma certyfikatu SSL na stronie, a opcje HTTPS verify i SSL certificate verify są zaznaczone, to płatność się nie utworzy i wyświetlony zostanie komunikat błędu.

mbed92 commented 5 years ago

No i niestety problem powrócił tylko kompletnie nie rozumiem dlaczego (w tym czasie byłem na wakacjach - nic nie robiłem).

Mam w panelu Dotpay odznaczone HTTPS i SSL, mam odznaczone blokowanie zewnętrznego URLC. W htcaccess dodana została linia (zgodnie z sugestią supportu dotpay):

php_value max_execution_time 1800

Niestety to nie pomogło. Skierowany zostałem do zenboxa, u którego mam hosting - też nic. Wiadomo tylko, że połączenie wychodzące z serwera do Dotpay jest prawidłowe. Błąd występuje podczas sprawdzania statusu operacji. Zwracana jest bowiem wiadomość:

timer_off Błąd płatności

Nie mam już pomysłów gdzie może leżeć błąd.

Logi Dotpay pokazują:

Param "customer" is invalid - validation errors: {'order': {'delivery_address': {'city': [u'This field may not be blank.'], 'street': [u'This field may not be blank.'], 'postcode': [u'This field may not be blank.'], 'country': [u'This field may not be blank.']}}}
--

Próbowałem zaznaczyć opcję z używaniem starego REST API, ale bez skutku.

Przydałby się reopen, bo błąd jest nadal.

MrBloodyJohn commented 5 years ago

Informacja z logów mówi jedynie o parametrach wymaganych do specyficznego kanału płatności, nie ma ona znaczenia dla występującego błędu.

Występuje tu problem z adresem IP, z którego przekazywane jest potwierdzenie - rozpoznawany jest adres IP zendbox'a. Modyfikację modułu można przeprowadzić we własnym zakresie: zmieniając warunki weryfikacji adresu IP (dodanie zgłaszanego IP) lub też pomijając weryfikację kompletnie (niezalecane). Kod odpowiedzialny za weryfikację adresu IP znajduje się pod tym linkiem. Z racji, że jest to zmiana indywidualna (dotycząca specyficznego przypadku), nie zostanie wdrożona w ogólnodostępnym wydaniu.

mbed92 commented 5 years ago

Dziękuję @MrBloodyJohn Problem leżał dokładnie w tej linii, którą zalinkowałeś. Adres IP zwracany przez getClientIp() to adres serwera Zenbox'a i nie pasował on do DOTPAY_IP ani OFFICE_IP. O ile pierwszy adres to adres serwisu Dotpay, to ten drugi nie wiem co to za adres.

// Office Dotpay IP address
const OFFICE_IP = '77.79.195.34';

Tak czy siak dodałem weryfikację IP mojego serwera i teraz jest już ok. Dzięki za pomoc i pozdrawiam.