Magento 1.9:使用事件sales_order_place_after检出页面不会重定向到成功页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Magento 1.9:使用事件sales_order_place_after检出页面不会重定向到成功页面相关的知识,希望对你有一定的参考价值。

我是magento的初学者,并尝试开发一个模块,用于在发出任何订单时发送消息,使用此模块,我能够生成(发送/回收)消息,但是检出页面不会重定向到成功页面,我也使用了以下事件 sales_order_place_before,checkout_type_onepage_save_order&checkout_type_onepage_save_order_after 因为我的主题使用一页结帐但结果相同

etc/config.php

<?xml version="1.0"?>
<config>
    <modules>
        <Abc_Sms>
            <version>0.0.1</version>
        </Abc_Sms>
    </modules>
    <global>
        <models>
            <abc_sms>
                <class>Abc_Sms_Model</class>
            </abc_sms>
        </models>
         <events>
            <sales_order_place_after><!-- observe the event -->
                <observers>
                    <abc_sms>
                        <class>abc_sms/observer</class>
                        <method>newCheckout</method>
                    </abc_sms>
                </observers>
            </sales_order_place_after>
        </events>
    </global>
</config>

型号/ Observer.php

<?php 
class Abc_Sms_Model_Observer {
    public function newCheckout($observer) {
$order_id = $observer->getEvent()->getOrder()->getId() ;
$order_no = $observer->getEvent()->getOrder()->getIncrementId() ;
$order = Mage::getModel("sales/order")->load($order_id);
$billing_address = $order->getBillingAddress(); 
$billing_telephone = $billing_address->getTelephone();
$msg = "Thank you for your purchase! Your order # is: ".$order_no;
//sms api start
$ch = curl_init();
$user="****@gmail.com:****";
$receipientno = $billing_telephone; 
$senderID="TEST SMS"; 
$msgtxt = $msg; 
curl_setopt($ch,CURLOPT_URL,  "http://api.mVaayoo.com/mvaayooapi/MessageCompose");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=$user&senderID=$senderID&receipientno=$receipientno&msgtxt=$msgtxt");
$buffer = curl_exec($ch);
if(empty ($buffer))
{ echo " buffer is empty "; }
else
{ echo $buffer; } 
curl_close($ch);
//sms api end

    }    
}
?>

在此先感谢您的帮助

答案

试试这个 :

将其添加为newCheckout函数的最后一行

return $this;
另一答案

试试这个:

按F12并使用防火虫打开控制台,您可以看到您的结果。

另一答案

您可以提出如下请求:

$client = new Varien_Http_Client('http://www.example.com/');
$client->setMethod(Varien_Http_Client::POST);
$client->setParameterPost('param1', $param1);
$client->setParameterPost('param2', $param2);
//more parameters
try{
    $response = $client->request();
    if ($response->isSuccessful()) {
        echo $response->getBody();
        return $this; // for redirection after save order event
    }
} catch (Exception $e) {
}

注意:在响应成功后不要忘记实施return $this

参考:https://stackoverflow.com/a/8151632/6041121

以上是关于Magento 1.9:使用事件sales_order_place_after检出页面不会重定向到成功页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在magento 1.9中集成条纹

使用AJAX的Magento 1.9产品列表

Magento 1.9 (PayPal) 代理认证

magento < 1.9 xss 漏洞修复说明

magento 1.9 + 脑树

Fishpig 自动登录在 Magento 1.9 中不起作用