. */ namespace Storefront\BTCPay\Console\Command; use Storefront\BTCPay\Model\BTCPay\BTCPayService; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; class PayOrder extends Command { /** * @var BTCPayService */ private $btcPayService; /** * @var \Magento\Sales\Api\Data\OrderInterfaceFactory */ private $orderFactory; public function __construct(BTCPayService $btcPayService, \Magento\Sales\Api\Data\OrderInterfaceFactory $orderFactory, string $name = null) { parent::__construct($name); $this->btcPayService = $btcPayService; $this->orderFactory = $orderFactory; } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $orderIncrementId = $input->getArgument('order'); $order = $this->orderFactory->create()->loadByIncrementId($orderIncrementId); if ($order->getId()) { $invoiceData = $this->btcPayService->createInvoice($order); $output->writeln(__('You can pay order %1 by visiting URL %2', $order->getIncrementId(), $invoiceData['checkoutLink'])); } else { $output->writeln(__('Could not find order %1', $orderIncrementId)); exit(1); } } /** * {@inheritdoc} */ protected function configure() { $this->setName('btcpay:order:pay'); $this->setDescription('Generate a payment URL for a given order.'); $this->addArgument('order', InputArgument::REQUIRED, 'The order increment ID you want to pay'); parent::configure(); } }