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.php
fuente
puede usar el bucle de elemento y excluir el elemento secundario con el siguiente código:
fuente