/** * Set gift messages from additional data. * * @param \Magento\Quote\Model\Cart\TotalsAdditionalDataProcessor $subject * @param TotalsAdditionalDataInterface $additionalData * @param int $cartId * @return void * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function beforeProcess(TotalsAdditionalDataProcessor $subject, TotalsAdditionalDataInterface $additionalData, $cartId) { $giftMessages = $additionalData->getExtensionAttributes()->getGiftMessages(); foreach ($giftMessages as $giftMessage) { /** @var \Magento\GiftMessage\Api\Data\MessageInterface $giftMessage */ $entityType = $giftMessage->getExtensionAttributes()->getEntityType(); $entityId = $giftMessage->getExtensionAttributes()->getEntityId(); if ($entityType === 'quote') { $this->cartRepository->save($cartId, $giftMessage); } elseif ($entityType === 'item') { $this->itemRepositoryInterface->save($cartId, $giftMessage, $entityId); } } }