Gracias a @medmek y @ prince-patel responden. Como pregunta de @ jafar-pinjar sobre el estado del pedido personalizado, las llamadas setState y setStatus pueden tomar el Código de estado. Por ejemplo, se crea el código de estado personalizado "pagado". Para actualizar el estado / estado de un pedido:
...
use \Magento\Sales\Api\OrderRepositoryInterface;
class nameOfTheClass {
...
protected $_orderRepository;
...
public function __construct(..., OrderRepositoryInterface $orderRepository, ...){
$this->_orderRepository = $orderRepository;
...
}
...
public function setOrderStatus($orderID, $statusCode){
try{
// obtain the order with the order ID
$order = $this->_orderRepository->get($orderID);
$order->setState($statusCode)->setStatus($statusCode);
$this->_orderRepository->save($order);
return true;
} catch (\Exception $e){
// add some logging here
return false;
}
}
...
}
Para actualizar el estado del pedido:
$orderID = 1234; // this is the order ID
$code = 'paid';
$this->setOrderStatus($orderID, $code);
Espero que ayude a alguien por ahí.