Magento: Как получить значения из полей, отправленных с помощью метода оплаты? - PullRequest
4 голосов
/ 08 июня 2010

Хорошо.Это немного расстраивает.Я пытаюсь создать специальный модуль оплаты для Magento.Цель состоит в том, чтобы использовать CIM Authorize.net, чтобы нам не пришлось сильно беспокоиться о соответствии PCI.У меня проблема в том, что пользователи должны иметь доступ к своим предыдущим кредитным картам и использовать их для покупок.У меня есть предыдущие карты, хранящиеся в базе данных.Они также отображаются в форме в процессе оформления заказа.

Моя проблема возникает, когда я нажимаю продолжить после выбора способа оплаты.Как получить значения, которые я отправил в форму?В частности, значение радиокнопки, к которой прикреплен сохраненный код?

Я не уверен, что, если мне понадобится опубликовать какой-либо код, поэтому дайте мне знать, если вам нужно что-то конкретное.

Спасибо.

Ответы [ 2 ]

1 голос
/ 15 мая 2013

Есть несколько хороших мест, где эти данные почты доступны для вашего метода оплаты.

Лучшее место для получения доступа к полям данных почты - переопределить метод 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 выберет ваш конкретныйспособ оплаты на основе кода платежа.

0 голосов
/ 09 июня 2010

При просмотре одностраничного оформления платежа данные о платеже извлекаются из элементов формы payment[] на странице оформления заказа следующим образом:

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

Эта информация сохраняется в фактическом платеже, используя:

$payment->importData($data);

Это означает, что поля, импортированные таким образом, должны быть доступны методу authorize() вашего модуля, после чего вы можете получить нужную информацию для выполнения аутентификации.

Надеюсь, это имело смысл. Если нет, опубликуйте HTML-код формы, а также свой метод authorize() в модуле.

Спасибо, Джо

...