Объединение заказов для клиента
-
Добрый день! Решили с Вами поделиться одним интересным наблюдением, которое иначе, как ошибкой, назвать нельзя.
При работе с системой мы неоднократно сталкивались со следующей проблемой: некоторые заказы из интернет-магазина от совершенно разных клиентов привязывались к другому клиенту.
Система объединяет заказы на основании передаваемого значения ID клиента. Оказалось, что плагин, в процессе “упаковки” заказа в JSON, проверяет наличие клиента в система по двум параметрам: externalId и email в WC_Retailcrm_Customers::searchCustomer. Внешним ID он считает ID залогиненного в WordPress пользователя, а в качестве email использует $order->get_billing_email() из заказа. По логике, если никаких совпадений не найдено, то в системе создается новый клиент с очередным ID, а если клиент уже существует, то заказ привязывается к нему.
Поиск по externalId проходит без ошибок. Поиск по email – только при условии не пустого (!) billing_email. Т.е. если при оформлении заказа email не обязателен, и поле осталось пустым, то метод /api/v5/customers с использованием параметра filter[email] отдаст плагину список всех клиентов в системе и “success: true” Плагин, в свою очередь, будет использовать ID первого в списке клиента.
В WC_Retailcrm_Orders::orderCreate нужно добавить:
if (!empty ($wcOrder->get_billing_email()))
- The topic ‘Объединение заказов для клиента’ is closed to new replies.