Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

an error in my paypal


Guest

Recommended Posts

every time i get an order thru paypal i get this message on the order in my admin side

 

PayPal IPN Verified [Completed (Verified; $2,995.00); PayPal transaction value (2995.00) does not match order value (2,995.00)]

 

 

can anyone tell me if this is normal or if i possibly have something set improperly?

Link to comment
Share on other sites

I think it may be a PayPal thing - I've had it once although there was a difference of 0.01 in my case

 

Only thing I can think of in your case is maybe on a currency exchange the value paid would be something like $2,995.00356 which in the eyes aof the PayPal computer would not equal $2,995.00 although the same program rounded it down :rolleyes:

My store is currently running Phoenix 1.0.3.0

I'm currently working on 1.0.7.2 and hope to get it live before 1.0.8.0 arrives (maybe 🙄 )

I used to have a list of add-ons here but I've found that with the ones that supporters of Phoenix get any other add-ons are not really neccessary

Link to comment
Share on other sites

I think it may be a PayPal thing - I've had it once although there was a difference of 0.01 in my case

 

Only thing I can think of in your case is maybe on a currency exchange the value paid would be something like $2,995.00356 which in the eyes aof the PayPal computer would not equal $2,995.00 although the same program rounded it down :rolleyes:

 

 

well this is not just once its on every order i get is there a way i can find out what is exactly causeing it i though it might be the format cause one has a dollar sign and the other one dont

Link to comment
Share on other sites

I think that it doesn't like the comma. In ext/modules/payment/paypal/standard_ipn.php, find

		if ($HTTP_POST_VARS['mc_gross'] != number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency']))) {
	  $comment_status .= '; PayPal transaction value (' . tep_output_string_protected($HTTP_POST_VARS['mc_gross']) . ') does not match order value (' . number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency'])) . ')';
	}

and you could try changing it to

		if ($HTTP_POST_VARS['mc_gross'] != number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency']), $currencies->currencies[$order['currency']['decimal_point'], '')) {
	  $comment_status .= '; PayPal transaction value (' . tep_output_string_protected($HTTP_POST_VARS['mc_gross']) . ') does not match order value (' . number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency'])) . ')';
	}

Always back up before making changes.

Link to comment
Share on other sites

Looking at it again, the code is missing a bracket. Revised version:

		if ($HTTP_POST_VARS['mc_gross'] != number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency']), $currencies->currencies[$order['currency']]['decimal_point'], '')) {
	  $comment_status .= '; PayPal transaction value (' . tep_output_string_protected($HTTP_POST_VARS['mc_gross']) . ') does not match order value (' . number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency'])) . ')';
	}

Always back up before making changes.

Link to comment
Share on other sites

thanks for the update i will add it

 

I am having another problem with my paypal standard too that i just figured out was happening when a customer places an order with paypal standard and they log in to there account to see there orders they dont have any orders is that because of a setting i dont have right ?

Link to comment
Share on other sites

Customers should be able to see those of their orders that are in an order status that is public. You can change the public status for an order status in admin >> Localization >> Orders Status. Alternately, you may want to change the PayPal module settings to give them a different order status.

 

This might also mean that your standard_ipn.php file is not processing the notification from PayPal properly. That could keep the order from ever moving into a public order status. This is likely to be the problem if all the orders are showing as status Preparing [PayPal Standard].

Always back up before making changes.

Link to comment
Share on other sites

  • 1 year later...

Looking at it again, the code is missing a bracket. Revised version:

		if ($HTTP_POST_VARS['mc_gross'] != number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency']), $currencies->currencies[$order['currency']]['decimal_point'], '')) {
	  $comment_status .= '; PayPal transaction value (' . tep_output_string_protected($HTTP_POST_VARS['mc_gross']) . ') does not match order value (' . number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency'])) . ')';
	}

 

Even with this, I still get:

(Unverified; 232,00kr); PayPal transaction value (232.00) does not match order value (232.00)]

 

Could you please help me with the last part of formatting ? - strip the "kr" (currency) and replace "," with "." should do.

 

-Thank you

Link to comment
Share on other sites

(Unverified; 232,00kr); PayPal transaction value (232.00) does not match order value (232.00)]
The first one doesn't matter. It doesn't have to match anything. It's only the last two that need to match. Anyway, try this version:
                $verify_order_total = number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency']));
               if ($HTTP_POST_VARS['mc_gross'] != $verify_order_total) {
                 $comment_status .= '; PayPal transaction value (' . tep_output_string_protected($HTTP_POST_VARS['mc_gross']) . ') does not match order value (' . $verify_order_total . ')';
               }

and if that doesn't work, try

                $verify_order_total = number_format($total['value'] * $order['currency_value'], $currencies->get_decimal_places($order['currency']));
               if (tep_output_string_protected($HTTP_POST_VARS['mc_gross']) != $verify_order_total) {
                 $comment_status .= '; PayPal transaction value (' . tep_output_string_protected($HTTP_POST_VARS['mc_gross']) . ') does not match order value (' . $verify_order_total . ')';
               }

If that doesn't work, then I'm not understanding what the problem is. An encoding issue maybe?

Always back up before making changes.

Link to comment
Share on other sites

Thank you very much, testing the first now.

Will use it for a while, need to see both values like 100.00 and 1,000.00 to be sure whatever it works or not. - then test the other one.

Yes, I guess this it may be related to regional settings /currency formatting.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...