【发布时间】:2012-02-29 09:42:46
【问题描述】:
magento 支付扩展中是否有任何功能可以在返回支付网关的成功状态之前停止创建订单?
扩展程序被设计为支付重定向(使用 getOrderPlaceRedirectUrl),但实际上在正确的控制器操作中,我确实从带有参数的操作发布到网关,如果一切正常,则返回成功,并且如果没有返回失败。
但是订单已经创建,所以我必须取消这个订单,但它不应该首先创建这个订单。
如果我可以把它设计成一个网关,我可以使用一些支付方式来做到这一点?
我考虑了 validate 或 prepareSave 方法,但它们都被调用了两次 - 接受付款方式和下订单。
我还考虑了事件 - 也许我可以使用一些事件来执行此发布操作,并且在失败时抛出异常?
但我真的认为,在支付方式中,必须有一些我可以使用的标准功能。
【问题讨论】:
-
如何在 Mage_Sales_Model_Service_Quote 上扩展 _validate() 方法,并在那里抛出错误,使其永远不会到达“$transaction->save();”位。
-
也许这是个好主意。如果没有其他解决方案会尝试这个。
-
我想我会使用这个解决方案,因为: 1. 我可以在发送请求之前验证 qote,所以我会知道如果服务成功,也会创建订单。 2. 我不需要创建任何控制器并进行任何重定向。谢谢
-
没问题,我们使用了相同的解决方案。我试图格式化一个合适的例子。