Goodmorning Stacks,
几天以来,我们一直在现有的网店(opencart 1.5.6)中开展直邮服务。我已经准备好了我的SOAP请求(dropshipping)以便在商店中使用,我唯一不确定的是所需方法的位置。由于您需要在确认订单之前完成付款,因此我们需要调整
catalog/controller/checkout/confirm.php
然而,当我查找此文件的代码时,我找不到任何线索放置方法的位置。
在catalog/model/checkout/order.php
内,我们可以找到addOrder()方法,看起来这是一个临时订单,直到您成功完成付款并按下确认按钮。
有人可以告诉我Opencart处理订单的方式以及如何在正确的位置以正确的方式调整代码吗?
答案 0 :(得分:1)
我自己刚刚完成了这项工作,虽然我知道这个问题是从不久前开始的,我认为发布我的方法会有所帮助。
我使用的方法是在单独的文件中执行一个函数,并从catalog/controller/checkout/success.php
有两种方法可以通过直接更新文件或使用vQmod来完成此操作。我不会在这里详细讨论vQmod,因为它在其他地方被广泛报道(https://code.google.com/p/vqmod/)。 后者是我的偏好,因为它不需要修改原始文件,但我将覆盖两者。
1)要直接修改文件,只需打开它,第7行就会看到
if (isset($this->session->data['order_id'])) {
在此行之后,您可以添加您的挂钩。我使用了像
这样的东西include("catalog/controller/checkout/dropship_order.php");
sendOrderToDropship($this->session->data);
2)或者,使用以下vQmod代码即时执行相同的操作
<file name="catalog/controller/checkout/success.php" error="log">
<operation error="skip">
<search position="after"><![CDATA[if (isset($this->session->data['order_id'])) {]]></search>
<add><![CDATA[
include("catalog/controller/checkout/dropship_order.php");
sendOrderToDropship($this->session->data);
]]></add>
</operation>
</file>
这两种方法都会导致在加载成功页面时调用sendOrderToDropship
函数;在该功能中,您可以执行您需要的任何操作。通过发送data
数组,您还可以访问订单信息(关键的订单ID),以便您可以执行任何所需的处理。
希望有所帮助!