Пример #1
0
 /**
  * 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);
 }
Пример #2
0
/**
 * 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);
}