Ошибка оплаты заказа с msBonus2 и mspTinkoff
Доброго дня!
Создал кнопку оплаты заказа в ЛК у пользователя, при нажатии перекидывает на Tinkoff оплату.
Получение ссылки простой код, спасибо большое Володе. (использую через аякс)
Возникает проблема при использовании бонусов. Привожу пример на реальном заказе.
1. Корзина без бонусов. сумма 620
joxi.ru/Grq5XZktk8BOQr
joxi.ru/1A5VxdktGZ8yVr
2. С бонусами. 33 бонуса сумма 587
joxi.ru/1A5VxdktGZ87Vr
joxi.ru/ZrJvYJoiMNxoRr
Стоит оплата онлайн, т.е. должно перекинуть на оплату тинькова. Но выдает ошибку.
в логах вот: (* — закоментил ненужное)
В админке все ок
joxi.ru/12MvYEoi07yy7A
joxi.ru/Drljo63t0Jq7q2
В бд вроде как тоже
joxi.ru/vAWjKbotqy5Y92
joxi.ru/gmvKvnNcvQgyk2
Искал в кодах msBonus2 round думал округляет, но потом подумал вроде как mspTinkoff считает не правильно, должно же быть 587 и никаких там float, но хз может дело в msBonus2
И тут встает вопрос какой компонент косячит? как исправить? аль вообще miniShop2?
клиенты ругаются… оплаты нет на сайте…
Создал кнопку оплаты заказа в ЛК у пользователя, при нажатии перекидывает на Tinkoff оплату.
Получение ссылки простой код, спасибо большое Володе. (использую через аякс)
if (!$order = $modx->getObject('msOrder', ['id' => $order_id ])) {
return $resp = ['success' => 0, 'text' => 'Такого заказа не найдено!'];
}
if ($payment = $order->getOne('Payment')) {
$mShop2 = $modx->getService('miniShop2');
if ($class = $payment->get('class')) {
$mShop2->loadCustomClasses('payment');
if (class_exists($class)) {
$handler = new $class($order);
if (method_exists($handler, 'getPaymentLink')) {
$link = $handler->getPaymentLink($order);
$payment_link = $link;
}
}
}
}
В общем код работает. Создаю простой заказ, цены на сайте без копеек. Прохожу в ЛК нажимаю кнопку оплатить все перекидывает и можно оплачивать.Возникает проблема при использовании бонусов. Привожу пример на реальном заказе.
1. Корзина без бонусов. сумма 620
joxi.ru/Grq5XZktk8BOQr
joxi.ru/1A5VxdktGZ8yVr
2. С бонусами. 33 бонуса сумма 587
joxi.ru/1A5VxdktGZ87Vr
joxi.ru/ZrJvYJoiMNxoRr
Стоит оплата онлайн, т.е. должно перекинуть на оплату тинькова. Но выдает ошибку.
в логах вот: (* — закоментил ненужное)
[2020-02-25 14:02:00] (ERROR @ */components/minishop2/custom/payment/msptinkoff.class.php : 394) [miniShop2:mspTinkoff] Test log.
[2020-02-25 14:02:00] (ERROR @ */core/components/minishop2/custom/payment/msptinkoff.class.php : 395) Array
(
[TerminalKey] => 1570090465096
[OrderId] => 658
[Amount] => 58700
[CustomerKey] => 1
[Currency] => 643
[DATA] => Array
(
[Email] => *
)
[Receipt] => Array
(
[Items] => Array
(
[0] => Array
(
[Name] => Каша гречневая с цукатами
[Price] => 6627
[Quantity] => 5
[Amount] => 33135
[Tax] => none
[PaymentMethod] => full_payment
[PaymentObject] => commodity
)
[1] => Array
(
[Name] => Творожная запеканка с яблоками
[Price] => 14201
[Quantity] => 1
[Amount] => 14201
[Tax] => none
[PaymentMethod] => full_payment
[PaymentObject] => commodity
)
[2] => Array
(
[Name] => Творожная запеканка с черникой
[Price] => 11361
[Quantity] => 1
[Amount] => 11361
[Tax] => none
[PaymentMethod] => full_payment
[PaymentObject] => commodity
)
)
[Email] => *
[Taxation] => envd
)
[Token] => 1c10ef24098028cf22e14924845c2ba95c253ca39c494507577863a2c9ee77b2
)
[2020-02-25 14:02:00] (ERROR @ */core/components/minishop2/custom/payment/msptinkoff.class.php : 396) Array
(
[Success] =>
[ErrorCode] => 308
[Message] => Суммы в чеке и в платеже не совпадают.
)
Сложив из этого лога цены на товары получаю сумму 58697, что без 3х копеек почти равно сумме заказа 587, отсюда и ошибка «Суммы в чеке и в платеже не совпадают». Откуда float я так и не понял. вроде как бонусы int = 33.В админке все ок
joxi.ru/12MvYEoi07yy7A
joxi.ru/Drljo63t0Jq7q2
В бд вроде как тоже
joxi.ru/vAWjKbotqy5Y92
joxi.ru/gmvKvnNcvQgyk2
Искал в кодах msBonus2 round думал округляет, но потом подумал вроде как mspTinkoff считает не правильно, должно же быть 587 и никаких там float, но хз может дело в msBonus2
И тут встает вопрос какой компонент косячит? как исправить? аль вообще miniShop2?
клиенты ругаются… оплаты нет на сайте…
Комментарии: 2
Это вроде на стороне компонента Тиньков. Там округление такое сделано, чтобы была хоть какая-то возможность, чтобы сумма в чеке и платеже совпадали. То же самое и у Сбербанка…
Как решили?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.