代码之家  ›  专栏  ›  技术社区  ›  Joseph

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

  •  4
  • Joseph  · 技术社区  · 15 年前

    好啊。这有点让人沮丧。我正在尝试为Magento创建自定义付款模块。目的是使用authorize.net的CIM,这样我们就不必太担心PCI合规性。我面临的问题是,用户需要能够访问他们以前的信用卡,并使用它们进行购买。我把以前的卡片存储在数据库中。它们也将在签出过程中显示在表单中。

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

    我不知道我是否需要任何代码来发布,所以如果您特别需要什么,请告诉我。

    谢谢。

    2 回复  |  直到 12 年前
        1
  •  0
  •   Joe Mastey    15 年前

    查看一页签出,从 payment[] 签出页上的表单元素如下:

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

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

    $payment->importData($data);
    

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

    我希望这是有道理的。如果没有,请将表单的HTML和 授权() 模块中的方法。

    谢谢, 乔

        2
  •  1
  •   garth.subscribepro    12 年前

    在一些好地方,您的付款方式可以使用此日志数据。

    访问Post数据字段的最佳位置是重写Payment方法类中的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根据付款代码选择您的特定付款方法之前,将调用这些方法。

    推荐文章