Повторный заказ // повторный чекаут // повторная оплата :: Duplicate entry for key PRIMARY

Привет. Поиск по форуму не помог.
Если создаю заказ и нажимаю оплатить картой банка - попадаю на страницу оплаты банка. Если там нажать Назад (браузер или ссылка) и снова нажать оплатить тот же самый заказ, то КС пытается записать заказ по новой и получаю: “Duplicate entry ‘188_(или другой ИД)_’ for key ‘PRIMARY’”

Если при этом нажимаю назад, меняю или не меняю что-то в заказе то получаю ошибку снова и если нажать назад и снова нажать Оплатить, то прохожу на страницу банка.

Если на странице ошибки нажать Ф5 (+снова отправить форму спрашивает), то прохожу на страницу банка.


ПринтДай в app/functions/fn.cart.php показал, что скрипт спотыкается тут:
1423 строка fn_set_hook(‘place_order’, $order_id, $action, $order_status, $cart, $auth);

fn_print_die([ 1422, $order_id, $action, $order_status, $cart, $auth]);
Array
(
[0] => 1422
[1] => 199
[2] =>
[3] => N
[4] => Array
(
[products] => Array
(…


Есть идеи что делать?

Tygh\Exceptions\AException
Message
Duplicate entry ‘188’ for key ‘PRIMARY’ (1062)

INSERT INTO cscart_orders (shipping_cost, discount, total, subtotal, promotions, subtotal_discount, payment_surcharge, payment_id, notes, storefront_id, parent_order_id, user_id, tax_exempt, issuer_id, b_state, s_state, email, firstname, lastname, b_firstname, b_lastname, b_address, b_city, s_address, s_city, b_country, s_country, phone, b_phone, b_zipcode, s_zipcode, profile_id, shipping_ids, ip_address, timestamp, lang_code, company_id, status, is_parent_order, order_id) VALUES (0, 0, 30, 30, ‘a:0:{}’, 0, 0, 21, ‘vv`1145’, 1, 0, 0, ‘N’, NULL, ‘’, 1, ‘wapir53319@djemail.net’, ‘Vitali’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘vvvvvvvvvvvvvvvvv’, ‘Тирасполь’, ‘MD’, ‘MD’, ‘+7(777)777-77-77’, ‘’, ‘’, 2, 0, 20, ‘7f000001’, 1605264307, ‘ru’, 14, ‘N’, ‘N’, 188)

Error at
C:\xampp72\htdocs\dev444\app\Tygh\Database\Connection.php, line: 1127

Backtrace
File: C:\xampp72\htdocs\dev444\app\Tygh\Database\Connection.php
Line: 491
Function: throwError
File: C:\xampp72\htdocs\dev444\app\functions\fn.database.php
Line: 133
Function: query
File: C:\xampp72\htdocs\dev444\app\functions\fn.cart.php
Line: 1070
Function: db_query
File: C:\xampp72\htdocs\dev444\app\functions\fn.cart.php
Line: 1397
Function: fn_update_order
File: C:\xampp72\htdocs\dev444\app\functions\fn.cart.php
Line: 9466
Function: fn_place_order
File: C:\xampp72\htdocs\dev444\app\controllers\frontend\checkout.php
Line: 373
Function: fn_checkout_place_order
File: C:\xampp72\htdocs\dev444\app\functions\fn.control.php
Line: 679
Function: include
File: C:\xampp72\htdocs\dev444\app\functions\fn.control.php
Line: 430
Function: fn_run_controller
File: C:\xampp72\htdocs\dev444\index.php
Line: 25
Function: fn_dispatch

Точно такая же проблема есть…

Строчка fn_set_hook(‘place_order’… на какую функцию нас отправляет? в “function fn_place_order(…” ? В рекурсию?

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

fn_print_r(Registry::get(‘hooks.place_order’));

2 лайка

Полезная фича!
У меня там 3 модуля, которые не трогал
customers_also_bought, gift_certificates, rus_order_logs