【问题标题】:void method not getting called in magento custom payment gateway integration在 magento 自定义支付网关集成中未调用 void 方法
【发布时间】:2012-01-27 23:13:13
【问题描述】:

编辑:这是一个修改后的问题,我希望它能给我一些答案 :) (原题在下面)

我正在尝试在 magento 中集成一种自定义付款方式,其中的工作流程类似于 Paypal Standard。这意味着用户将被重定向到支付网关以填写 CC 详细信息。到目前为止,我已经实现了这部分,并且运行良好。

问题是当管理员取消订单时,我需要调用支付网关的更新api。所以在自定义支付方式模型类中,我将$_canVoid 变量设置为true 并实现了一个void 方法,该方法将调用api。但它没有被调用。

在查找调用函数并在magento的核心代码中放置断点后,我发现void没有被调用,因为Mage_Sales_Model_Order_Payment的canVoid方法返回false,这反过来是因为下面的表达式计算为false

$authTransaction = $this->getAuthorizationTransaction();

我认为这是因为我没有在支付方式模型中实现authorize 方法。所以我添加了authorize 方法,但即使这样也没有被调用。在 config.xml 文件中,“authorize”被添加到 payment_action 节点中。

我无法弄清楚何时以及从何处调用授权方法,以及我必须做什么才能使订单取消时无效。

请帮忙..


原问题:

我需要对授权和捕获等支付网关相关概念有一些基本了解。

为了提供背景,我正在尝试在 magento 中集成类似于 paypal 标准的支付网关。我已经完成了集成的结帐部分。即在结账时,一个带有参数的隐藏表单会像在贝宝中一样提交,并且购物者在支付网关站点上输入信用卡详细信息。这部分效果很好..

现在除此之外,每当取消任何订单时,我都需要调用支付网关的 update-api 将交易状态设置为已取消。所以我在我的支付方式模型类中添加了以下代码

protected $_canVoid = true;

public function void(Varien_Object $payment) {
    // some code here.. 
    var_dump($payment); exit; 
}

但是这个方法根本没有被调用。看了下代码,好像 magento 查找授权事务,如果未找到,则不调用上述 void 方法。这是否意味着必须先调用 authorize 方法,然后才可以 void ?但是随着用户在支付网关网站上输入信用卡详细信息, 据我了解,我不需要实现授权和捕获,因为它由网关服务处理。如有错误请指正..

我检查了 Magento 中的 Paypal 标准代码,那里也没有 void 方法。这是否意味着对于像支付网关这样的贝宝标准,这在 magento 中不起作用?

感谢任何帮助。

PS。我已经解决了这个问题-Magento Payment flow,但这并不能完全解释为什么在我的情况下不会调用 void 方法。

【问题讨论】:

  • 您访问过这个网站吗? Creating Your Own Payment Gateway
  • 感谢您的链接。我看到这是用于商店网站本身接受信用卡信息的付款方式。在我的例子中,购物者在支付网关的网站上输入 cc 详细信息。所以我想,magento 中的支付方式类不需要授权/捕获。但是当订单被取消并单击贷项通知单时,我需要调用 update-api 以取消/退款。我的问题是,这是可能的还是我没有清楚地理解授权/捕获/无效(一般)的概念?

标签: magento payment-gateway payment


【解决方案1】:

如果你想取消授权,你必须阻止交易被关闭。

当然你可以用坏的方式来做(重新实现 _addTransaction 就像 authorize.net 实现一样)

但最好的方法是在您的自定义支付网关的授权方法中调用 setIsTransactionClosed 方法并设置为 false。

这是一个未记录的功能,您将很难在 IDE 中找到它,因为此方法通过 PHP 的魔术 __call 方法设置 Mage_Sales_Model_Order_Payment 的内部成员。

$payment->setIsTransactionClosed(false);

【讨论】:

  • $payment->setIsTransactionClosed(false); 应该写在哪里?
猜你喜欢
  • 1970-01-01
  • 2011-09-08
  • 2012-06-05
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 2014-10-08
  • 2018-05-13
  • 2011-05-05
相关资源
最近更新 更多