Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Błąd w skrypcie? Przeliczanie wartości zamówienia., Platforma Baselinker
xaitras
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 27.06.2017

Ostrzeżenie: (0%)
-----


Witam wszystkich

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):

  1. $cena_przesylki = $orders['delivery_price'];
  2. $wplacono = $orders['payment_done'];
  3.  
  4.  
  5. $wartosc_produktow='0';
  6. foreach($orders['products'] as $products) {
  7. $cena_brutto_produktu=$products1['price_brutto'];
  8. $ilosc_szt=$products['quantity'];
  9. $wartosc_produktu=$cena_brutto_produktu * $ilosc_szt;
  10. $wartosc_produktow+=$wartosc_produktu;
  11. }
  12. $wartosc_zamowienia=$wartosc_produktow+$cena_przesylki;
  13.  
  14. if($wplacono !== $wartosc_zamowienia)
  15. {
  16.  
  17. BŁĄD
  18.  
  19. }


Wszystkie wartości pobierane są przez api baselinkera.
Dodam tylko, że cała reszta działa bez zarzutu.

Proszę o pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Pokaz dokladne co zwraca
var_dump($wplacono);
var_dump($wartosc_zamowienia) ;

Tam masz odpowiedz na swoje pytanie
Go to the top of the page
+Quote Post
xaitras
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 27.06.2017

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 8.02.2018, 10:58:06 ) *
Pokaz dokladne co zwraca
var_dump($wplacono);
var_dump($wartosc_zamowienia) ;

Tam masz odpowiedz na swoje pytanie



No niestety wszystko się zgadza, no chyba, że brak zer w cenie przesyłki jest problemem?
  1. var_dump($wplacono); float(26.99)
  2. var_dump($wartosc_zamowienia); float(26.99)
  3. var_dump($cena_przesylki); float(17)



i dalej nie wiem co jest grane..

Kombinuję na wszystkie sposoby, zaokrąglam wszystkie wartości do 2 miejsc po przecinku i dalej to samo..



(IMG:style_emoticons/default/co_jest.gif)

czy ktoś pomoże ?

TEMAT MOŻNA ZAMKNĄĆ - pomogła zamiana wartości na double, potem zaokrąglenie do dwóch miejsc po przecinku i wszystko hula (IMG:style_emoticons/default/smile.gif)
Zobaczymy jak długo (IMG:style_emoticons/default/wink.gif)

Ten post edytował xaitras 8.02.2018, 18:28:36
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.10.2025 - 22:25