Jump to content

PayPal: Price paid not the same


dienesdavid
 Share

Recommended Posts

Sziasztok!

 

A "PayPal vs tizedes egységár" topic-omban megoldottam, hogy elinduljon a PayPal fizetés. Azonban most a fizetés befejeztével vannak gondok. 

 

Leírom egy példán (EUR pénznem).

 

termék nettó ára        7,5
áfa                     2,025
bruttó ár               9,525
mit fizet paypalon      9,53
eltérés                 0,005

 

A fenti tranzakciónál a PayPal fizetés után, amikor a Presta visszakapta a vezérlést, az alábbi piros üzenet jelenik meg:

 

An error occurred while processing payment.

 

A pénz megérkezik, de a piros üzenet jól megijeszti a vevőt, aki újra vásárol. Rém kellemetlen visszautalni a pénzt. 

 

Az adminban a rendeléseknél "Payment error" üzenet van, legalul pedig "Price paid on paypal is not the same that on PrestaShop."

 

Úgy gondolom, hogy a fél centes eltérés miatt van a hibaüzenet (teszteltem olyan összeggel ahol nem jelenik meg a harmadik tizedes hely a bruttó árban - akkor nincs hiba) .

 

Érdeklődöm, hogy találkozott-e már valaki ezzel, illetve ismertek-e megoldást erre. 

 

Köszönöm,

Dávid

 

 

 

 

 

 

  • Like 1

Share this post


Link to post
Share on other sites

Úgy tűnik a lenti módosítással sikerült orvosolnom...

 

modules\paypal\express_checkout\process.php:

 

public function getTotalPaid()
{
  $total = 0.00;
 
  foreach ($this->product_list as $product)
  {
    //soktizedes hiba javítása:
    //az egységárat nem szabad kerekíteni a szorzás előtt:
    //$price = Tools::ps_round($product['price_wt'], $this->decimals);
    $price = $product['price_wt'];
    $quantity = Tools::ps_round($product['quantity'], $this->decimals);
    $total = Tools::ps_round($total + ($price * $quantity), $this->decimals);
    }

 

    ...

 

 

A fenti függvény számolja ki újra a teljes fizetendő összeget, amit majd a rendszer összehasonlít a PayPal-lal fizetett összeggel. Mivel nálunk az egységár 3 tizedes, ezért helytelen az egységárat kerekíteni a darabszám szorzás előtt. 

 

Azt legfelül elfelejtettem írni, hogy 0.075-ös egységáram van, amiből 100db-ot rendelünk, így lesz a termék nettó ára 7.5 euro. A kerekítés miatt a rendszer 0.08 euróval számolhatott (így a termékár 8.0).

 

Erre a következtetésre debug eszköz nélkül jutottam. Talán megérne egy topic-ot, hogy ki hogyan debuggol prestás php-t. :)

 

Dávid
  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More