YES. You can download "All Clean URLs" and copy it to the vqmod/xml/ folder.ryenoceros wrote:I am using opencart 1.5.1.3 and experiencing a problem with the IPN from paypal standard.
The Notification URL I am seeing in paypal is http://www.MYDOMAIN.com/payment/pp_standard/callback
PayPal is processing the payment - so I received that notification, but the orders are being marked as
All incoming orders are being marked as 'abandoned orders' and are not sending the proper email notifications to the client and the admin.
There is a 404 on the paypal IPN page.
I have seen that many others have this similar issue. Has anyone solved it?
I hope so.
Thanks in advance!
Here's the code for this free application, and you can copy it here, paste it into a text file that you'll need to rename blahblah.xml (blahblah or whatever, it doesn't matter). Then copy the new xml file into the vqmod/xml/ folder and you'll be all set.
Code: Select all
<modification>
<id>Clean Urls</id>
<version>1.0.7</version>
<vqmver>2.1</vqmver>
<author>Werner van Run - beoptimized.nl</author>
<file name="catalog/controller/common/seo_url.php">
<operation>
<search position="after"><![CDATA[
$parts = explode('/', $this->request->get['_route_']);
]]>
</search>
<add><![CDATA[
$this_route = $parts;
$this_route_multistore = $parts;
array_shift($this_route_multistore);
]]></add>
</operation>
<operation>
<search position="replace"><![CDATA[
$this->request->get['route'] = 'error/not_found';
]]>
</search>
<add><![CDATA[
if (is_file(DIR_APPLICATION . 'controller/' . implode("/", $this_route) . '.php')) {
$this->request->get['route'] = implode("/", $this_route);
break;
} elseif (is_file(DIR_APPLICATION . 'controller/' . implode("/", $this_route_multistore) . '.php')) {
$this->request->get['route'] = implode("/", $this_route_multistore);
break;
} else {
$this->request->get['route'] = 'error/not_found';
array_pop($this_route);
array_pop($this_route_multistore);
}
]]></add>
</operation>
<operation>
<search position="replace" index="1" offset="8"><![CDATA[if (isset($this->request->get['product_id'])) {]]></search>
<add><![CDATA[
if (preg_match("/information\//", $this->request->get['_route_'])) {
$this->request->get['route'] = $this->request->get['_route_'];
} elseif (isset($this->request->get['information_id'])) {
$this->request->get['route'] = 'information/information';
} elseif (preg_match("/checkout\//", $this->request->get['_route_'])) {
$this->request->get['route'] = $this->request->get['_route_'];
} elseif (preg_match("/payment\//", $this->request->get['_route_'])) {
$this->request->get['route'] = $this->request->get['_route_'];
} elseif (preg_match("/feed\//", $this->request->get['_route_'])) {
$this->request->get['route'] = $this->request->get['_route_'];
} elseif (preg_match("/affiliate\//", $this->request->get['_route_'])) {
$this->request->get['route'] = $this->request->get['_route_'];
} elseif (preg_match("/account\//", $this->request->get['_route_'])) {
$this->request->get['route'] = $this->request->get['_route_'];
} elseif (preg_match("/total\//", $this->request->get['_route_'])) {
$this->request->get['route'] = $this->request->get['_route_'];
} elseif (isset($this->request->get['product_id'])) {
$this->request->get['route'] = 'product/product';
} elseif (isset($this->request->get['path'])) {
$this->request->get['route'] = 'product/category';
} elseif (isset($this->request->get['manufacturer_id'])) {
$this->request->get['route'] = 'product/manufacturer/product';
}
]]></add>
</operation>
<operation>
<search position="replace" index="1"><![CDATA[
return $link;
]]>
</search>
<add><![CDATA[
return preg_replace("/(index\.php\?route=|common\/home)/", "", $link);
]]></add>
</operation>
</file>
</modification>