Estou trabalhando na extensão de pagamento M2, nosso comerciante precisa de nós para enviar detalhes dos itens junto com o pedido
Tudo funciona bem, mas $order->getAllItems();
ou $order->getAllVisibleItems();
retornando produtos pai simples e configuráveis, para
se eu tiver 2 produtos no carrinho
- 1 Produto Simples
- 1 Associado ao produto configurável
então, ao invés de obter dois produtos, estou recebendo três; um produto simples e associado e seu produto pai;
Posso tentar extrair produtos corretos, mas tenho certeza de que deve haver outra
/** @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
fonte
A melhor maneira de obter itens de pedidos é usando
$order->getAllVisibleItems()
Explicado por fschmengler acima,
getAllItems():
Esta função retorna a matriz de todos os itens do carrinho com o produto simples de configuração também.Você obtém três produtos porque usa,
$order->getAllItems()
tem que usar o$order->getAllVisibleItems()
método para obter o produto original.Você pode verificar mais referências do arquivo
vendor/magento/module-quote/Model/Quote.php
fonte
você pode usar o loop Item e excluir o item filho pelo seguinte código:
fonte