Пишу платежный модуль и нужно обойти SuccessValidator. Для этого использую метод https://gielberkers.com/style-checkoutonepagesuccess-page-magento-2/ Всё вроде нормально, но вот незадача, если заказов нет, то код
$order = $this->orderCollectionFactory->create() ->setPageSize(1) ->setOrder('entity_id', 'DESC') //->addFieldToFilter('status', ['eq' => 'complete']) ->getFirstItem();
точнее проверка $order->getId() дает пустое значение, т.к. естественно предыдущих заказов еще нет. Тогда как мне найти номер заказа?
Публичный номера заказов это Increment, так же как и инвойса. Id это идентификатор в базе. После сохранения заказа получить его параметры можно так
$last_order_increment_id = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId(); $last_order = Mage::getModel("sales/order")->getCollection()->getLastItem();
Да и пока заказа нет, у вас есть только Id для Quote.
Да, забыла написать, что Magento 2. Так что это здесь не прокатит.
Вот здесь есть ответ http://magento.stackexchange.com/questions/102561/magento-2-fetch-checkout-session-on-new-route-page... но я не пойму что значит making cacheable to false in layout xml file
Мой шаблон
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="1column" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> <head> <title>Success Page</title> </head> <body> <referenceContainer name="content"> <block class="WalletOne\Payment\Block\Form\CheckoutResult" name="checkout.success" template="form/result_chekout.phtml" cacheable="false"/> <block class="Magento\Checkout\Block\Registration" name="checkout.registration" template="registration.phtml" cacheable="false"/> </referenceContainer> <referenceContainer name="order.success.additional.info"> <block class="WalletOne\Payment\Block\Form\CheckoutResult" name="onepage.success.result_chekout"/> </referenceContainer> </body> </page>
Куда здесь можно вставить cacheable?