From a9478e4ae45465ef119c3f0703148dd79ec60f5f Mon Sep 17 00:00:00 2001 From: cryptochangements34 Date: Sat, 5 Aug 2017 11:29:50 -0500 Subject: [PATCH] Store exchange rate as cookie Stores exchange rate as a cookie (with protection against tampering), but will update if the price of monero changes by more than 1 fiat denomination. Also shows the message returned by verify_payment as a label. --- monero/include/monero_payments.php | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/monero/include/monero_payments.php b/monero/include/monero_payments.php index 7a353f9..4857f67 100644 --- a/monero/include/monero_payments.php +++ b/monero/include/monero_payments.php @@ -153,10 +153,32 @@ class Monero_Gateway extends WC_Payment_Gateway public function changeto($amount, $currency) { + if(!isset($_COOKIE['rate'])) + { $xmr_live_price = $this->retriveprice($currency); + setcookie('rate', $xmr_live_price, time()+2700); $new_amount = $amount / $xmr_live_price; $rounded_amount = round($new_amount, 12); //the moneo wallet can't handle decimals smaller than 0.000000000001 return $rounded_amount; + } + else + { + $rate_cookie = $_COOKIE['rate']; + $xmr_live_price = $this->retriveprice($currency); + if($xmr_live_price - $rate_cookie <= 1) //reset rate if there is a difference of 1 EURO/DOLLAR/ETC between the live rate and the cookie rate + { //this is so that the merchant does not lose money from exchange market forces or cookie tampering + $new_amount = $amount / $rate_cookie; + $rounded_amount = round($new_amount, 12); + return $rounded_amount; + } + else + { + setcookie('rate', $xmr_live_price, time()+2700); + $new_amount = $amount / $xmr_live_price; + $rounded_amount = round($new_amount, 12); + return $rounded_amount; + } + } } @@ -226,6 +248,7 @@ class Monero_Gateway extends WC_Payment_Gateway $this->log->add('Monero_Gateway', '[ERROR] Unable to getting integrated address '); } $message = $this->verify_payment($payment_id, $amount_xmr2, $order); + echo "

".$message."

"; echo ""; echo "
@@ -278,7 +301,7 @@ class Monero_Gateway extends WC_Payment_Gateway
"; }