Polskie wsparcie PrestaShop
PrestaShop => Błędy => Wątek zaczęty przez: pweb w Październik 24, 2011, 10:53:39 am
-
Witam,
w module platnoscipl jest błąd przy wyświetlaniu konfiguracji. Należy poprawić kod w linii 190 zamieniając
$conf = Configuration::getMultiple(array('PLATNOSCI_POS_ID', 'PLATNOSCI_AUTH_KEY_1', 'PLATNOSCI_AUTH_KEY_2'));
na następujący
$conf = Configuration::getMultiple(array('PLATNOSCI_POS_ID', 'PLATNOSCI_AUTH_KEY_1', 'PLATNOSCI_AUTH_KEY_2', 'PLATNOSCI_POS_AUTH_KEY'));
Nie wpływa to krytycznie na działanie modułu, ale jest to drobne niedociągnięcie że za każdym razem po zapisie konfiguracji znika nam zawartość jednego pola.
-
Witam,
kod, który podałeś rzeczywiście powoduje prawidłowe wyświetlanie zapisanego kodu pos_auth_key, ale po przyjęciu płatności w moim sklepie i tak system wysyła do mnie wiadomość "platnosci.pl ID transkacji: 1702xxxxWarning : the secure key is empty, check your payment account before validation". Zdaje się, że coś jeszcze trzeba by poprawić. Płatności normalnie dochodzą tylko ta wiadomość troszkę irytuje, ale da się z nią żyć.
-
w module platnoscipl jest jeszcze jeden błąd przy weryfikacji płatności skutkujący błędem w treści wiadomości od kupującego:
Warning : the secure key is empty, check your payment account before validation
W pliku validation.php. należy poprawić kod w linii 93 zamieniając:
$platnoscipl->validateOrder($response['trans_order_id'], $trans_state, intval($response['trans_amount'])/100, $platnoscipl->displayName, 'platnosci.pl ID transkacji: '.$response['trans_id']);
na:
$platnoscipl->validateOrder($response['trans_order_id'], $trans_state, intval($response['trans_amount'])/100, $platnoscipl->displayName, 'platnosci.pl ID transkacji: '.$response['trans_id']), array(), NULL, false, $cart->secure_key);
oraz usunąć kod z linii 92:
$cart = null;
-
Znalazłem małe TYPO w podanym powyżej kodzie:
$platnoscipl->validateOrder($response['trans_order_id'], $trans_state, intval($response['trans_amount'])/100, $platnoscipl->displayName, 'platnosci.pl ID transkacji: '.$response['trans_id']), array(), NULL, false, $cart->secure_key);
Powinno być:
$platnoscipl->validateOrder($response['trans_order_id'], $trans_state, intval($response['trans_amount'])/100, $platnoscipl->displayName, 'platnosci.pl ID transkacji: '.$response['trans_id'], array(), NULL, false, $cart->secure_key);
-
Znalazłem małe TYPO w podanym powyżej kodzie:
$platnoscipl->validateOrder($response['trans_order_id'], $trans_state, intval($response['trans_amount'])/100, $platnoscipl->displayName, 'platnosci.pl ID transkacji: '.$response['trans_id']), array(), NULL, false, $cart->secure_key);
Powinno być:
$platnoscipl->validateOrder($response['trans_order_id'], $trans_state, intval($response['trans_amount'])/100, $platnoscipl->displayName, 'platnosci.pl ID transkacji: '.$response['trans_id'], array(), NULL, false, $cart->secure_key);
-
Nie jest to chyba błąd specyficzny dla platnosci.pl, widzę w zgłoszeniach błędów presty, że dotyczy też paypal. Ja natomiast mam ten problem z przelewy24.
Czym ten błąd jest spowodowany, czy mam się nim martwić i jak go naprawić?
Presta 1.4.4.1
-
zmieniła się metoda validateOrder w kalsach PrestaShop i ma teraz nowy obowiązkowy argument na samym końcu.
Plik classes/PaymentModule.php
public function validateOrder($id_cart, $id_order_state, $amountPaid, $paymentMethod = 'Unknown', $message = NULL, $extraVars = array(), $currency_special = NULL, $dont_touch_amount = false, $secure_key = false)
Założenie jest takie, żeby przekazywać do płatności secure_key i żeby to wracało w odpowiedzi z płatności do dodatkowego potwierdzenia, że to jest właściwa transakcja, a nie próba oszustwa. Także poniższe rozwiązanie jedynie rozwiązuje problem pojawiającego się błędu, ale nie stosuje tego zabezpieczenia we właściwy sposób.
W module przelewy24 trzeba edytować plik validation_prestashop_ok.php
i w liniach 104 i 108 poprawić kod:
$o_przelewy24->validateOrder($i_id_order,2,$p24_kwota*0.01,$opis);
na:
$o_przelewy24->validateOrder($i_id_order,2,$p24_kwota*0.01,$opis, array(), NULL, false, $secure_key); //Perfect-Web
oraz w linii 101 dodać kod:
$cart = new Cart($i_id_order); //Perfect-Web
$secure_key = $cart->secure_key;
Rozwiązania dla przelewy24 nie testowałem, bo nie mam tam konta, ale powinno działać.
-
zmieniła się metoda validateOrder w kalsach PrestaShop i ma teraz nowy obowiązkowy argument na samym końcu.
Plik classes/PaymentModule.php
public function validateOrder($id_cart, $id_order_state, $amountPaid, $paymentMethod = 'Unknown', $message = NULL, $extraVars = array(), $currency_special = NULL, $dont_touch_amount = false, $secure_key = false)
Założenie jest takie, żeby przekazywać do płatności secure_key i żeby to wracało w odpowiedzi z płatności do dodatkowego potwierdzenia, że to jest właściwa transakcja, a nie próba oszustwa. Także poniższe rozwiązanie jedynie rozwiązuje problem pojawiającego się błędu, ale nie stosuje tego zabezpieczenia we właściwy sposób.
W module przelewy24 trzeba edytować plik validation_prestashop_ok.php
i w liniach 104 i 108 poprawić kod:
$o_przelewy24->validateOrder($i_id_order,2,$p24_kwota*0.01,$opis);
na:
$o_przelewy24->validateOrder($i_id_order,2,$p24_kwota*0.01,$opis, array(), NULL, false, $secure_key); //Perfect-Web
oraz w linii 101 dodać kod:
$cart = new Cart($i_id_order); //Perfect-Web
$secure_key = $cart->secure_key;
Rozwiązania dla przelewy24 nie testowałem, bo nie mam tam konta, ale powinno działać.
Też mam problem z tymi komunikatami przy Przelewy24. Wcześniej była taka sytuacja, że po akceptacji płatności nie były wysyłane wiadomości z potwierdzeniem zamówienia ani do kupującego ani do sprzedawcy.
Błąd (wiadomość) jaki się pojawiał wtedy przy zamówieniu miał treść:
"Warning : the secure key is empty, check your payment account before validation."
Wprowadziłem powyższą zmianę w pliku validation_prestashop_ok.php, w skutek czego PrestShop zaczął wysyłać potwierdzenia zamówienia do kupującego, ale nadal nie przychodziły komunikaty o nowym zamówieniu do sprzedającego.
Nadal też pojawiał się błąd przy zamówieniu, który był podobny do poprzedniego ale różnił się pierwszym słowem:
"ArrayWarning : the secure key is empty, check your payment account before validation.".
Czy da się coś jeszcze z tym zrobić?
Presta 1.4.4.1PL
powershop24.pl
-
Też mam problem z tymi komunikatami przy Przelewy24. Wcześniej była taka sytuacja, że po akceptacji płatności nie były wysyłane wiadomości z potwierdzeniem zamówienia ani do kupującego ani do sprzedawcy.
Błąd (wiadomość) jaki się pojawiał wtedy przy zamówieniu miał treść:
"Warning : the secure key is empty, check your payment account before validation."
Wprowadziłem powyższą zmianę w pliku validation_prestashop_ok.php, w skutek czego PrestShop zaczął wysyłać potwierdzenia zamówienia do kupującego, ale nadal nie przychodziły komunikaty o nowym zamówieniu do sprzedającego.
Nadal też pojawiał się błąd przy zamówieniu, który był podobny do poprzedniego ale różnił się pierwszym słowem:
"ArrayWarning : the secure key is empty, check your payment account before validation.".
Czy da się coś jeszcze z tym zrobić?
Presta 1.4.4.1PL
powershop24.pl
Znaleźliście rozwiązanie tego problemu? Dzięki za informację.
-
W parametrach funkcji validateOrder został pominięty jeden parametr - uzupełnienie go usuwa komunikat:
$o_przelewy24->validateOrder($i_id_order,2,$p24_kwota*0.01,$opis, NULL, array(), NULL, false, $secure_key); //Perfect-Web
Podobną zamianę zrobiłem też w pliku validation_prestashop_error.php.
I komunikat zniknął.
Sprawdzam jeszcze wywołanie funkcji:
header('Location: '.__PS_BASE_URI__.'order-confirmation.php?orderid='.$i_id_order);
z plików validation_prestashop_ok.php i validation_prestashop_error.php, ponieważ wydaje mi się, że jest wywoływana z niewłaściwymi parametrami... Jak coś ustalę, dam znać.
-
I jak Wooldi, są jakieś wyniki sprawdzenia wywołania tej funkcji?:)
-
Odgrzewam wątek. Mam ten sam problem, tyle że jest to moduł PayU 1.8. Czy ma ktoś jakiś pomysł?
-
U mnie po wprowadzeniu zmian w pliku validation.php nie przychodzą potwierdzenia zamówień (platnoscipl).