Magento 自定义付款方式:如何获取通过 Mage_Payment_Model_Method_Abstract::assignData() 设置的数据?

Posted

技术标签:

【中文标题】Magento 自定义付款方式:如何获取通过 Mage_Payment_Model_Method_Abstract::assignData() 设置的数据?【英文标题】:Magento Custom Payment Method: how to get data that was set via Mage_Payment_Model_Method_Abstract::assignData()? 【发布时间】:2011-11-13 03:26:28 【问题描述】:

我目前正在开发一种付款方式,一切都很好。

只有一件事:客户在付款方式中输入了一些信息,通过调试我可以看到它通过 Mage_Payment_Model_Method_Abstract::assignData() 写入 InfoInstance 不幸的是,当我在 capture() 方法中时,我无法读取该数据。我检索 InfoInstance 并尝试读取信息,但未设置。

assignData() 方法:

public function assignData($data) 
    if (!($data instanceof Varien_Object)) 
        $data = new Varien_Object($data);
    

    $info = $this->getInfoInstance();
    $info->setEtixType($data->getEtixType());

    return $this;

capture() 方法:

public function capture(Varien_Object $payment, $amount) 
    // ...

    $info = $this->getInfoInstance();

    Mage::log('etix_type: '.$info->getEtixType());  //I expect something like "etix_type: cc"

    // ...

感谢任何帮助。我确定我错过了什么。

【问题讨论】:

【参考方案1】:

找到了,

直接将验证分配给InfoInstance 是可行的,但它不会在整个结帐过程中持续存在。相反,您必须在附加数据上设置它:

$info = $this->getInfoInstance();
$info->setAdditionalInformation('etix_type', $data->getEtixType());

稍后您可以通过以下方式阅读:

$info = $this->getInfoInstance();
$etix_type = $info->getAdditionalInformation('etix_type');

【讨论】:

以上是关于Magento 自定义付款方式:如何获取通过 Mage_Payment_Model_Method_Abstract::assignData() 设置的数据?的主要内容,如果未能解决你的问题,请参考以下文章

Magento 1.8.0.0:添加自定义付款方式重定向到新页面

magento 自定义付款方式表单未显示

如何在 Magento 的观察者中获取付款方式?

Magento 中付款方式的名称

Magento 自定义支付网关

Braintree:如何使用自定义 UI 选择付款方式并获取付款方式 nonce?