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ć.