Magento支付方式 - 可以通过支付网关捕获,但退款和取消不起作用

时间:2011-06-20 19:28:57

标签: php magento payment

希望这里有人能给我一个关于我正在为Magento工作的付款方式出错的想法。

正如标题所示,问题是取消并从管理员退款。 在发票时,可以从网关捕获我在此模块下的订单。

这是在模型namespace / modulename / model / standard.php中完成的,即扩展Mage_Payment_Model_Method_Abstract 函数名称:capture

在本课程中,我还有无效,取消和退款的功能。但是他们被称为新人。 我试图在这些方法中插入一些Mage :: Log(),但是在取消订单或进行信用证时(从销售 - 发票视图)没有任何反应。

所以任何人都可以给我一些关于我错过的暗示 - 显然我必须忘记某处,但我真的不知道在哪里。

standard.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;
}
}

1 个答案:

答案 0 :(得分:-1)

我希望这有助于某人!

贷记凭证: 您应该从发票创建贷记凭证,前提是发票是从付款生成的,而不是由admin用户创建的。 在"订单视图(页面)" > "发票(标签)" > "从列表中选择发票" > "贷项通知单(按钮)" > "发票的新贷项通知单(页面)" 你应该看到两个按钮" Refund Offline"和"退款"。 "退还"按钮将触发您的付款方式模型类方法processBeforeRefund(),refund(),processCreditmemo()。