Magento:如何从使用付款方式提交的字段中检索值?

时间:2010-06-08 19:36:07

标签: php magento authorize.net

确定。这有点令人沮丧。我正在尝试为Magento创建自定义支付模块。目的是使用Authorize.net的CIM,这样我们就不必担心PCI合规性了。我遇到的问题是用户需要能够访问他们以前的信用卡并使用这些信用卡进行购买。我以前的卡存储在数据库中。它们也在结帐过程中以表格形式显示。

选择付款方式后,如果我点击“继续”,则会出现问题。如何获取表单中提交的值?具体来说,保存代码附加到单选按钮的值?

我不确定如果我需要发布任何代码,如果您需要任何特别的内容,请告诉我。

感谢。

2 个答案:

答案 0 :(得分:1)

您的付款方式可以使用这些发布数据。

访问发布数据字段的最佳位置是覆盖付款方式类中的assignData方法。看起来应该是这样的:

/**
 * Assign data to info model instance
 */
public function assignData($data)
{
    // Call parent assignData
    parent::assignData($data);

    // Get Mage_Payment_Model_Info instance from quote 
    $info = $this->getInfoInstance();

    // Add some arbitrary post data to the Mage_Payment_Model_Info instance 
    // so it is saved in the DB in the 'additional_information' field        
    $info->setAdditionalInformation(
        'arbitrary_post_field', 
        $data['arbitrary_post_field'];

    return $this;
}

或者,您可以重写Mage_Sales_Model_Quote_Payment :: importData()和Mage_Checkout_Model_Type_Onepage :: savePayment,这将为您提供更大的灵活性,因为这些方法将在Magento根据付款代码选择您的特定付款方式之前调用。

答案 1 :(得分:0)

查看单页结帐时,系统会从结帐页面上的payment[]表单元素中检索付款数据,如下所示:

$data = $this->getRequest()->getPost('payment', array());
$result = $this->getOnepage()->savePayment($data);

使用以下信息将该信息保存到实际付款中:

$payment->importData($data);

这意味着以这种方式导入的字段应该可用于模块的authorize()方法,此时您可以检索正确的信息以进行身份​​验证。

我希望这是有道理的。如果没有,请发布表单的HTML以及模块中的authorize()方法。

谢谢, 乔