Byteman
Мой дом здесь!
- Регистрация
- 18 Мар 2008
- Сообщения
- 484
- Реакции
- 242
- Автор темы
- #1
Здравствуйте.
Думаю, решение проблемы не только мне пригодилось бы.
На разных форумах некоторые товарищи утверждают, что эта проблема не только у меня встречается, что проблема чисто в модуле, но автор не торопится её решать.
Я авторам модуля писал, но прошло прилично времени и я пока не получил ответа.
Протестировано на Prestashop версий от 1.6.1.9 до 1.6.1.14.
Модуль PayPal из стандартного комплекта Prestashop, включённый в режим PayPal Plus Для просмотра ссылки Войдиили Зарегистрируйся.
На данный момент это модуль PayPal v3.11.4 - by PrestaShop из комплекта Prestashop 1.6.1.14: Для просмотра ссылки Войдиили Зарегистрируйся
ПРОБЛЕМА:
При некоторых сочетаних товаров или их количества, при выборе PayPal в качестве метода оплаты,
всплывает ошибка типа "По техническим причинам в данный момент невозможна обработка платежа"
Например, я добавляю в корзину какой-то товар, открываю корзину, жму на оплату по PayPal
и всё в порядке - открывается окно PayPal. Иду снова в корзину с тем же товаром, увеличиваю количество с 1 на 2 или добавляю другой товар в корзину,
жму снова PayPal и на этот раз выскакивает ошибка. Ошибка выскакивает не с каждым товаром и не с каждым сочетанием товаров в корзине.
Создал саппорт-тикет на техпортале PayPal и через полтора месяца получил следующий ответ (в переводе
Я это так понимаю, что то ли модуль PayPal, то ли сам престашоп (я не знаю проводятся вычисления передаваемых в PayPal сумм в модуле или в ядре претсшопа) перед тем, как отправить в PayPal цены отдельных товаров, округляет их, затем отсылает в „Create Payment“ API. Далее преста (или модуль?) складывает НЕОКРУГЛЁННЫЕ цены товаров и только после этого после этого округляет получившеюся сумму и её также отправляет в „Create Payment“ API. В результате переданная сумма НЕокруглённых цен, в некоторых случаях отличается от суммы округлённых цен. „Create Payment“ API видит несовпадение и выдаёт ошибку!
И на самом деле. Изначально у меня в настройках магазина была установлена опция "Округлять итоги". После данного ответа сотрудника PayPal, я поменял опцию на "Округление каждого элемента", то есть округление цен отдельных товаров (вместо округления итоговой суммы) и ошибка больше не появляется.
Но я не могу оставить округление по каждому товару, так как в данном случае, при большом количестве разных товаров, общая цена будет отличаться от той, которая была бы при округлении только конечной суммы. Это не понравится клиентам, а главное, запрещено законодательством.
И вот на данном этапе я пока не могу сообразить даже логически как выйти из ситуации.
Казалось бы, логически, чтобы итоговая сумма была точней, то лучше делать не так, как сотрудник PayPal предлагает, а наоборот: передавать в „Create Payment“ API неокруглённые цены отдельных товаров и неокруглённую сумму неокруглённых цен отдельных товаров. Тогда API увидит, что переданные цены отдельных товаров и их сумма правильны. И пусть уже PayPal сам округлит и выдаст итоговую сумму с двумя знаками после запятой. В таком случае я могу в престашопе снова установить опцию "Округлять итоги" и тогда итоговая сумма в счёте (инвойсе) престашопа и в оповещёниях PayPal будет совпадать и будет достоверной, независимо от количества купленных товаров.
Но.....
1) Я не знаю будет ли PayPal принимать неокруглённые цифры и будет ли итоговую сумму сам округлять. Я сделаю запрос в PayPal, но они могут и не ответить или снова через 2 месяца.
2) Я не знаю как сделать, чтобы все цифры в „Create Payment“ API передавались неокруглёнными.
Тут нужен бы опытный программист, который имел дело с интеграцией PayPal в магазины не через готовые модули:
Для просмотра ссылки Войдиили Зарегистрируйся
Думаю, решение проблемы не только мне пригодилось бы.
На разных форумах некоторые товарищи утверждают, что эта проблема не только у меня встречается, что проблема чисто в модуле, но автор не торопится её решать.
Я авторам модуля писал, но прошло прилично времени и я пока не получил ответа.
Протестировано на Prestashop версий от 1.6.1.9 до 1.6.1.14.
Модуль PayPal из стандартного комплекта Prestashop, включённый в режим PayPal Plus Для просмотра ссылки Войди
На данный момент это модуль PayPal v3.11.4 - by PrestaShop из комплекта Prestashop 1.6.1.14: Для просмотра ссылки Войди
ПРОБЛЕМА:
При некоторых сочетаних товаров или их количества, при выборе PayPal в качестве метода оплаты,
всплывает ошибка типа "По техническим причинам в данный момент невозможна обработка платежа"
Например, я добавляю в корзину какой-то товар, открываю корзину, жму на оплату по PayPal
и всё в порядке - открывается окно PayPal. Иду снова в корзину с тем же товаром, увеличиваю количество с 1 на 2 или добавляю другой товар в корзину,
жму снова PayPal и на этот раз выскакивает ошибка. Ошибка выскакивает не с каждым товаром и не с каждым сочетанием товаров в корзине.
Создал саппорт-тикет на техпортале PayPal и через полтора месяца получил следующий ответ (в переводе
Предполагаю, что „Create Payment“ API Call, исходящий из Вашего магазина, в момент, когда клиент хочет произвести оплату, в некотрых случаях передаёт неправильные параметры.
К таким выводам я пришёл при просмотре наших лог-файлов. Из них я вижу, что Ваш модуль вызывает некоторые ошибки в „Renate Payment“ API Call.
Я вижу многократно следующую ошибку:
transactions[0]:
Item amount must add up to specified amount subtotal (or total if amount details not specified)
(Перевожу литературно: сложение цен товаров должно соответствовать указанной (переданной) общей промежуточной сумме).
Эта ошибка вызвана следующим:
"amount": {
"total": "18.41",
"currency": "EUR",
"details": {
"subtotal": "5.21",
"tax": "1.21",
"shipping": "11.99",
"unknown_property_map": {},
"handling_fee": "0.00"
},
Похоже, что Ваш магазин округляет суммы при передаче их в PayPal, однако внутри себя продолжает расчёты и далее с неокруглёнными числами. Например, 1.855 + 3.355 = 5.21
- SubTotal в этом примере равен 5.21 (евро), хотя сумма отдельных товаров равна 1.86 + 3.36 = 5.22 EUR.
Это единственная ошибка, которую я нашёл.
Для решения данной проблемы, обратитесь к разработчикам, которые должны позаботиться о том, чтобы цены только один раз округлялись и после этого сумма составлялась из этих округлённых цен.
Я это так понимаю, что то ли модуль PayPal, то ли сам престашоп (я не знаю проводятся вычисления передаваемых в PayPal сумм в модуле или в ядре претсшопа) перед тем, как отправить в PayPal цены отдельных товаров, округляет их, затем отсылает в „Create Payment“ API. Далее преста (или модуль?) складывает НЕОКРУГЛЁННЫЕ цены товаров и только после этого после этого округляет получившеюся сумму и её также отправляет в „Create Payment“ API. В результате переданная сумма НЕокруглённых цен, в некоторых случаях отличается от суммы округлённых цен. „Create Payment“ API видит несовпадение и выдаёт ошибку!
И на самом деле. Изначально у меня в настройках магазина была установлена опция "Округлять итоги". После данного ответа сотрудника PayPal, я поменял опцию на "Округление каждого элемента", то есть округление цен отдельных товаров (вместо округления итоговой суммы) и ошибка больше не появляется.
Но я не могу оставить округление по каждому товару, так как в данном случае, при большом количестве разных товаров, общая цена будет отличаться от той, которая была бы при округлении только конечной суммы. Это не понравится клиентам, а главное, запрещено законодательством.
И вот на данном этапе я пока не могу сообразить даже логически как выйти из ситуации.
Казалось бы, логически, чтобы итоговая сумма была точней, то лучше делать не так, как сотрудник PayPal предлагает, а наоборот: передавать в „Create Payment“ API неокруглённые цены отдельных товаров и неокруглённую сумму неокруглённых цен отдельных товаров. Тогда API увидит, что переданные цены отдельных товаров и их сумма правильны. И пусть уже PayPal сам округлит и выдаст итоговую сумму с двумя знаками после запятой. В таком случае я могу в престашопе снова установить опцию "Округлять итоги" и тогда итоговая сумма в счёте (инвойсе) престашопа и в оповещёниях PayPal будет совпадать и будет достоверной, независимо от количества купленных товаров.
Но.....
1) Я не знаю будет ли PayPal принимать неокруглённые цифры и будет ли итоговую сумму сам округлять. Я сделаю запрос в PayPal, но они могут и не ответить или снова через 2 месяца.
2) Я не знаю как сделать, чтобы все цифры в „Create Payment“ API передавались неокруглёнными.
Тут нужен бы опытный программист, который имел дело с интеграцией PayPal в магазины не через готовые модули:
Для просмотра ссылки Войди