Почитайте тут
engsi.ru/doc/781936.html
Эта задача из разряда труднорешаемых, поэтому в большинстве случаев идеальных решений нет.
Т.к. вам нужно решать задачу для интернет-магазина, то в большинстве случаев достаточно грубой оценки.
Обычно люди покупают относительно немного вещей (до 10), поэтому можно поступить методом тетриса в один слой.
Отсортируете посылки по длине. Получите сумму длин. Возьмите 1/3 от суммарной длины, начните выкладывать посылки по длине. Если одна вышла за 1/3 длины, увеличьте длину до последней посылки.
Все, вы получили дно тетриса. Дальше просто кладите слоями по максимальной ширине.
В итоге у вас получится большая плоская коробка с максимальной высотой товара.
Это простое неоптимально решение, но оно будет работать быстро, что важно для интернет-магазина.
Переплату за доставку можно возращать ввиде кредита покупателю на следующую покупку.