我已经在我的自定义模块中创建了一个页面,我想让该页面成功支付产品的费用后。
请建议我如何实现付款限制方法,可以检查产品的付款是否成功完成,然后相应的客户可以访问同一页面。
我很感激你的帮助。谢谢。
对于让客户在付款成功后访问特定页面的操作,使用事件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
}
}
- 在模块中为事件'sales_order_payment_pay'创建一个观察者
- 同样在模块安装文件中创建一个新的customer属性。您可以使用本教程http://magentotutorial.org/how-to-add-new-customer-attributes-in-magento/或搜索另一个教程(您可以在google上找到许多关于如何使用模块安装属性的示例)。确保该属性在前端不可见
- 当客户为订单付款时,在事件函数中检查该特定产品是否在该订单中。如果是,编辑客户并在新创建的属性中添加一些值(true或任何您想要的值)。如果你需要监控多个产品,你可以在该属性中保存一个数组,通过序列化它。
- 查看自定义页面(控制器动作)时,检查客户属性并检查是否允许查看
您可以创建观察者并查找事件
http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/建议事件:
sales_order_payment_place_end
sales_order_payment_capture
sales_order_payment_pay