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 каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... 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 каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
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