Xelen Опубліковано: 17 травня 2018 Share Опубліковано: 17 травня 2018 Возникла проблема с передачей цены в PayPal Payments Standard На сайте все цены заданы до десятитысячных после запятой. Типа вот 12,1951 Это нужно, чтобы в итоге правильно считался налог. Отображение цен было выставлено до 2 десятых. Обратили внимание, что при выборе оплаты через Пейпел, там цена становится на несколько центов выше. Стало понятно, что он сначала округляет стоимость каждого товара, а потом плюсует , что и дает лишние центы. Я вывела на сайте цены полностью, но результат не изменился. То есть он гдето округляет каждую позицию и передает в пейпел. Как понять, это плагин передает округленные цены для каждого товара или уже пейпал у себя округляет, а потом складывает? Если первое. то как это изменить, чтобы округлялся только результат? Вот пример мне надо, чтобы пейпал показывал 95 евро, а он сложил стоимость каждой единицы товара, вместо 12,1951, взял 12,20 и умножил на 6 потом округлил налог, сложил все это и выдает 95,03 Надіслати Поділитися на інших сайтах More sharing options... Xelen Опубліковано: 17 травня 2018 Автор Share Опубліковано: 17 травня 2018 вообще,хорошо было бы, чтобы сайт не передавал на пейпал список товаров, налог и доставку отдельно, а передавал только общую сумму насколько я поняла, это задается здесь 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; } можно ли убрать вывод всех этих товаров, налога, доставки, а отдавать пейпелу только общую сумму? это бы решило проблему с округлением. Надіслати Поділитися на інших сайтах More sharing options... Agatha65 Опубліковано: 17 травня 2018 Share Опубліковано: 17 травня 2018 А почему у вас евро с 4 знака? Надіслати Поділитися на інших сайтах More sharing options... Agatha65 Опубліковано: 17 травня 2018 Share Опубліковано: 17 травня 2018 Везде в контроллере пайпала - передача и ответ можно округлит цени и тотал так. $data['amount'] = number_format($this->currency->format($order_info['total'], $order_info['currency_code'], $order_info['currency_value'], false), 2, '.', ''); ето примерний код просто смотрите как округляется цена. Надіслати Поділитися на інших сайтах More sharing options... Xelen Опубліковано: 17 травня 2018 Автор Share Опубліковано: 17 травня 2018 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); Теперь выводит просто общую сумму, зато правильно. Может, кому пригодится, хотя лучше оставлять список (но в данном случае просили убрать и его) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація округление цен в PayPal Payments Standard плагине Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав WebrovGroup Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Правова інформація (Україна) Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика просування оголошень OpenCartForum Форум Модулі Шаблони Безкоштовні шаблониПлатні шаблони Блоги Новини ocStore Офіційний сайтДемо ocStore 3.0.3.2Демо ocStore 2.3.0.2.4Завантажити ocStoreДокументаціяІсторія версій ocStore Гість Українська Русский English Уже зареєстровані? Ввійти Реєстрація × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Xelen Опубліковано: 17 травня 2018 Автор Share Опубліковано: 17 травня 2018 вообще,хорошо было бы, чтобы сайт не передавал на пейпал список товаров, налог и доставку отдельно, а передавал только общую сумму насколько я поняла, это задается здесь 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; } можно ли убрать вывод всех этих товаров, налога, доставки, а отдавать пейпелу только общую сумму? это бы решило проблему с округлением. Надіслати Поділитися на інших сайтах More sharing options... Agatha65 Опубліковано: 17 травня 2018 Share Опубліковано: 17 травня 2018 А почему у вас евро с 4 знака? Надіслати Поділитися на інших сайтах More sharing options... Agatha65 Опубліковано: 17 травня 2018 Share Опубліковано: 17 травня 2018 Везде в контроллере пайпала - передача и ответ можно округлит цени и тотал так. $data['amount'] = number_format($this->currency->format($order_info['total'], $order_info['currency_code'], $order_info['currency_value'], false), 2, '.', ''); ето примерний код просто смотрите как округляется цена. Надіслати Поділитися на інших сайтах More sharing options... Xelen Опубліковано: 17 травня 2018 Автор Share Опубліковано: 17 травня 2018 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); Теперь выводит просто общую сумму, зато правильно. Может, кому пригодится, хотя лучше оставлять список (но в данном случае просили убрать и его) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація округление цен в PayPal Payments Standard плагине Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав WebrovGroup Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Правова інформація (Україна) Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика просування оголошень
Agatha65 Опубліковано: 17 травня 2018 Share Опубліковано: 17 травня 2018 А почему у вас евро с 4 знака? Надіслати Поділитися на інших сайтах More sharing options... Agatha65 Опубліковано: 17 травня 2018 Share Опубліковано: 17 травня 2018 Везде в контроллере пайпала - передача и ответ можно округлит цени и тотал так. $data['amount'] = number_format($this->currency->format($order_info['total'], $order_info['currency_code'], $order_info['currency_value'], false), 2, '.', ''); ето примерний код просто смотрите как округляется цена. Надіслати Поділитися на інших сайтах More sharing options... Xelen Опубліковано: 17 травня 2018 Автор Share Опубліковано: 17 травня 2018 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); Теперь выводит просто общую сумму, зато правильно. Может, кому пригодится, хотя лучше оставлять список (но в данном случае просили убрать и его) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 3.x Opencart 3.x: Налаштування та оптимізація округление цен в PayPal Payments Standard плагине
Agatha65 Опубліковано: 17 травня 2018 Share Опубліковано: 17 травня 2018 Везде в контроллере пайпала - передача и ответ можно округлит цени и тотал так. $data['amount'] = number_format($this->currency->format($order_info['total'], $order_info['currency_code'], $order_info['currency_value'], false), 2, '.', ''); ето примерний код просто смотрите как округляется цена. Надіслати Поділитися на інших сайтах More sharing options... Xelen Опубліковано: 17 травня 2018 Автор Share Опубліковано: 17 травня 2018 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); Теперь выводит просто общую сумму, зато правильно. Может, кому пригодится, хотя лучше оставлять список (но в данном случае просили убрать и его) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Xelen Опубліковано: 17 травня 2018 Автор Share Опубліковано: 17 травня 2018 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); Теперь выводит просто общую сумму, зато правильно. Может, кому пригодится, хотя лучше оставлять список (но в данном случае просили убрать и его) Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts