Estoy trabajando en M2 Payment Extension, nuestro comerciante necesita que enviemos los detalles de los artículos junto con el pedido.
Todo funciona bien pero $order->getAllItems();o $order->getAllVisibleItems();devuelve productos principales simples y configurables, por lo que
si tengo 2 productos en el carrito
- 1 producto simple
- 1 Asociado de producto configurable
así que en lugar de obtener dos productos, obtengo tres; un producto simple asociado y su producto principal;
Puedo intentar extraer los productos correctos, pero estoy seguro de que debe ser otro
/** @var \Magento\Sales\Model\Order $order */
$order = $payment->getOrder();
/**
* Get All Items of Products
*/
$productItems = $order->getAllItems() // returning 3 products where I have 2 in cart
$productItemsTest = $order->getAllVisibleItems(); // returning 3 products where I have 2 in cart
fuente

La mejor manera de obtener artículos de pedido es usando
$order->getAllVisibleItems()Explicado por fschmengler arriba,
getAllItems():Esta función devuelve una matriz de todos los artículos del carrito con un producto simple de configuración también.Usted obtiene tres productos porque tiene uso
$order->getAllItems(), tiene que usar el$order->getAllVisibleItems()método para obtener el producto original.Puedes consultar más referencias del archivo
vendor/magento/module-quote/Model/Quote.phpfuente
puede usar el bucle de elemento y excluir el elemento secundario con el siguiente código:
fuente