2010-06-08 21 views
4

好的。這有點令人沮喪。我正在嘗試爲Magento創建一個自定義付款模塊。目的是使用Authorize.net的CIM,以便我們不必擔心PCI合規性問題。我遇到的問題是用戶需要能夠訪問他們以前的信用卡並將其用於購買。我有以前的卡片存儲在數據庫中。他們也正在結帳過程中的形式顯示。Magento:如何從使用付款方式提交的字段中檢索值?

我在選擇付款方式後點擊繼續時出現問題。如何獲得我在表單中提交的值?具體來說,保存的代碼所附的單選按鈕的值是?

我不知道如果我需要發佈任何代碼,請告訴我您是否需要特別的東西。

謝謝。

回答

0

望着onepage結賬,付款數據從結帳頁面上payment[]表單元素這樣的檢索:

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

這些信息被使用保存到實際付款:

$payment->importData($data); 

這意味着以這種方式導入的字段應該可用於您的模塊的authorize()方法,此時您可以檢索正確的信息以進行身份​​驗證。

我希望這是有道理的。如果沒有,請將該表單的HTML以及您的authorize()方法發佈到模塊中。

謝謝, 喬

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選擇您的具體付款方式之前根據付款代碼。

相關問題