/** * 2016-02-09 * @override * https://mage2.pro/tags/capture * * Важно для витрины вернуть true, чтобы * @see Df_Payment_Model_Action_Confirm::process() и другие аналогичные методы * (например, @see Df_Alfabank_Model_Action_CustomerReturn::process()) * могли вызвать @see Mage_Sales_Model_Order_Invoice::capture(). * * Для административной части возвращайте true только в том случае, * если метод оплаты реально поддерживает операцию capture * (т.е. имеет класс Df_XXX_Model_Request_Capture). * Реализация этого класса позволит проводить двуступенчатую оплату: * резервирование средств непосредственно в процессе оформления заказа * и снятие средств посредством нажатия кнопки «Принять оплату» («Capture») * на административной странице счёта. * * Обратите внимание, что двуступенчатая оплата * имеет смысл не только для дочернего данному класса @see Df_Payment_Model_Method_WithRedirect, * но и для других прямых детей класса @see Df_Payment_Model_Method. * @todo Например, правильным будет сделать оплату двуступенчатой для модуля «Квитанция Сбербанка», * потому что непосредственно по завершению заказа * неправильно переводить счёт в состояние «Оплачен» * (ведь он не оплачен! покупатель получил просто ссылку на квитанцию и далеко неочевидно, * что он оплатит эту квитанцию). * Вместо этого правильно будет оставлять счёт в открытом состоянии * и переводить его в оплаченное состояние только после оплаты. * * @see \Magento\Payment\Model\MethodInterface::canCapture() * https://github.com/magento/magento2/blob/6ce74b2/app/code/Magento/Payment/Model/MethodInterface.php#L71-L77 * @see \Magento\Payment\Model\Method\AbstractMethod::canCapture() * https://github.com/magento/magento2/blob/6ce74b2/app/code/Magento/Payment/Model/Method/AbstractMethod.php#L308-L317 * * USAGES * How is payment method's canCapture() used? * https://mage2.pro/t/645 * * How is @see \Magento\Sales\Model\Order\Payment::canCapture() used? * https://mage2.pro/t/650 * * @used-by \Magento\Payment\Model\Method\AbstractMethod::capture() * https://github.com/magento/magento2/blob/6ce74b2/app/code/Magento/Payment/Model/Method/AbstractMethod.php#L631-L638 * * @used-by \Magento\Vault\Model\Method\Vault::canCapture() * https://github.com/magento/magento2/blob/6ce74b2/app/code/Magento/Vault/Model/Method/Vault.php#L222-L226 * * @used-by \Magento\Sales\Model\Order\Payment::canCapture() * https://github.com/magento/magento2/blob/6ce74b2/app/code/Magento/Sales/Model/Order/Payment.php#L263-L267 * * @used-by \Magento\Sales\Model\Order\Payment::_invoice() * https://github.com/magento/magento2/blob/6ce74b2/app/code/Magento/Sales/Model/Order/Payment.php#L532-L534 * * @used-by \Magento\Sales\Model\Order\Payment\Operations\AbstractOperation::invoice() * https://github.com/magento/magento2/blob/6ce74b2/app/code/Magento/Sales/Model/Order/Payment/Operations/AbstractOperation.php#L69-L71 * * 2016-09-30 * Сегодня заметил, что метод @uses \Magento\Framework\App\State::getAreaCode() * стал возвращать значение @see \Magento\Framework\App\Area::AREA_WEBAPI_REST * при выполнении платежа на витрине. * * 2016-09-30 * Используемые константы присутствуют уже в релизе 2.0.0, потому использовать их безопасно: * https://github.com/magento/magento2/blob/2.0.0/lib/internal/Magento/Framework/App/Area.php * * @return bool */ public function canCapture() { return df_area_code_is(Area::AREA_FRONTEND, Area::AREA_WEBAPI_REST); }
/** * 2016-06-02 * Сделал по аналогии с @see df_is_backend() * * 2016-09-30 * Сегодня заметил, что метод @uses \Magento\Framework\App\State::getAreaCode() * стал возвращать значение @see \Magento\Framework\App\Area::AREA_WEBAPI_REST * при выполнении платежа на витрине. * * 2016-09-30 * Используемые константы присутствуют уже в релизе 2.0.0, потому использовать их безопасно: * https://github.com/magento/magento2/blob/2.0.0/lib/internal/Magento/Framework/App/Area.php * * @return bool */ function df_is_frontend() { return df_area_code_is(Area::AREA_FRONTEND); }