Где возникла проблема:
При оплате электронного товара через Paypal пользователь получает такую ошибку
Argument 1 passed to fn_get_edp_notification_rules() must be of the type array, bool given, called in public_html/app/functions/fn.cart.php on line 2636
Суть проблемы:
Функция fn_get_edp_notification_rules ожидает массив а не bool значение
Решение:
File:app/addons/paypal/payments/paypal.php
Line:170
Function:fn_change_order_status
Было fn_change_order_status($order_id, 'O', '', false);
Стало fn_change_order_status($order_id, 'O', '', array());
File:app/addons/paypal/payments/paypal.php
Line:178
Function:fn_change_order_status
Было fn_change_order_status($order_id, 'O', '', false);
Стало fn_change_order_status($order_id, 'O', '', array());
И можно еще тут
File app/functions/fn.cart.php
line: 2636
Перед строкой
$notification_rules = fn_get_edp_notification_rules($force_notification, $edp_data);
поставить
if(!is_array($force_notification)){ $force_notification = []; }
3 лайка
Здравствуйте, @sweetcode .
Спасибо за репорт, проблему воспроизвели.
Проблему починили, исправление войдет в CS-Cart и Multi-Vendor v.4.12.2.
Для исправления проблемы своими силами можно использовать следующий патч:
app-functions-fn.cart.php.diff
diff --git a/app/functions/fn.cart.php b/app/functions/fn.cart.php
index b055080a93..5d3761e8e7 100644
--- a/app/functions/fn.cart.php
+++ b/app/functions/fn.cart.php
@@ -2661,7 +2661,7 @@ function fn_change_order_status($order_id, $status_to, $status_from = '', $force
new OrderProvider($order_info)
);
if ($edp_data) {
- $notification_rules = fn_get_edp_notification_rules($force_notification, $edp_data);
+ $notification_rules = fn_get_edp_notification_rules($force_notification ?: [], $edp_data);
This file has been truncated. show original
О том, как его применить, можно почитать в нашей документации: https://www.cs-cart.ru/docs/latest/upgrade/apply_diff_file.html
z3r0
14.Январь.2021 16:28:06
4
А может вы скажите когда 4.12.2 выйдет а то в ветки 4.12.1 не отвечают на этот вопрос.
Планируем в этом месяце выпустить.