2011-02-24 46 views
3

我已经看到这个问题与货币类型有关,但我问的是如何在同一商店为不同的信用卡类型配置第二个Authorize.net帐户。因此,我们希望一些信用卡使用第一个主要的Authorize.net网关,但其他使用第二个Authorize.net帐户,以便支付可以路由到两个不同的银行帐户。这是为了和解的目的,是一个约束;不能修改。Magento Multiple Authorize.net网关

我在想,我需要做的就是在订单被提交后(但在它通过API发送给Authorize.net之前)弄清楚它的卡类型,知道要传递给哪些凭证该API,但我不确定在哪里添加此代码,或添加它的最佳方式。

任何见解或建议将不胜感激。

回答

3

默认情况下,无法完成此操作,因此您需要使用一些自定义代码。具体来说,覆盖Authnet支付类Mage_Paygate_Model_Authorizenet

class MyNamespace_MyModule_Model_Authorizenet extends Mage_Paygate_Model_Authorizenet { 

    /** 
    * Prepare request to gateway 
    * 
    * @link http://www.authorize.net/support/AIM_guide.pdf 
    * @param Mage_Sales_Model_Document $order 
    * @return unknown 
    */ 
    protected function _buildRequest(Varien_Object $payment) 
    //see below 
    } 
} 

在该功能,对我行277,下面的代码被执行,设置Authnet帐户:

$request->setXLogin($this->getConfigData('login')) 
     ->setXTranKey($this->getConfigData('trans_key')) 
     ->setXType($payment->getAnetTransType()) 
     ->setXMethod($payment->getAnetTransMethod()); 

相反,你沿着想要的东西这些行:

if(whatever cc type) { 
    // set alternate gateway 
} else { 
    // set default gateway 
} 

要做到这一点,您还需要在后端创建新的选项,以加密形式保存凭据。希望有所帮助!

谢谢, 乔

+0

嗨乔 - 感谢你 - 这是完全有道理。当你说我需要在后端创建新选项时,你会说是否足以复制已存在的内容(当然,使用不同的名称)? – mattbryanswan

+0

是的,这应该是诀窍。确保你在路上加密数据,以确保安全。 –