• Resolved maxagarkov

    (@maxagarkov)


    Добрый день! Решили с Вами поделиться одним интересным наблюдением, которое иначе, как ошибкой, назвать нельзя.

    При работе с системой мы неоднократно сталкивались со следующей проблемой: некоторые заказы из интернет-магазина от совершенно разных клиентов привязывались к другому клиенту.

    Система объединяет заказы на основании передаваемого значения 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.