Ограничить клиенту просмотр страницы до успешной оплаты Magento?

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

Пожалуйста, предложите, как я могу реализовать метод ограничения платежей, который может проверить успешность оплаты продукта, а затем соответствующий клиент может получить доступ к той же странице.

Я ценю вашу помощь.

Спасибо.


person Aman Alam    schedule 31.05.2014    source источник
comment
Был ли полезен мой ответ? Вам удалось решить вашу проблему?   -  person Gerard de Visser    schedule 05.06.2014


Ответы (3)


Чтобы действие по предоставлению клиенту доступа к определенной странице после успешной оплаты, используйте наблюдатель для события checkout_onepage_controller_success_action.

Ваш модуль config.xml должен выглядеть так:

<config>
    <!-- ... -->
    <global>
        <!-- ... -->
        <events>
            <checkout_onepage_controller_success_action>
                <observers>
                    <namespace_module>
                        <class>namespace_module/observer</class>
                        <method>yourMethod</method>
                    </namespace_module>
                </observers>
            </checkout_onepage_controller_success_action>
        </events>
        <!-- ... -->
    </global>
    <!-- ... -->
</config>

Создайте пространство имен/модуль/Модель/Observer.php. Этот файл должен выглядеть так:

<?php
class Namespace_Module_Model_Observer extends Mage_Core_Helper_Abstract
{
    public function yourMethod($observer)
    {
         // Your code logic to give customer access to required page
    }
}
person Gerard de Visser    schedule 31.05.2014

  1. В вашем модуле создайте наблюдателя для события «sales_order_payment_pay».
  2. Также в файле установки вашего модуля создайте новый атрибут клиента. Вы можете использовать этот учебник http://magentotutorial.org/how-to-add-new-customer-attributes-in-magento/ или найдите другой (в Google можно найти множество примеров того, как установить атрибуты с вашим модулем). Убедитесь, что атрибут не отображается во внешнем интерфейсе.
  3. Внутри функции события, когда клиент оплатил заказ, проверьте, был ли этот конкретный продукт в этом заказе. Если это так, отредактируйте клиента и добавьте какое-то значение (true или любое другое) во вновь созданный атрибут. Если вам нужно отслеживать несколько продуктов, вы можете сохранить массив внутри этого атрибута, сериализовав его.
  4. При просмотре этой пользовательской страницы (действие контроллера) проверьте атрибут клиента и проверьте, разрешено ли ему просматривать ее.
person sebi    schedule 31.05.2014

Вы можете создать наблюдателя и найти событие

http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/

Предлагаемое мероприятие:

sales_order_payment_place_end

sales_order_payment_capture

sales_order_payment_pay

person Dharmesh Hariyani    schedule 31.05.2014