4

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

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

我不确定我是否需要任何代码才能发布,所以如果您需要任何特别的东西,请告诉我。

谢谢。

4

2 回答 2

1

有几个不错的地方可以使用您的付款方式使用此帖子数据。

访问 post 数据字段的最佳位置是在您的支付方法类中覆盖 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 根据付款代码选择您的特定付款方式之前调用。

于 2013-05-14T20:58:04.103 回答
0

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

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

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

$payment->importData($data);

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

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

谢谢,乔

于 2010-06-09T00:31:23.757 回答