shipmentExtensionFactory = $shipmentExtensionFactory; $this->extensionAttributesProcessor = $extensionAttributesProcessor; } /** * @param ShipmentInterface $shipment * @param ShipmentCreationArgumentsInterface $arguments * @return void */ public function execute( ShipmentInterface $shipment, ShipmentCreationArgumentsInterface $arguments ): void { $shipmentExtensionAttributes = []; if (null !== $shipment->getExtensionAttributes()) { $shipmentExtensionAttributes = $this->extensionAttributesProcessor->buildOutputDataArray( $shipment->getExtensionAttributes(), ShipmentExtensionInterface::class ); } $argumentsExtensionAttributes = []; if (null !== $arguments->getExtensionAttributes()) { $argumentsExtensionAttributes = $this->extensionAttributesProcessor->buildOutputDataArray( $arguments->getExtensionAttributes(), ShipmentCreationArgumentsExtensionInterface::class ); } $mergedExtensionAttributes = $this->shipmentExtensionFactory->create([ 'data' => array_merge($shipmentExtensionAttributes, $argumentsExtensionAttributes) ]); $shipment->setExtensionAttributes($mergedExtensionAttributes); } }