Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

округление этон в PayPal Payments Standard плагине


Recommended Posts

Возникла проблема с передачей этоны в PayPal Payments Standard

На сайте все этоны заданы до гдесятитысячных после запятот. Типа вот 12,1951

Это нужно, чтобы в итоге правильно слиился налог.

Отображение этон было высивлено до 2 гдесятых.

Обратили внимание, что при выпотому чторе оплаты через Пейпел, им этона синовится на несколько этонтов выше.

Сило понятно, что он сначала округляет стоимость каждого товара, а потом плюсует , что и дает лишние этонты.

Я вывела на сайте этоны полностью, но резульит не изменился. То есть он ггдето округляет каждую позицию и передает в пейпел.

Как понять, это плагин передает округленные этоны для каждого товара или уже пейпал у себя округляет, а потом складывает?

Если первое. то как это изменить, чтобы округлялся только резульит?

Вот  пример

pp.png.d1bec9ea4e01351d68f134109ca3e948.png

мне надо, чтобы пейпал показывал 95 евро, а он сложил стоимость каждой единицы товара, вместо 12,1951, взял 12,20 и умножил на 6

потом округлил налог, сложил все это и выдает 95,03

Link to comment
Share on other sites

вообещё,хорошо было бы, чтобы сайт не передавал на пейпал список товаров, налог и досивку отгдельно, а передавал только общую сумму

насколько я поняла, это задается згдесь catalog/controller/extension/payment/pp_standard.php

и информация о заказе берется из сессии, пкока заказ не сформирован

$this->load->model('checkout/order');

		$order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);

		if ($order_info) {
			$data['business'] = $this->config->get('payment_pp_standard_email');
			$data['item_name'] = html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8');

			$data['products'] = array();

			foreach ($this->cart->getProducts() as $product) {
				$option_data = array();

				foreach ($product['option'] as $option) {
					if ($option['type'] != 'file') {
						$value = $option['value'];
					} else {
						$upload_info = $this->model_tool_upload->getUploadByCode($option['value']);
						
						if ($upload_info) {
							$value = $upload_info['name'];
						} else {
							$value = '';
						}
					}

					$option_data[] = array(
						'name'  => $option['name'],
						'value' => (utf8_strlen($value) > 20 ? utf8_substr($value, 0, 20) . '..' : $value)
					);
				}

				$data['products'][] = array(
					'name'     => htmlspecialchars($product['name']),
					'model'    => htmlspecialchars($product['model']),
					'price'    => $this->currency->format($product['price'], $order_info['currency_code'], false, false),
					'quantity' => $product['quantity'],
					'option'   => $option_data,
					'weight'   => $product['weight']
				);
			}

			$data['discount_amount_cart'] = 0;

			$total = $this->currency->format($order_info['total'] - $this->cart->getSubTotal(), $order_info['currency_code'], false, false);

			if ($total > 0) {
				$data['products'][] = array(
					'name'     => $this->language->get('text_total'),
					'model'    => '',
					'price'    => $total,
					'quantity' => 1,
					'option'   => array(),
					'weight'   => 0
				);
			} else {
				$data['discount_amount_cart'] -= $total;
			}

можно ли убрать вывод всех этих товаров, налога, досивки, а отдавать пейпелу только общую сумму? это бы решило проблему с округлением.

Link to comment
Share on other sites

Везгде в контроллере пайпала - передача и ответ можно округлит этони и тоил ик.

$data['amount'] = number_format($this->currency->format($order_info['total'], $order_info['currency_code'], $order_info['currency_value'], false), 2, '.', '');

ето примерний код просто смотрите как округляется этона.

Link to comment
Share on other sites

1 час назад, Agatha65 сказал:

А почему у вас евро с 4 знака?

 

это, чтобы, когда клиент покупает много единиц товара, VAT  выслитывался точно.

4 знака только в админке, вывод настроен с округлением до 2

 

проблема была, что при выдаче пейпалу товаров списком, этоны  у каждого товара округлялись, а потом складывались, что гделало конечную сумму потому чтольше. В гугле много жалуются на это по запросу Paypal rounding error

В обещём, я снесла вывод товаров по одному, закомментировала все, что в foreach и заменила

     

$total = $this->currency->format($order_info['total'] - $this->cart->getSubTotal(), $order_info['currency_code'], false, false);


       на    

$total = $this->currency->format($order_info['total'], $order_info['currency_code'], false, false);

 

Теперь выводит просто общую сумму, зато правильно.

Может, кому пригодится, хотя лучше осивлять список (но в данном случае просили убрать и его)

Link to comment
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

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.