Dzisiaj mam inny problem. Piszę skrypt do walidacji pól zamówień.
Skrypt m.in. sprawdza czy kwota wpłacona przez klienta jest zgodna z wartością zamówienia. Czasami zdarza się, że klient nie opłaci zamówienia, zapłaci za mało lub za dużo.
Jeśli uruchomię skrypt a w zamówieniu nie jest podany koszt przesyłki to wartość produktów może być w tym momencie dowolna.
Sytuacja się komplikuje jeśli ustawię koszt przesyłki na równą kwotę np. 17.00 zł a wartość produktu jest ustawiona np. na 9.99 zł
Wtedy pomimo, że wpłacona kwota równa się wartości zamówienia, skrypt zwraca błąd.
Błąd występuje tylko w przypadku kiedy w grę wchodzą koszty przesyłki. Na początku myślałem, że kwoty różnią się po przeliczeniu o 1 grosz, że któraś zostaje "zaokrąglona",
ale po dodaniu "echo" do skryptu okazało się, że są identyczne.
Nie wiem gdzie się pomyliłem..
Podaję fragment kodu (w wielkim uproszczeniu):
$cena_przesylki = $orders['delivery_price']; $wplacono = $orders['payment_done']; $wartosc_produktow='0'; foreach($orders['products'] as $products) { $cena_brutto_produktu=$products1['price_brutto']; $ilosc_szt=$products['quantity']; $wartosc_produktu=$cena_brutto_produktu * $ilosc_szt; $wartosc_produktow+=$wartosc_produktu; } $wartosc_zamowienia=$wartosc_produktow+$cena_przesylki; if($wplacono !== $wartosc_zamowienia) { BŁĄD }
Wszystkie wartości pobierane są przez api baselinkera.
Dodam tylko, że cała reszta działa bez zarzutu.
Proszę o pomoc