Способ оплаты Magento - можно получить через платежный шлюз, но вернуть деньги и отменить работу

Надеюсь, кто-нибудь здесь может дать мне представление о том, что происходит не так в способе оплаты, над которым я работаю для Magento.

Как следует из названия, проблема заключается в отмене и возврате средств от администратора. Заказы, которые я размещаю с помощью этого модуля, могут быть получены из шлюза при выставлении счета.

Это делается в пространстве имен модели/имя модуля/модель/standard.php, которое расширяет Mage_Payment_Model_Method_Abstract Имя функции: захват

В этом классе у меня также есть функции void, cancel и return. но они новее называются. Я попытался вставить некоторые Mage::Log() в эти методы, но ничего не происходит, когда заказ отменяется или делается кредит-нота (из продажи - счет-фактура).

Итак, может ли кто-нибудь дать мне несколько советов о том, что я пропустил - очевидно, я где-то что-то забыл, но я действительно не могу понять, где.

класс стандарт.php:

class Namespace_Module_Model_Standard extends Mage_Payment_Model_Method_Abstract
{

const PAYMENT_TYPE_AUTH = 'AUTHORIZATION';
const PAYMENT_TYPE_SALE = 'SALE';

protected $_code = 'module';
protected $_isGateway               = true;
protected $_canAuthorize            = false;    
protected $_canCapture              = true;
protected $_canCapturePartial       = true;
protected $_canRefund               = true;
protected $_canRefundInvoicePartial = true;
protected $_canVoid                 = true;
protected $_canUseInternal          = true; 
protected $_canUseCheckout          = true;
protected $_canUseForMultishipping  = true;
protected $_canSaveCc               = false;

//this function is not called when order is cancelled
public function cancel(Varien_Object $payment)
{
    Mage::Log('order canceled');

    return $this;
}
//same with this function - not called when creditmemo is made
public function refund(Varien_Object $payment, $amount)
{

    Mage::Log('refund');
    return $this;
}
//but this is called, when invoice is being made
public function capture(Varien_Object $payment, $amount)
{

    return $this;
}
}

person Strange_76    schedule 20.06.2011    source источник
comment
есть ли ошибки в вашем exception.log или system.log? Вы включили MAGE_IS_DEVELOPER_MODE и ini_set('display_errors', 1)? У вас есть правильная сигнатура метода, принимающая Varien_Object $payment. Пожалуйста, опубликуйте несколько примеров кода, чтобы мы могли увидеть, что вы уже сделали.   -  person Jonathan Day    schedule 21.06.2011
comment
Привет Джонатан, спасибо за ваш комментарий. MAGE_IS_DEVELOPER_MODE не был включен, спасибо за подсказку. Но в любом случае ничего не отображается в исключениях или системном журнале.   -  person Strange_76    schedule 21.06.2011
comment
@jonathan класс, о котором идет речь, или, по крайней мере, его небольшая часть: class Namespace_Module_Model_Standard extends Mage_Payment_Model_Method_Abstract {public function cancel(Varien_Object $payment) { Mage::Log('заказ отменен'); вернуть $это; } Пока я просто хочу увидеть запись в моем system.log, поэтому я знаю, что функция была вызвана, но ничего не происходит..   -  person Strange_76    schedule 21.06.2011
comment
Спасибо за фрагмент, пожалуйста, отредактируйте вопрос и вставьте код с помощью инструментов форматирования, чтобы мы могли его прочитать :) Я полагаю, вы проверили, что ведение журнала включено в System›Config›Developer?   -  person Jonathan Day    schedule 21.06.2011
comment
@Jonathan Да Ведение журнала включено в админке :)   -  person Strange_76    schedule 21.06.2011
comment
У тебя есть решение? такая же проблема у меня...   -  person Ziagl    schedule 20.09.2013


Ответы (1)


Я надеюсь, что это поможет кому-то!

Для кредит-ноты: вы должны создать кредит-ноту из счета-фактуры, учитывая, что счет-фактура генерируется из платежа, а не создается пользователем-администратором. В разделе «Просмотр заказа (страница)» > «Счета-фактуры (вкладка)» > «Выбрать счет-фактуру из списка» > «Кредит-нота (кнопка)» > «Новая кредит-нота для счета-фактуры (страница)» вы должны увидеть две кнопки «Возврат Offline» и «Возврат». Кнопка «Возврат» активирует методы класса модели вашего платежного метода processBeforeRefund(), return(), processCreditmemo().

person Jobert    schedule 15.09.2014